Tìm hiểu về VPC (Virtual Private Cloud) AWS

VPC là gì?

VPC (Virtual Private Cloud) giúp bạn tạo ra một môi trường tách biệt, nơi mà bạn có thể triển khai hệ thống trong một hệ thống mạng ảo riêng mà bạn định nghĩa. Bạn có toàn quyền quyết định môi trường mạng ảo này sẽ như thế nào, bao gồm lựa chọn dải IP của riêng bạn, tạo mạng con (subnet), bảng định tuyến (route table) và cổng kết nối mạng (net gateway), cũng có thể sử dụng cả IPv4IPv6 cho bảo mật và dễ dàng truy cập ứng dụng, tài nguyên của bạn.

Bạn có thể dễ dàng điều chỉnh cấu hình VPC, tạo mạng con công khai cho các máy chủ thông qua Internet, đặt các hệ thống backend như cơ sở dữ liệu (database) hoặc máy chủ ứng dụng (application server) trong một mạng riêng tư không có kết nối Internet. Bạn có thể sử dụng nhiều lớp bảo mật, bao gồm nhóm bảo mật (security groups) và danh sách kiểm soát truy cập mạng (network access control lists), để có thể kiểm soát quyền truy cập vào các máy chủ (EC2 instances) trong từng mạng con (subnet).

Các thành phần của VPC

Subnet

Subnet chia nhỏ một mạng to thành các mạng con. Kiểm soát các mạng con thì dễ dàng hơn so với một mạng to. Thông thường sẽ chia ra public subnet cho các dịch vụ truy cập Internet, còn private subnet dành cho các phần nội bộ, không cần truy cập Internet như database, ...


Internet Gateway

Internet Gateway là một thành phần quan trọng cho phép các Instance có thể truy cập đến Internet. Nó cho phép người dùng kết nối mạng con đến Internet bằng việc cung cấp một route tới Internet. Với sự trợ giúp của Internet Gateway, một Instance có thể truy cập Internet và các resources bên ngoài cũng có thể kết nối với instance này.


Security Group

Lớp bảo mật cho Instance, có thể coi như là firewall, cần phải định nghĩa các quy tắc trước khi traffic ra vào Instance.


Route Table

Route table có thể hiểu là một bảng định tuyến, bao gồm các quy tắc định tuyến, hiểu đơn giản đây là một cái bảng chỉ dẫn đường đi, chỉ cần nhìn vào đây là biết được sẽ phải đi tới đâu, ví dụ từ A cần đi tới B, C đi tới D. Mỗi một subnet chỉ liên kết với 1 route table, nhưng 1 route table có thể liên kết nhiều subnet.


Network Access Control Lists

A network access control list (ACL) là một lớp bảo mật cho VPC, thực hiện như một firewall điều khiển lưu lượng vào và ra của một hay nhiều subnet.


NAT Gateway

NAT gateway cho phép 1 Instance trong private subnet có thể kết nối với Internet hoặc các dịch vụ khác của AWS, và hoạt động theo một chiều, nghĩa là từ Internet không thể kết nối đến Instance này.


Tạo VPC

Dưới đây là cấu trúc của 1 VPC, cùng xây dựng các thành phần của VPC này nhé

Mục tiêu của chúng ta là setup 1 hệ thống VPC, gồm các thành phần private subnet, public subnet, Route table, NAT gateway cho phép App Server có thể kết nối được với Internet.

  • Chọn dịch vụ VPC: Click vào Services, gõ VPC và chọn dịch vụ, điền các thông tin, IPv4 CIDR điền là 10.0.0.0/16

  • Tạo subnets: lần lượt tạo các subnets với các thông tin như sau:

    • publicA: 10.0.0.0/24

    • publicB: 10.0.1.0/24

    • publicC: 10.0.2.0/24

    • privateA: 10.0.4.0/24

    • privateA: 10.0.5.0/24

    • privateA: 10.0.6.0/24

    • dbA: 10.0.8.0/24

    • dbB: 10.0.9.0/24

    • dbC: 10.0.10.0/24

  • Assign public IPv4 address cho subnet publicA, publicB, publicC: Lần lượt click vào từng subnet, click Actions > Modify auto-assign IP settings.

  • Tạo Internet Gateway và gắn vào VPC

  • Tạo Route Table, trỏ đến VPC

Thêm route cho Route table, với đích đến (Destination) là Internet sẽ đi qua Internet gateway đã tạo ở trên (0.0.0.0/0 là toàn bộ IPv4, ::0 là toàn bộ IPv6)

Gắn 3 subnets publicA, publicB, publicC vào Route table, điều này sẽ giúp kết nối các subnet này với Internet

  • Tạo Bastion Host (hiểu đơn giản thì đây là một lớp bảo mật của Instance, chỉ cho phép truy cập vào Instance thông qua Bastion Host, mọi kết nối từ ngoài đều bị từ chối), gắn Bastion Host vào VPC tạo ở trên và publicB

Trong phần chọn network, chọn đến VPC đã tạo từ trước và subnet là publicB

Trong phần Security group, tạo mới, SG này sẽ được dùng để gắn vào app server ở bước sau

  • Tạo NAT gateways trong publicA

Lần lượt tạo NAT gateways cho publicB, publicC

  • Tạo Route table cho privateA, chọn VPC đã tạo từ trước

  • Trỏ privateA sang NAT-gateway-A

Tạo route để privateA kết nối với NAT-gateway-A. Phần Destination điền 0.0.0.0/0 và Target chọn NAT-gateway-A

Route trên có nghĩa là mọi kết nối đến Internet (0.0.0.0/0 là toàn bộ IPv4) trong privateA sẽ được điều hướng qua NAT-gateway-A

  • Thêm subnets vào Route table

Thêm subnet privateAdbA vào Route table tạo ở trên

  • Tạo App server instance

Trong phần network chọn VPC và subnet là privateA

Trong phần Security groups, chọn bastionSG đã tạo ở bước bên trên

Điều này chỉ cho phép các Instance nằm trong cùng 1 SG mới có thể kết nối với nhau. Ở đây, chỉ Bastion Host mới có thể truy cập được App server.

  • Kết nối vào App server

Dùng ssh truy cập vào Bastion Host, rồi từ Bastion Host truy cập sang App server, ping đến 1.1.1.1

Vậy là App server đã có thể truy cập được Internet.



Tổng kết

VPC là một phần quan trọng của AWS, không chỉ để triển khai cho hệ thống thực tế, mà còn có ích trong việc thi chứng chỉ AWS (Cùng tìm hiểu về hệ thống chứng chỉ AWS qua bài viết của mình ở đây nhé)

Cảm ơn các bạn đã đọc bài!


Tài liệu tham khảo:


All Rights Reserved