AWS 私有子网未重定向到 NAT 实例

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,并在路由表中将其设置为所有流量的默认网关。

当我登录到在私有子网(172.16.1.220)中启动的计算机并检查路由表时,它没有显示默认 gw 作为我的 NAT 实例的 ip,而是重定向到默认路由器:

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,所以我开始测试。

我尝试 ping 一些外部 IP,并在我的 nat 实例上启动 tcpdump,但我没有看到来自我的私有子网的任何传入数据包:

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 设置默认路由时,我得到了:

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 实例上。

相关内容