我想使用两个不同的 Google Cloud VPN 网关GW_IP_1
以及GW_IP_2
两个 NAT 后路由器以及R1
来设置两个 IPSec 隧道R2
。像这样的东西:
GW_IP_1 ---\ /--- R1
|-- my_main_router_NAT_firewall ---|
GW_IP_2 ---/ \--- R2
问题:根据网关(和) 的源 IP 地址将UDP
端口转发500
到特定路由器(和)。R1
R2
GW_IP_1
GW_IP_2
我最终遇到了一种奇怪的情况:一条隧道已启动,数据包匹配并正确转发,但数据包对于第二个路由器 R2不匹配,看起来它们消失在某个地方。
在主 NATting 路由器上,我创建了 DNAT 规则:
-t nat -A PREROUTING -p udp -s GW_IP_1 --dport 500 -j DNAT --to R1:500
-t nat -A PREROUTING -p udp -s GW_IP_2 --dport 500 -j DNAT --to R2:500
我在和tcpdump
上运行。收到数据包并打开隧道,R1
R2
R1
但 R2 没有看到任何 500 的数据包。然后我也运行tcpdump
来自main_router
两者的数据包GW_IP_1
并按GW_IP_2
预期到达。
我花了几天时间与路由器(Ubiquiti ER-X)等进行斗争,认为这是固件错误或此类路由器特有的问题。但后来我从一开始就设置了一个简单的 Linux 路由器——有两个接口、转发和所有规则,结果是相同的——一个隧道已启动(数据包被正确转发),而第二个路由器没有收到任何数据包。
iptables
所以这可能是/kernel更基本的东西。有人可以解释一下吗?