背景
由于 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 Name | IP |
|---|---|
| partners-proxy | 10.10.254.24/28 |
| Fortigate-VM | 10.10.254.30/28 |
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 也正常
参考: