我有一个 OpenVPN 设置,如下所示:
+------------------------------------------------------+
| |
| |
| |
| |
| |
| |
| |
| +-------------+--+ |
| | Internal Server| |
| | 10.19.4.35 | |
| | | |
| +----------------+ |
+-----+-------+ |
| Gateway | |
| 10.19.4.1 | |
| | |
+-----+-------+ +--------+-------+ |
| | VPN Server | |
| | 10.19.4.59 eth0| |
+------------------------------+ 10.19.5.0 tun0 | |
+-------------+---+ | | +----------------+ |
| Remote Server | | | |
| 10.0.0.2 eth0 +------------+ | |
| 10.19.5.2 tun0| | |
+-----------------+ | |
| |
| |
+------------------------------------------------------+
VPC
网关是 AWS 网关,有一条路由可将 10.19.5.0/24 流量转发到 VPN 服务器。我还将路由推送到 10.19.4.0/24 的远程服务器。我还在 VPN 服务器上的 eth0 上使用 NAT。
如果我从“远程服务器”ping“内部服务器”,则一切正常,我会收到响应。如果我从内部服务器 ping VPN 服务器的 eth0 IP,则会正确收到响应。
问题是,如果我尝试从内部服务器 ping 远程服务器或 VPN 服务器的 tun0 IP 地址,它永远不会得到响应。在进行一些 TCP 转储后,我发现当我尝试从内部服务器向 10.19.5.0/24 发送数据包时,它会像您预期的那样进入网关。然后网关将此流量路由到 VPN 服务器。VPN 服务器正在正确处理流量,如果它是目标,它将生成响应,或者如果远程服务器是目标,它将将数据包路由到远程服务器及其响应。
问题是,VPN 服务器没有将该响应发送到网关,而是直接将数据包发送到“内部服务器”(这已通过使用 tcpdump 观察 MAC 地址得到证实)。
我已经看到了一些关于如何修复此问题的文档,但是在使用 SNAT/DNAT/MASQUERADE 并指定各种源地址之后,我仍然不确定如何使用 IPTABLES 修复此问题。
任何帮助将不胜感激。
答案1
事实证明这是亚马逊的问题。我不得不从面板禁用源/目标检查,以允许它路由数据包。