AWS私有子网不会redirect到NAT实例

AWS没有在私有子网中正确设置默认gw。

NAT地址:

ec2din i-ef7f8a3a|grep PRIVATEIPADDRESS PRIVATEIPADDRESS 172.16.0.31 

路由表configuration:

 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` 

私有子网configuration:

 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-ef7f8a3aconfiguration为NAT,并将其设置在路由表中,作为所有stream量的默认gw。

当我login到我的机器启动私有子网(172.16.1.220),并检查路由表,它不显示默认gw作为我的NAT实例的IP,而是,它redirect到默认路由器:

 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路由器上完成,无论如何它将redirect到我的NAT,所以我开始testing。

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

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

我错过了什么? 私有子网上的实例应该如何查看路由表? 我的NAT IP应该在那里,还是默认的?

单独将IP堆栈留在实例上。 它从DHCP获取的默认网关是正确的,并且路由到NAT实例由VPC基础设施完成。

NAT实例上的安全组需要configuration为接受来自172.16.0.0/16的所有stream量(如果需要,可以将其设置得更严格,但首先需要使其工作)。

您还需要禁用 NAT实例上的源/目标检查 。