AWS 路由表默认指向不同子网中的网络接口

AWS 路由表默认指向不同子网中的网络接口

我正在尝试将 EC2 实例设置为 NAT 网关,以便私有网络中的其他实例可以被路由到该网关。

我有以下设置:

私有云平台

  • 10.0.0.0/16

2 个子网

  • 答:10.0.1.0/24
  • 乙:10.0.2.0/24

2 个 EC2 实例

  • 具有 2 个网络接口 eth0、eth1 的 NAT 实例,均位于子网 A 中
  • 子网 B 中的另一个实例

在 NAT 实例中,eth0 用于公共网络,eth1 用于私有网络,并且它们都设置了相应的防火墙。

我尝试为子网 B 创建路由表,将默认值路由到 NAT 的 eth1,即:

0.0.0.0/0         <id of eth1 on NAT>

然后我尝试在 NAT 上运行tshark -i eth1(命令行中的 Wireshark)以查看是否有任何流量到达那里,然后我ping google.com在另一个实例上运行。没有成功。我还尝试了curl google.com以防 ping 在某处被阻止,但同样没有任何反应。

看起来 AWS 路由流量的方式有问题,所以即使路由表是这样设置的,流量也永远无法到达网络接口。

如果有人能帮助我,我将不胜感激。谢谢。

免责声明:我知道 AWS 具有内置 NAT 网关选项,但它不适合我的情况。

答案1

由于数据包的源和目标都不是属于您的 IP 地址NAT 网关,您需要禁用源检查在您想要处理流量的网络接口上(我想说的是 NAT 网关中的两个接口):

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#change_source_dest_check

否则,平台就会丢弃流量,作为一种“反欺骗”保护。

如果你想在 Azure 中执行此操作,则相当于IP 转发标志

相关内容