Trên AWS, khi tạo NLB, bạn có thể chỉ định ID phiên bản thay vì địa chỉ IP của phiên bản. Điều này khiến NLB bảo toàn IP của máy khách.
Tuy nhiên, nếu tôi định cấu hình NLB để nhắm mục tiêu các phiên bản trong mạng con riêng trong đó bảng định tuyến bao gồm tuyến đường mặc định đến cổng NAT, làm cách nào để phản hồi có thể được định tuyến trở lại qua giao diện NLB chứ không phải cổng NAT?
Hãy xem xét những điều sau đây:
- VPC có khối CIDR là 10.0.0.0/16;
- Mạng con công khai có khối CIDR là 10.0.3.0/24;
- Một mạng con riêng với khối CIDR là 10.0.6.0/24.
Mạng con công cộng có một tuyến đường mặc định đến cổng internet và mạng con riêng tư có một tuyến đường mặc định đến cổng NAT. Cổng NAT có giao diện với IP riêng 10.0.3.12 và NLB có giao diện với IP riêng 10.0.3.18.
Phiên bản EC2 có IP 10.0.6.4 được triển khai trong mạng con riêng tư và là một phần của nhóm mục tiêu NLB. Phiên bản có một tuyến mặc định đến bộ định tuyến VPC tại 10.0.6.1 bên trong bảng định tuyến của hệ điều hành.
Giả sử một gói có IP máy khách là 22.128.22.136 được chuyển tiếp đến phiên bản EC2, phiên bản EC2 sẽ quản lý cách gửi gói trở lại 10.0.3.18 chứ không phải đến cổng NAT. Bảng định tuyến mạng con riêng có tuyến mặc định là 10.0.3.12.
Tôi cho rằng AWS ngay lập tức "tiêm" một tuyến đến NLB cho bất kỳ IP máy khách nào khi một gói đến trên giao diện NLB. Tôi muốn biết thêm về nội bộ.
Với tcpdump
trên phiên bản EC2, tôi có thể thấy IP máy khách được giữ nguyên:
$ Sudo tcpdump -n -i eth0 Máy chủ 22.128.22.136 cổng 80