Назад | Перейти на главную страницу

Частная подсеть AWS не перенаправлена ​​на инстанс NAT

AWS неправильно настраивает gw по умолчанию, например, в частной подсети.

Адрес NAT:

ec2din i-ef7f8a3a|grep PRIVATEIPADDRESS
PRIVATEIPADDRESS    172.16.0.31

Конфигурация МАРШРУТИЗАТОРА:

ec2drtb rtb-7c9f3618
ROUTETABLE  rtb-7c9f3618    vpc-43da3455
ROUTE   local       active  172.16.0.0/16           CreateRouteTable
ROUTE       i-ef7f8a3a  active  0.0.0.0/0   eni-4055320a        CreateRoute
ASSOCIATION rtbassoc-cc1764a8   main
ASSOCIATION rtbassoc-51b7c435   subnet-c92429be`

Конфигурация ЧАСТНОЙ ПОДСЕТИ:

ec2dsubnet subnet-c92429be
SUBNET  subnet-c92429be available   vpc-43da3455    172.16.1.0/24   250 us-east-1a  false   false
TAG subnet  subnet-c92429be`

Как мы видим, я настроил экземпляр i-ef7f8a3a как NAT, и установите его в таблице маршрутизации как gw по умолчанию для всего трафика.

Когда я вхожу в систему на моем компьютере, запущенном в частной подсети (172.16.1.220), и проверяю таблицу маршрутизации, он не показывает gw по умолчанию в качестве ip моего экземпляра NAT, вместо этого он перенаправляется на маршрутизатор по умолчанию:

ip r
default via 172.16.1.1 dev eth0 
default via 172.16.1.1 dev eth0  metric 1024 
172.16.1.0/24 dev eth0  proto kernel  scope link  src 172.16.1.220 
172.16.1.1 dev eth0  scope link  metric 1024`

Маршрут по умолчанию для NAT настроен как 172.16.0.1, а не для igw, поэтому я подумал, что вся магия сделана на маршрутизаторе AWS, и он все равно перенаправит на мой NAT, поэтому я начинаю тесты.

Я пытаюсь выполнить эхо-запрос по внешнему IP-адресу и запускаю tcpdump на своем экземпляре nat, но не вижу никаких входящих пакетов из моей частной подсети:

ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
20 packets transmitted, 0 received, 100% packet loss, time 19150ms`

tcpdump -n host 8.8.8.8
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C
0 packets captured
0 packets received by filter
0 packets dropped by kernel`

Оба экземпляра могут «видеть» друг друга - я могу использовать ssh в обоих направлениях, но когда я даже пытаюсь настроить маршрут по умолчанию с моим NAT, я получаю:

ip r add default via 172.16.0.31
RTNETLINK answers: Network is unreachable

Я что-то пропустил? Как должна выглядеть таблица маршрутизации для экземпляра в частной подсети? Должен быть мой NAT IP или IP по умолчанию?

Оставьте стек IP только для экземпляров. Шлюз по умолчанию, который он выбирает от DHCP, правильный, а маршрутизация к экземпляру NAT выполняется инфраструктурой VPC.

Группу безопасности на вашем экземпляре NAT необходимо настроить для приема всего трафика с 172.16.0.0/16 (при необходимости вы можете установить более строгие ограничения, но сначала вам нужно заставить его работать).

Вам также необходимо отключить проверку источника / назначения на экземпляре NAT.