关于AWS EC2 网卡 src/dest checking | AWS EC2 路由

86 阅读2分钟

背景

由于 AWS 上面的 Site to Site VPN 配置参数很多不能自定义,比如encryption algorithms 没有 3DES,如果跟 partner 对接 Ipsec VPN 使用它可能无法建联。这时候就需要去 AWS Marketplace 找相关的第三方AMI,比如 Cisco,Fortinet 等,选择好镜像启动实例和配置。

还有个问题就是如何将 VPC 内网的 EC2 流量路由转发到 VPN EC2 实例上呢,如果 EC2 和 它在不同网段可以在子网的路由表配置下路由,相同网段可以在操作系统配置下静态路由指向下一跳地址。

但是这里就涉及EC2 网卡 src/dest checking。所有的 Amazon EC2 服务器默认都激活了一个 source/destination checking 路由功能。这个功能将发送到服务器的目的地和主机的 IP 地址不一致的数据包丢弃。有点跟 Linux ip_forward 内核参数作用类似,所以需要在 VPN EC2 实例网卡关闭 src/dest checking 功能。

问题现象

VPN EC2 实例这边使用 Fortigate-VM(10.10.254.30/28),加上同网段一台 EC2 partners-proxy (10.10.254.24/28) 做实验。在 partners-proxy 上添加静态路由ip route add 10.101.60.0/22 via 10.10.254.30,下一跳指向 Fortigate-VM。

EC2 NameIP
partners-proxy10.10.254.24/28
Fortigate-VM10.10.254.30/28

partners-proxy 路由表

Fortigate-VM 网卡 Source/dest. check 是 enable

执行mtr 10.101.63.201,通过下图可以看到貌似没到10.10.254.30

Fortigate-VM 上面也看不到有流量进来

另外到 10.10.254.30 连通性是没问题的

再添加ip route add 1.1.1.1/32 via 10.10.254.30测试下

mtr 还是没

禁用 src/dest checking

禁用 src/dest checking 可以通过 Amazon AWS 控制台进行操作,找到对应 EC2 实例

在 EC2 -> Networking -> Network Interfaces

点击对应的网卡

在 Actions -> Change source/dest. check

取消Enable

去掉后,mtr 出现下一跳地址10.10.254.30

Fortigate-VM 上面也看到 ICMP 包进来

mtr 1.1.1.1 也正常

参考:

docs.redhat.com/zh_hans/doc…