Cập nhật: vào cuối tháng 12 năm 2015, AWS đã công bố một tính năng mới, Cổng NAT được quản lý cho VPC . Dịch vụ tùy chọn này cung cấp một cơ chế thay thế cho các phiên bản VPC trong mạng con riêng để truy cập Internet, trong đó trước đây, giải pháp phổ biến là một phiên bản EC2 trên mạng con công cộng trong VPC, hoạt động như một "phiên bản NAT", cung cấp dịch địa chỉ mạng ( về mặt kỹ thuật, dịch địa chỉ cổng ) cho các trường hợp trong các mạng con riêng khác, cho phép các máy đó sử dụng địa chỉ IP công cộng của cá thể NAT để truy cập Internet bên ngoài của chúng.
Dịch vụ NAT được quản lý mới về cơ bản không thay đổi khả năng áp dụng các thông tin sau, nhưng tùy chọn này không được đề cập trong nội dung tiếp theo. Một phiên bản NAT vẫn có thể được sử dụng như mô tả hoặc thay vào đó, dịch vụ Cổng NAT được quản lý có thể được cung cấp. Một phiên bản mở rộng của câu trả lời này tích hợp thêm thông tin về NAT Gateway và cách so sánh với phiên bản NAT sẽ được đưa ra, vì cả hai đều có liên quan đến mô hình mạng con riêng tư / công khai trong VPC.
Lưu ý rằng Internet Gateway và NAT Gateway là hai tính năng khác nhau. Tất cả các cấu hình VPC có truy cập Internet sẽ có một đối tượng ảo Cổng Internet.
Để hiểu sự khác biệt giữa các mạng con "riêng tư" và "công khai" trong Amazon VPC, đòi hỏi phải hiểu cách thức hoạt động của định tuyến IP và dịch địa chỉ mạng (NAT) nói chung và cách chúng được triển khai cụ thể trong VPC.
Sự khác biệt cốt lõi giữa mạng con công cộng và riêng tư trong VPC được xác định bởi tuyến đường mặc định của mạng con đó là gì, trong các bảng định tuyến VPC.
Đến lượt mình, cấu hình này chỉ ra tính hợp lệ của việc sử dụng hoặc không sử dụng các địa chỉ IP công cộng trên các trường hợp trên mạng con cụ thể đó.
Mỗi mạng con có chính xác một tuyến mặc định, có thể chỉ là một trong hai điều sau:
- đối tượng "Cổng Internet" của VPC, trong trường hợp mạng con "công khai" hoặc
- một thiết bị NAT - nghĩa là NAT Gateway hoặc EC2, thực hiện vai trò "thể hiện NAT", trong trường hợp mạng con "riêng tư".
Internet Gateway không làm bất kỳ dịch địa chỉ mạng cho các trường hợp không có địa chỉ IP công cộng để một thể hiện mà không có một địa chỉ IP công cộng không thể kết nối ra bên ngoài Internet - để làm những việc như tải bản cập nhật phần mềm, hoặc truy cập vào các nguồn lực AWS khác như S3 1 và SQS - nếu tuyến mặc định trên mạng con VPC của nó là đối tượng Cổng Internet. Vì vậy, nếu bạn là một ví dụ trên mạng con "công khai", thì bạn cần một địa chỉ IP công cộng để thực hiện một số lượng đáng kể những việc mà máy chủ thường cần phải làm.
Đối với các trường hợp chỉ có một địa chỉ IP riêng, có một cách khác để truy cập Internet. Đây là nơi Dịch địa chỉ mạng² và một phiên bản NAT xuất hiện.
Các máy trên mạng con riêng tư có thể truy cập Internet vì tuyến mặc định trên mạng con riêng không phải là đối tượng "Cổng Internet" VPC - đó là phiên bản EC2 được định cấu hình như một thể hiện NAT.
Một thể hiện NAT là một thể hiện trên mạng con công cộng có IP công khai và cấu hình cụ thể. Có những AMI được xây dựng sẵn để làm điều này hoặc bạn có thể tự xây dựng.
Khi các máy có địa chỉ riêng gửi lưu lượng ra bên ngoài, lưu lượng được gửi, bởi VPC, đến phiên bản NAT, thay thế địa chỉ IP nguồn trên gói (địa chỉ IP riêng của máy riêng) bằng địa chỉ IP công cộng của chính nó, sẽ gửi lưu lượng ra Internet, chấp nhận các gói phản hồi và chuyển chúng trở lại địa chỉ riêng của máy gốc. (Nó cũng có thể viết lại cổng nguồn và trong mọi trường hợp, nó sẽ nhớ các ánh xạ để nó biết máy bên trong nào sẽ nhận được các gói phản hồi). Một cá thể NAT không cho phép bất kỳ lưu lượng truy cập "không mong muốn" nào đến được các cá thể riêng tư, trừ khi nó được cấu hình cụ thể để làm như vậy.
Do đó, khi truy cập tài nguyên Internet bên ngoài từ một mạng con riêng tư, lưu lượng truy cập qua thể hiện NAT và xuất hiện đích đến có nguồn gốc từ địa chỉ IP công cộng của cá thể NAT ... vì vậy lưu lượng phản hồi trở lại đối tượng NAT. Cả nhóm bảo mật được gán cho thể hiện NAT cũng như nhóm bảo mật được gán cho thể hiện riêng tư cần phải được cấu hình để "cho phép" lưu lượng phản hồi này, bởi vì các nhóm bảo mật có trạng thái. Họ nhận ra lưu lượng phản hồi tương quan với các phiên có nguồn gốc nội bộ, do đó, nó được tự động cho phép. Lưu lượng truy cập bất ngờ, tất nhiên, bị từ chối trừ khi nhóm bảo mật được cấu hình để cho phép nó.
Không giống như định tuyến IP thông thường, nơi cổng mặc định của bạn nằm trên cùng một mạng con, cách thức hoạt động trong VPC là khác nhau: phiên bản NAT cho bất kỳ mạng con riêng tư nào luôn nằm trên một mạng con khác và mạng con khác luôn là mạng con công cộng, bởi vì cá thể NAT cần phải có IP bên ngoài công cộng và cổng mặc định của nó phải là đối tượng "Cổng Internet" VPC.
Tương tự ... bạn không thể triển khai một thể hiện với IP công khai trên mạng con riêng tư. Nó không hoạt động, bởi vì tuyến mặc định trên mạng con riêng là (theo định nghĩa) là một thể hiện NAT (thực hiện NAT trên lưu lượng) chứ không phải đối tượng Cổng Internet (không có). Lưu lượng truy cập từ Internet sẽ đánh vào IP công cộng của cá thể, nhưng các phản hồi sẽ cố gắng chuyển hướng ra ngoài thông qua NAT, điều này sẽ làm giảm lưu lượng truy cập (vì nó sẽ bao gồm các phản hồi cho các kết nối mà nó không biết, vì vậy chúng 'được coi là không hợp lệ) hoặc sẽ viết lại lưu lượng trả lời để sử dụng địa chỉ IP công cộng của chính nó, điều này sẽ không hoạt động vì nguồn gốc bên ngoài sẽ không chấp nhận trả lời đến từ một địa chỉ IP khác với địa chỉ mà họ đang cố gắng bắt đầu liên lạc với .
Về bản chất, sau đó, các chỉ định "riêng tư" và "công khai" không thực sự về khả năng truy cập hoặc không thể truy cập từ Internet. Chúng là về các loại địa chỉ sẽ được gán cho các thể hiện trên mạng con đó, có liên quan vì cần phải dịch - hoặc tránh dịch - những địa chỉ IP đó cho các tương tác Internet.
Do VPC có các tuyến ngầm định từ tất cả các mạng con VPC đến tất cả các mạng con VPC khác, nên tuyến mặc định không đóng vai trò trong lưu lượng VPC nội bộ. Các thực thể có địa chỉ IP riêng sẽ kết nối với các địa chỉ IP riêng khác trong VPC "từ" địa chỉ IP riêng của họ, chứ không phải "từ" địa chỉ IP công cộng của họ (nếu họ có) ... miễn là địa chỉ đích là một địa chỉ riêng khác trong VPC.
Nếu các trường hợp của bạn có địa chỉ IP riêng không bao giờ, trong mọi trường hợp, cần phải tạo ra lưu lượng truy cập Internet bên ngoài, thì về mặt kỹ thuật, chúng có thể được triển khai trên mạng con "công khai" và vẫn không thể truy cập được từ Internet ... nhưng trong cấu hình như vậy, họ không thể bắt nguồn lưu lượng truy cập ra bên ngoài vào Internet, bao gồm các kết nối với các dịch vụ cơ sở hạ tầng AWS khác, như S3 1 hoặc SQS.
1. Về S3, cụ thể, để nói rằng truy cập Internet luôn được yêu cầu là sự đơn giản hóa có thể sẽ phát triển theo phạm vi theo thời gian và lan sang các dịch vụ AWS khác, vì khả năng của VPC tiếp tục phát triển và phát triển. Có một khái niệm tương đối mới gọi là Điểm cuối VPCcho phép các phiên bản của bạn, bao gồm cả các phiên bản chỉ có địa chỉ IP riêng, truy cập trực tiếp S3 từ các mạng con được chọn trong VPC mà không cần chạm vào "Internet" và không sử dụng phiên bản NAT hoặc cổng NAT, nhưng điều này yêu cầu cấu hình bổ sung và chỉ có thể sử dụng để truy cập các nhóm trong cùng khu vực AWS với VPC của bạn. Theo mặc định, S3 - là dịch vụ duy nhất thể hiện khả năng tạo điểm cuối VPC - chỉ có thể truy cập từ bên trong VPC thông qua Internet. Khi bạn tạo điểm cuối VPC, điều này sẽ tạo danh sách tiền tố (pl-xxxxxxxx
) mà bạn có thể sử dụng trong các bảng lộ trình VPC của mình để gửi lưu lượng truy cập bị ràng buộc cho dịch vụ AWS cụ thể đó trực tiếp đến dịch vụ thông qua đối tượng "Điểm cuối VPC" ảo. Nó cũng giải quyết vấn đề hạn chế quyền truy cập ra nước ngoài đối với S3, vì danh sách tiền tố có thể được sử dụng trong các nhóm bảo mật bên ngoài, thay cho địa chỉ IP hoặc khối đích - và điểm cuối VPC S3 có thể phải chịu các tuyên bố chính sách bổ sung , hạn chế truy cập xô từ bên trong, như mong muốn.
2. Như đã lưu ý trong tài liệu, những gì thực sự được thảo luận ở đây là cổng cũng như dịch địa chỉ mạng. Mặc dù về mặt kỹ thuật, một chút không chính xác, để gọi hoạt động kết hợp là "NAT". Điều này hơi giống với cách mà nhiều người trong chúng ta có xu hướng nói "SSL" khi chúng ta thực sự có nghĩa là "TLS". Chúng tôi biết những gì chúng ta đang nói về, nhưng chúng tôi không sử dụng từ đúng nhất để mô tả nó. "Lưu ý Chúng tôi sử dụng thuật ngữ NAT trong tài liệu này để tuân theo thông lệ CNTT phổ biến, mặc dù vai trò thực tế của thiết bị NAT là cả dịch địa chỉ và dịch địa chỉ cổng (PAT)."