kiến thức DevOps thực tế và chi tiết

AWS lesson 2: Amazon VPC là gì

Tiếp nối lesson 1 (IAM là gì) trong series chinh phục AWS. Chúng ta sẽ đi tìm hiểu VPC là gì và cách triển khai VPC AWS như thế nào, đây là service phải thực sự hiểu rõ để có thể có thể triển khai hợp lý trong những dự án. Sau khi theo dõi xong bài viết này bạn sẽ nắm được toàn bộ kiến thức basic của VPC (vô cùng chi tiết) và những phần quan trọng bạn cần mở rộng và đi sâu. Bạn có thể tìm hiểu trực tiếp từ VPC (amazon.com).

 

vpc là gì

VPC là gì?

VPC (Virtual private cloud) là một không gian mạng riêng ảo, giúp chúng ta quản lý những tài nguyên, service được thiết lập trong đó cho phép tài nguyên được kết nối với internet hay không, được giao tiếp với nhau hay không.

Ví dụ bạn có EC2 (máy tính), RDS (database) khi bạn muốn kết nối máy tính của mình đến database sẽ có 2 trường hợp tối thiểu, máy tính có kết nối internet và database được public internet tuy nhiên như vậy rất nguy hiểm bởi vì rõ ràng ai cũng có thể truy cập được nên không có tính bảo mật cao, vì vậy chúng ta sẽ có trường hợp thứ 2 là máy tính và database đều được đặt trong một không gian mạng bảo mật và có thể kết nối với nhau và chỉ có máy tính có thể truy cập được từ internet (SSH, remote).

Amazon VPC là gì chúng ta sẽ tìm hiểu chi tiết

Trong bài viết Xây dựng hạ tầng mạng nội bộ doanh nghiệp trên AWS bạn có thể thấy step by step cụ thể trong bài viết này để bạn hiểu rõ hơn về VPC AWS chúng ta sẽ đi qua những thành phần vô cùng quan trọng: tổng quan VPC (CIDR, Subnet , IP address, Elastic IP address), VPC component, NAT, NACL, VPC peering, VPC FLow logs, AWS PrivateLink, Transit Gateway.

Tổng quan VPC là gì? một số thành phần cần biết

CIDR

CIDR có thể hiểu Khi tạo VPC chúng ta cần cung cấp IP range (phạm vi của IP) ví dụ: 172.16.0.0/24, những service, tài nguyên trong mạng VPC này đều sẽ sử dụng trên rải IP này.

Subnetmask: định nghĩa số lượng BIT có thể thay đổi trong IP đó

  • /8 IP có thể sử dụng là 255.x.x.x (x sẽ từ 0 – 255)
  • /16 IP có thể sử dụng là 255.255.x.x (x sẽ từ 0 – 255)
  • /24 IP có thể sử dụng là 255.255.255.x (x sẽ từ 0 – 255)
  • /32 IP có thể sử dụng là 255.255.255.255

Bạn vẫn hơi mơ hồ đúng không bạn có thể hiểu như này, khi bạn sử dụng /24 tức 255.255.255.x (x sẽ từ 0 – 255), ví dụ IP bạn chọn là 172.16.0.0/24 thì số lượng host mà bạn có thể sử dụng sẽ là từ 172.16.0.0 – 172.16.0.255 (tức 256 host).

Bạn có thể tham khảo công cụ CIDR to IPv4 Address Range Utility Tool

Subnet

Subnet là mạng con trong VPC AWS, mỗi subnet là một rải IP khác nhau có 2 loại subnet là private subnetpublic subnet.

Ví dụ CIDR của bạn là 172.16.0.0/16 thì subnet có thể sẽ là 172.16.1.0, 172.16.2.0, 172.16.3.0

Trong đó private subnet bạn có thể hiểu những tài nguyên từ bên ngoài internet không thể truy cập được vào trong, ví dụ bạn có 1 thiết bị có địa chỉ IP là 172.16.1.1 mà subnet (172.16.1.0) chưa được kết nối internet thì thiết bị này sẽ không thể truy cập các tác vụ liên quan đến internet. và public subnet thì ngược lại và subnet được gắn với route table định tuyến qua internet gateway.

IP address và Elastic IP address

IP address chính là IPv4 của thiết bị đó, tương ứng Elastic IP address là IP tĩnh sẽ được gắn với thiết bị đó để định danh chính xác địa chỉ.

Khi running một EC2 ban đầu địa chỉ IPv4 đó chưa là Elastic IP address vì vậy khi bạn stop/start EC2 IPv4 của bạn sẽ bị thay đổi. Và chúng ta cũng có 2 loại Public IP (IP để có thể remote, ssh) và Private IP (ip được thiết lập theo VPC).

Để có thể không bị thay đổi IP mỗi lần stop/start EC2 bạn phải gắn Elastic IP address, Elastic IP address sẽ tính phí nếu bạn đăng ký mà không sử dụng tới (tính phí theo giờ).

VPC component

Route table

Route table giúp định tuyến subnet của chúng ta, subnet nào được phép truy cập ra ngoài internet. Mỗi VPC cần có 1 Route table, nó không thể bị xóa đi, chỉ có thể modify.

Internet gateway

Mỗi VPC chỉ có thể attached tới 1 IGW và ngược lại, nếu 1 subnet được liên kết với route table và routed đến 1 IGW thì đó là public subnet, ngược lại, nếu 1 subnet được liên kết trong route table và không routed đến IGW thì đó là private subnet.

NAT (Network Address Translation)

Ở trên chúng ta đã biết service (ở đây ví dụ EC2) nếu nằm trong subnet private thì không thể truy cập ra bên ngoài và ngược lại để lấy tài nguyên, NAT sẽ thay đổi IP private của tài nguyên thành IP của mình và request ra ngoài internet. Khi có response NAT sẽ gửi lại response cho private IP của resource tương ứng. Đó là cách để resources trong private subnet có thể giao tiếp ra bên ngoài internet.

NAT instance

NAT instance giống như một nhà vận chuyển request giữa Internet và EC2 instances trong private subnet.

  • Là EC2 instance được launch trong public subnet
  • Phải được attached Elastic IP
  • Route table phải được config để route traffic từ private subnet đến NAT instance
  • AWS cung cấp AMI cho NAT instances, chúng ta có thể sự dụng nó khi launch instance mới
  • NAT instances hiện nay không được sử dụng nhiều nhưng trong exam vẫn xuất hiện các câu hỏi về nó

NAT gateway

NAT gateway dùng để instances trong private subnet có thể connect với services bên ngoài VPC, nhưng ko tạo kết nối giữa instances và services đó Khi tạo mới NAT getway có 2 loại kết nối:

  • Public(default):
    • Có thể connect ra bên ngoài internet
    • Phải allocated Elastic IP
    • Tính tiền theo giờ và bandwidth
    • Cần IGW để ra ngoài internet (Private subnet => NAT GW => IGW)
  • Private:
    • Có thể connect với VPC khác, không thể connect internet. Nếu IGW attach vào private NAT thì connection đó cũng sẽ bị drop
    • Không cần allocated Elastic IP

So sánh NAT instance và NAT getway

  • NAT getway được quản lý bởi AWS, vì vậy được recommended sử dụng hơn là NAT instance (quản lý bởi bạn).
  • NAT getway better avaiability và bandwidth cao hơn NAT instance (vì NAT instance còn dựa vào EC2 type).
  • NAT getway trả tiền theo giờ và số lượng data tranfer, còn NAT instance thì trả tiền giống EC2 tùy thuộc vào kiểu máy, network.

NACL (Network Access Control List) trong AWS

  • NACL giống như 1 firewall để control traffic vào/ra subnet.
  • Mỗi subnet trong VPC được liên kết với ít nhất 1 NACLs, mặc định khi tạo mới VPC sẽ tự động tạo 1 NACLs
  • VPC, NACLs mặc định sẽ allow tất cả traffic inbound và outbound
  • Bạn cũng có thể tạo 1 custome NACLs, nhưng mặc định nó sẽ block tất cả inbound/outbound cho đến khi thêm rule mới
  • NACL có thế gán tới nhiều subnet, tuy nhiên 1 subnet chỉ có thể được gán bởi 1 NACL ở 1 thời điểm. Khi bạn gán với 1 NACL mới, những cái cũ sẽ bị gỡ bỏ.
  • Một network ACL chứa 1 danh sách các quy tắc được đánh số. Bắt đầu bởi rule có số nhỏ nhất, để xác định lưu lượng mạng đươc cho phép ra vào. Số nào càng nhỏ thì độ ưu tiên càng cao. Số lớn nhất mà bạn có thể sử dụng cho 1 rule là 32766.
  • NACL phân biệt rõ inbound, outbound rule. Ban có thể allow hay denied rule.
  • Stateless, có nghĩa là những traffic được allowed ở inbound thì KHÔNG tự động được allowed ở outbound.

VPC Peering

VPC peering là cách liên kết giữa 2 VPC với nhau và không phát sinh thêm chi phí. Khi 2 VPC được peering, chúng có thể giao tiếp với nhau bằng private IP.

  • Các VPC không được overlap CIDRs của nhau
  • Có thể tạo VPC peering cross Account/Region

VPC Peering không có tính bắc cầu (Transitive Peering)

Khi virtual private cloud-2 và virtual private cloud-3 được peering với virtual private cloud-1, chúng không thể bắc cầu qua nhau mà cần phải tạo thêm 1 VPC peering mới giữa 2 và 3 thì mới được.

VPC FLow logs

  • VPC FLow logs là tính năng giúp chúng ta có thể nắm bắt được thông tin IP traffic đến và đi Network Interfaces trong VPC.
    • VPC flow logs
    • Subnet flow logs
    • Elastic Network Interface (ENI) flow logs
  • VPC flow logs giúp cho việc monitor các vấn đề về kết nối.
  • Dữ liệu của flow logs có thể ghi trên S3 hoặc CloudWatch Logs.
  • Có thể Query dữ liệu của VPC Flow logs sử dụng Athena hoặc CloudWatch Logs Insights.

AWS PrivateLink

AWS PrivateLink là một các kết nối an toàn giữa virtual private cloud, AWS Serives, hay On-premises network của bạn. Kết nối này không đi qua internet, nó sẽ nằm trong network của AWS.

  • Có thể expose service tới 1000s virtual private cloud(chung account hoặc account khác nhau).
  • Không cần phải sử dụng virtual private cloud peering, IGW, NAT, Route tables…
  • CẦN có Network Load Balancer (Serive virtual private cloud) và ENI (Customer virtual private cloud) hoặc GWLB (Gateway load balancer).

Transit Gateway

Transit Gateway giống như một trung tâm chuyển tiếp các gói tin dùng trong kết nối VPCs với On-premises network thông qua một central hub.

  • Sử dụng cho kết nối giữa hàng nghìn VPC và on-premises connection
  • Có thể cross-region
  • Có thể cross-account khi sử dụng Resource Access Manager (RAM)
  • Route table: có thể giới hạn những VPC nào có thể giao tiếp với nhau
  • Có thể kết hợp với Direct Connection, VPN connection
  • Có hỗ trợ IP Multicast

Vậy là qua bài viết này bạn đã nắm bắt được Service VPC là gì và gồm những gì sang phần tiếp theo mình sẽ hướng dẫn cách sử dụng service này. bạn hãy theo dõi series chinh phục AWS để hiểu biết hơn về Cloud này nhé. Thanks.

 

Mọi thắc mắc bạn có thể liên hệ:

Email: [email protected]