Частная подсеть AWS не перенаправлена на экземпляр NAT
AWS неправильно настраивает gw по умолчанию, например, в частной подсети.
Адрес NAT:
ec2din i-ef7f8a3a|grep PRIVATEIPADDRESS
PRIVATEIPADDRESS 172.16.0.31
Конфигурация ROUTING TABLE:
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, gw im получаете:
ip r add default via 172.16.0.31
RTNETLINK answers: Network is unreachable
Я что-то пропустил? Как должна выглядеть таблица маршрутов для экземпляра в частной подсети? Должен ли быть мой NAT IP или значение по умолчанию?
1 ответ
Оставьте стек IP только на экземплярах. Шлюз по умолчанию, который он получает от DHCP, является правильным, и маршрутизация к экземпляру NAT осуществляется инфраструктурой VPC.
Группу безопасности на вашем экземпляре NAT необходимо настроить для приема всего трафика с 172.16.0.0/16 (при необходимости вы можете установить более строгие ограничения, но сначала вам нужно, чтобы он работал).
Вам также необходимо отключить проверку источника / назначения на экземпляре NAT.