具有多个目标的 Linux 2.6/Netfilter/Netmap

具有多个目标的 Linux 2.6/Netfilter/Netmap

我想创建与另一个网络的 VPN 连接,但我们必须将我们的地址 (172.16.0.0/22) 映射到新 IP,因为目标网络也在使用我们的 IP。因此,我们尝试使用 NETMAP 目标设置此连接。我们想访问目标处的 3 个网络中的服务:1.1.0.0/17、3.3.0.0/16、5.5.0.0/16(仅作为示例!)此外,我们无法 1:1 映射网络,但我们只有一个 IP 地址被目标网络接受(192.168.72.1)。我配置了以下 nat 规则:

Chain eth0_in (1 references)
target     prot opt source               destination         
NETMAP     all  --  1.1.0.0/16        192.168.72.1        172.16.0.0/22
NETMAP     all  --  3.3.0.0/16        192.168.72.1        172.16.0.0/22
NETMAP     all  --  5.5.0.0/16        192.168.72.1        172.16.0.0/22

Chain eth0_masq (1 references)
target     prot opt source               destination         
MASQUERADE  all  --  172.16.0.0/16        anywhere            policy match dir out pol none 
SNAT       all  --  172.16.0.0/16        anywhere            policy match dir out pol none to:192.168.72.1 

Chain eth0_out (1 references)
target     prot opt source               destination         
NETMAP     all  --  172.16.0.0/22        1.1.0.0/16       192.168.72.1/32
NETMAP     all  --  172.16.0.0/22        3.3.0.0/16       192.168.72.1/32
NETMAP     all  --  172.16.0.0/22        5.5.0.0/16       192.168.72.1/32

这部分有效。iptables 重新加载后访问的第一个地址有效,但所有其他地址均无效。例如

telnet 1.1.0.1 works
telnet 3.3.0.1 fails

-- 重新加载所有 iptables

telnet 3.3.0.1 works
telnet 1.1.0.1 fails

出了什么问题?是否可以将一个网络映射到一个 IP 以用于多个目的地?

答案1

系统上还配置了 ipsec 隧道,但存在一些不必要的交互。禁用它后,netmap 可以按预期完美运行。经过一番检查,我们发现策略级别存在错误,该级别设置为必需,而不是唯一。再次使用“唯一”启用 ipsec 隧道解决了该问题。

相关内容