VPN iptables 转发:网络到网络

VPN iptables 转发:网络到网络

我尝试过查看此站点的其他地方,但找不到与此问题相关的内容。目前,我在本地网络和远程网络之间打开了 ipsec 隧道。

目前,运行 Openswan ipsec 且隧道打开的本地设备可以 ping 远程 ipsec 设备以及远程网络中的任何其他计算机。登录到远程计算机之一后,我可以 ping 本地网络中的任何设备。这是有效的,这是无效的:

我无法通过非 ipsec 盒的本地机器 ping 任何远程计算机。

这是我们的网络图:

[local ipsec box] ----------\
                             \
[arbitrary local computer] --[local gateway/router] -- [internet] -- [remote ipsec box] -- [arbitrary remote computer]

本地 ipsec 盒和任意本地计算机没有直接联系,而是通过网关/路由器进行通信。路由器已设置为将本地计算机对远程子网的请求转发到 ipsec 盒。这有效。

问题是 ipsec 框没有转发任何东西。

每当任意本地计算机 ping 远程子网上的某个内容时,都会得到以下响应:

[user@localhost ~]# ping 172.16.53.12
PING 172.16.53.12 (172.16.53.12) 56(84) bytes of data.
From 10.31.14.16 icmp_seq=1 Destination Host Prohibited
From 10.31.14.16 icmp_seq=2 Destination Host Prohibited
From 10.31.14.16 icmp_seq=3 Destination Host Prohibited

这是跟踪路由:

[root@localhost ~]# traceroute 172.16.53.12
traceroute to 172.16.53.12 (172.16.53.12), 30 hops max, 60 byte packets
 1  router.address.net (10.31.14.1)  0.374 ms  0.566 ms  0.651 ms
 2  10.31.14.16 (10.31.14.16)  2.068 ms  2.081 ms  2.100 ms
 3  10.31.14.16 (10.31.14.16)  2.132 ms !X  2.272 ms !X  2.312 ms !X

这是我们的 ipsec 盒正在到达的 IP,但是尚未被转发。

在 IPSec 框中,我在 /etc/sysctl.conf 中启用了 IP 转发 net.ipv4.ip_forward = 1

我已经尝试设置 IPTables 来转发:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [759:71213]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
-A INPUT -m policy --dir in --pol ipsec -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -s 10.31.14.0/24 -d 172.16.53.0/24 -j ACCEPT
-A FORWARD -m policy --dir in --pol ipsec -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

我在 IPTables 中遗漏了一条规则吗?我是不是忘记了什么?

注:所有机器都运行 CentOS 6.x 编辑:注 2:eth1 是本地 ipsec 盒上唯一的网络接口。

答案1

在查看并遵循您的建议后,我决定重新考虑一下我的方法,并发现了一个非常痛苦的错误。172.16.53.0/24应该是172.16.53.0/28。现在效果很好。这个故事的寓意是:确保您的子网地址正确,伙计们!

相关内容