VPC (Virtual Private Cloud) là gì? Hướng dẫn tạo VPC trên AWS

Điện toán đám mây (Cloud Computing) ngày càng trở nên phổ biến, và Amazon Web Services (AWS) là một trong những nhà cung cấp dịch vụ đám mây hàng đầu. Trong AWS, VPC (Virtual Private Cloud) đóng vai trò nền tảng, cho phép bạn xây dựng một môi trường mạng riêng biệt và an toàn để triển khai ứng dụng và dịch vụ. Vậy VPC là gì và làm thế nào để tạo một VPC trên AWS? Hãy cùng tìm hiểu.

VPC là gì?

VPC (Virtual Private Cloud) là một dịch vụ của AWS cho phép bạn tạo ra một mạng ảo riêng tư và biệt lập trong đám mây AWS. Bạn có toàn quyền kiểm soát môi trường mạng ảo này, từ việc lựa chọn dải địa chỉ IP, tạo các mạng con (subnet), thiết lập bảng định tuyến (route table), đến cấu hình cổng kết nối mạng (network gateway). VPC hỗ trợ cả giao thức IPv4 và IPv6, giúp bạn bảo mật và dễ dàng truy cập vào các ứng dụng và tài nguyên của mình.

Với VPC, bạn có thể dễ dàng điều chỉnh cấu hình mạng theo nhu cầu, tạo các subnet công khai cho các máy chủ cần truy cập Internet, hoặc thiết lập các subnet riêng tư cho các hệ thống backend như cơ sở dữ liệu (database) hoặc máy chủ ứng dụng (application server) mà không cần kết nối trực tiếp với Internet. VPC cung cấp nhiều lớp bảo mật, bao gồm các 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 – ACL), cho phép bạn kiểm soát chặt chẽ quyền truy cập vào các máy chủ (EC2 instances) trong từng subnet.

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

Để hiểu rõ hơn về VPC, chúng ta cần nắm vững các thành phần chính sau:

Subnet (Mạng con)

Subnet là một phần nhỏ hơn của một mạng lớn hơn. Việc chia mạng thành các subnet giúp bạn dễ dàng quản lý và kiểm soát lưu lượng mạng. Thông thường, subnet được chia thành hai loại:

  • Public Subnet: Dành cho các dịch vụ cần truy cập Internet, ví dụ như máy chủ web (web server).
  • Private Subnet: Dành cho các thành phần nội bộ không cần truy cập Internet trực tiếp, ví dụ như cơ sở dữ liệu (database) hoặc máy chủ ứng dụng (application server).

Internet Gateway

Internet Gateway là một thành phần thiết yếu cho phép các EC2 instances trong VPC có thể kết nối với Internet. Nó cung cấp một đường dẫn (route) tới Internet, cho phép các instance truy cập các tài nguyên bên ngoài và ngược lại, cho phép các tài nguyên bên ngoài kết nối tới instance (nếu được cho phép bởi các quy tắc bảo mật).

Security Group (Nhóm bảo mật)

Security Group hoạt động như một tường lửa (firewall) ảo cho các EC2 instances, kiểm soát lưu lượng truy cập vào và ra khỏi instance. Bạn cần phải định nghĩa các quy tắc (rules) trước khi lưu lượng có thể đi qua security group. Security Group hoạt động ở cấp instance.

Route Table (Bảng định tuyến)

Route Table chứa các quy tắc định tuyến, cho biết lưu lượng mạng sẽ được chuyển tiếp đến đâu. Mỗi subnet chỉ có thể được liên kết với một route table, nhưng một route table có thể được liên kết với nhiều subnet. Route table giúp định hướng lưu lượng giữa các subnet trong VPC, giữa VPC và Internet Gateway, hoặc giữa VPC và các VPC khác.

Network Access Control List (NACL)

Network Access Control List (NACL) là một lớp bảo mật khác cho VPC, hoạt động như một firewall để kiểm soát lưu lượng vào và ra của một hoặc nhiều subnet. NACL hoạt động ở cấp subnet.

NAT Gateway

NAT (Network Address Translation) Gateway cho phép các EC2 instances trong private subnet kết nối với Internet hoặc các dịch vụ khác của AWS, nhưng ngăn chặn các kết nối từ Internet đến các instance này. Điều này giúp bảo vệ các tài nguyên bên trong mạng riêng tư của bạn.

Hướng dẫn tạo VPC trên AWS

Dưới đây là hướng dẫn từng bước để tạo một VPC với các thành phần cơ bản: public subnet, private subnet, route table và NAT gateway, cho phép application server kết nối với Internet.

Mục tiêu: Thiết lập một VPC với các thành phần:

  • Public Subnets (cho phép kết nối Internet)
  • Private Subnets (không cho phép kết nối Internet trực tiếp)
  • Route Tables (định tuyến lưu lượng mạng)
  • NAT Gateway (cho phép private subnets kết nối Internet thông qua public subnet)

Bước 1: Tạo VPC

  1. Đăng nhập vào AWS Management Console.
  2. Tìm và chọn dịch vụ VPC.
  3. Chọn Your VPCs -> Create VPC.
  4. Điền các thông tin sau:
    • Name tag: Đặt tên cho VPC của bạn (ví dụ: “MyVPC”).
    • IPv4 CIDR block: Chọn dải IP cho VPC của bạn (ví dụ: 10.0.0.0/16).
  5. Nhấn Create VPC.

Bước 2: Tạo Subnets

Tạo các subnet theo thông tin sau:

  • Public Subnets:
    • Name tag: publicA
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone (ví dụ: ap-southeast-1a)
    • IPv4 CIDR block: 10.0.0.0/24
    • Name tag: publicB
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1b)
    • IPv4 CIDR block: 10.0.1.0/24
    • Name tag: publicC
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1c)
    • IPv4 CIDR block: 10.0.2.0/24
  • Private Subnets:
    • Name tag: privateA
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone (ví dụ: ap-southeast-1a)
    • IPv4 CIDR block: 10.0.4.0/24
    • Name tag: privateB
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1b)
    • IPv4 CIDR block: 10.0.5.0/24
    • Name tag: privateC
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1c)
    • IPv4 CIDR block: 10.0.6.0/24
  • Database Subnets (Optional):
    • Name tag: dbA
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone (ví dụ: ap-southeast-1a)
    • IPv4 CIDR block: 10.0.8.0/24
    • Name tag: dbB
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1b)
    • IPv4 CIDR block: 10.0.9.0/24
    • Name tag: dbC
    • VPC ID: Chọn VPC vừa tạo
    • Availability Zone: Chọn một Availability Zone khác (ví dụ: ap-southeast-1c)
    • IPv4 CIDR block: 10.0.10.0/24

Chọn Subnets -> Create Subnet và điền thông tin tương ứng.

Bước 3: Gán Public IPv4 cho Public Subnets

Để các public subnet có thể truy cập Internet, bạn cần gán public IPv4 address cho chúng:

  1. Chọn từng subnet publicA, publicB, publicC.
  2. Chọn Actions -> Modify auto-assign IP settings.
  3. Chọn Enable auto-assign public IPv4 address.
  4. Nhấn Save.

Bước 4: Tạo Internet Gateway và gắn vào VPC

  1. Chọn Internet Gateways -> Create Internet Gateway.
  2. Đặt tên cho Internet Gateway (ví dụ: “MyInternetGateway”).
  3. Nhấn Create Internet Gateway.
  4. Chọn Internet Gateway vừa tạo, sau đó chọn Actions -> Attach to VPC.
  5. Chọn VPC của bạn và nhấn Attach Internet Gateway.

Bước 5: Tạo Route Table cho Public Subnets

  1. Chọn Route Tables -> Create Route Table.
  2. Đặt tên cho Route Table (ví dụ: “PublicRouteTable”).
  3. Chọn VPC của bạn.
  4. Nhấn Create Route Table.
  5. Chọn Route Table vừa tạo, chọn tab Routes -> Edit Routes.
  6. Thêm một route mới với:
    • Destination: 0.0.0.0/0 (đại diện cho tất cả các địa chỉ IPv4)
    • Target: Chọn Internet Gateway vừa tạo.
  7. Nhấn Save changes.
  8. Chọn tab Subnet Associations -> Edit Subnet Associations.
  9. Chọn các public subnet (publicA, publicB, publicC).
  10. Nhấn Save associations.

Bước 6: Tạo NAT Gateway (trong Public Subnet)

  1. Chọn NAT Gateways -> Create NAT Gateway.
  2. Chọn một public subnet (ví dụ: publicA).
  3. Chọn Public dưới phần Connectivity type.
  4. Nhấn Create NAT Gateway.
    • Lần lượt tạo NAT gateways cho publicB, publicC nếu muốn tăng tính sẵn sàng.

Bước 7: Tạo Route Table cho Private Subnets

  1. Chọn Route Tables -> Create Route Table.
  2. Đặt tên cho Route Table (ví dụ: “PrivateRouteTable”).
  3. Chọn VPC của bạn.
  4. Nhấn Create Route Table.
  5. Chọn Route Table vừa tạo, chọn tab Routes -> Edit Routes.
  6. Thêm một route mới với:
    • Destination: 0.0.0.0/0 (đại diện cho tất cả các địa chỉ IPv4)
    • Target: Chọn NAT Gateway vừa tạo.
  7. Nhấn Save changes.
  8. Chọn tab Subnet Associations -> Edit Subnet Associations.
  9. Chọn các private subnet (privateA, privateB, privateC) và các database subnet (dbA, dbB, dbC) (nếu có).
  10. Nhấn Save associations.

Bước 8: Tạo Bastion Host (tùy chọn)

Bastion Host là một EC2 instance được đặt trong public subnet, được sử dụng để truy cập vào các EC2 instance trong private subnet một cách an toàn.

  1. Tạo một EC2 instance trong public subnet (ví dụ: publicB).
  2. Trong phần Security Group, tạo một security group mới, chỉ cho phép truy cập SSH (port 22) từ địa chỉ IP của bạn.

Bước 9: Tạo App Server Instance (trong Private Subnet)

  1. Tạo một EC2 instance trong private subnet (ví dụ: privateA).
  2. Trong phần Security Groups, chọn security group đã tạo cho Bastion Host. Điều này chỉ cho phép các instance nằm trong cùng một security group 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.

Bước 10: Kết nối vào App Server

  1. Sử dụng SSH để truy cập vào Bastion Host.
  2. Từ Bastion Host, sử dụng SSH để truy cập vào App Server.

Kiểm tra kết nối Internet từ App Server bằng lệnh ping 1.1.1.1. Nếu thành công, App Server đã có thể truy cập Internet thông qua NAT Gateway.

Tổng kết

VPC là một dịch vụ quan trọng của AWS, cho phép bạn tạo ra một môi trường mạng riêng biệt và an toàn trong đám mây. Việc hiểu rõ các thành phần và cách cấu hình VPC là rất quan trọng để triển khai và quản lý các ứng dụng và dịch vụ của bạn trên AWS. Ngoài việc triển khai cho hệ thống thực tế, VPC còn là một phần quan trọng trong việc chuẩn bị cho các chứng chỉ AWS. Việc nắm vững kiến thức về VPC sẽ giúp bạn tự tin hơn khi đối mặt với các kỳ thi chứng chỉ AWS.

Chúc bạn thành công!

Tài liệu tham khảo:

  • Khóa học AWS Certified Solutions Architect – Associate Level