我有 2 台通过 ipsec VPN 连接的 Linux 机器。[PC1] 可以正确 ping [4G-GW]。
我需要允许 [PC1] 通过 VPN 另一端的 [4G-GW] 进行导航。
因此,我尝试在左侧网关接口上添加一个额外的 IP,
ifconfig eth0:1 192.168.1.11
并配置[PC1]使用GW 192.168.1.11。
我添加了以下规则:
iptables -t nat -A PREROUTING -s 192.168.1.2/32 -d 192.168.1.11/32 -j DNAT --to-destination 192.168.2.2
iptables -t nat -A POSTROUTING -s 192.168.2.2/32 -d 192.168.1.2/32 -j SNAT --to-source 192.168.1.11
从 [PC1] 到 [4G-GW] 的 ping 操作正常,但是 [PC1] 无法导航。
有什么问题?谢谢
-- 按要求编辑:
[PC1]:
ip route show
default via 192.168.1.11 dev eth0
127.0.0.0/8 dev lo scope link
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
[第一重击]:
root:~# ip route show
default via 192.168.0.1 dev eth0
127.0.0.0/8 dev lo scope link
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.4
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1
[第二季]:
root:~# ip route show
default via 192.168.1.1 dev eth0
127.0.0.0/8 dev lo scope link
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.4
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.1
4G路由器是硬件设备。 布局_带有_光纤_路由器
-- 更新 [GW1] 和 [GW2] 建立 VPN
[GW1](主机 vpnhome)
root@vpnhome:~# ipsec status
Security Associations (1 up, 0 connecting):
sinigo-to-home[9]: ESTABLISHED 28 minutes ago, 192.168.0.4[aaaa.ns0.it]...87.A.A.A[xxxx]
sinigo-to-home{9}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cea445de_i cb317c99_o
sinigo-to-home{9}: 192.168.1.0/24 === 192.168.2.0/24
root@vpnhome:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::8639:beff:fe6d:d17e prefixlen 64 scopeid 0x20<link>
ether 84:39:be:6d:d1:7e txqueuelen 1000 (Ethernet)
RX packets 44320 bytes 3064750 (2.9 MiB)
RX errors 0 dropped 9 overruns 0 frame 0
TX packets 9686 bytes 734844 (717.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::8639:beff:fe6d:d17f prefixlen 64 scopeid 0x20<link>
ether 84:39:be:6d:d1:7f txqueuelen 1000 (Ethernet)
RX packets 429 bytes 57346 (56.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 744 bytes 72568 (70.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.11 netmask 255.255.255.0 broadcast 192.168.1.255
ether 84:39:be:6d:d1:7f txqueuelen 1000 (Ethernet)
我没有看到 VPN 接口
[GW2](主机 vpnsinigo)
root@vpnsinigo:~# ipsec status
Security Associations (1 up, 0 connecting):
sinigo-to-home[54]: ESTABLISHED 31 minutes ago, 192.168.1.4[xxx]...2.Y.Y.Y[yyyyy]
sinigo-to-home{51}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: cb317c99_i cea445de_o
sinigo-to-home{51}: 192.168.2.0/24 === 192.168.1.0/24
root@vpnsinigo:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::230:18ff:fe03:c652 prefixlen 64 scopeid 0x20<link>
ether 00:30:18:03:c6:52 txqueuelen 1000 (Ethernet)
RX packets 228925 bytes 16151386 (15.4 MiB)
RX errors 0 dropped 14 overruns 0 frame 0
TX packets 46461 bytes 4461111 (4.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::230:18ff:fe03:c653 prefixlen 64 scopeid 0x20<link>
ether 00:30:18:03:c6:53 txqueuelen 1000 (Ethernet)
RX packets 62716 bytes 5404945 (5.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1589 bytes 235272 (229.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
答案1
如果我从您提供的附加数据中正确理解了您的 VPN 的工作原理,它看起来“直接”(在第 3 层)将 GW1 上的 Eth1 连接到 GW2 上的 Eth0 - 它们的工作方式就像它们在同一个子网上一样。要验证这一点,请尝试从 PC1 ping 192.168.1.4。如果它回答,那么您可能可以直接从 PC1 访问 GW2。
因此,GW1 上的 NAT 规则可能根本没有应用。也许要应用它们,它们实际上应该在 GW2 上,而不是在 GW1 上。
192.168.1.11 回复 ping,但很可能只是eth1:1
GW1 上的接口回复了 ping。要验证您是否真的到达了 192.168.1.11 下的 4G-GW,请尝试通过此地址从 PC1 连接到路由器的管理面板。如果您真的到达了路由器,它应该会成功。如果没有 - 那么只是 GW1 在应答,它不会将连接转发到任何地方。
我不确定您是否需要该 NAT。如果您能够从 PC1 ping 192.168.1.4,请尝试删除 NAT 规则和接口,eth1:1
并将 PC1 上的默认网关设置为 192.168.1.4。然后检查您是否能够 ping 192.168.2.2。如果这也成功,请将 GW2 上的默认网关设置为 192.168.2.2。您现在应该能够从 PC1 访问互联网。
如果无法更改 GW2 上的默认网关,请尝试将 PC1 上的默认网关直接设置为 192.168.2.2,并通过 192.168.1.4 添加到 192.168.2.2 的路由(也在 PC1 上),以允许 PC1 到达其网关。
如果这些方法有效,请告诉我。
答案2
PC1、GW1 和 GW2 都有 slackware。因此,我对 PC1 进行了以下操作:
- 删除了默认网关
route add -host 192.168.2.2 gw 192.168.1.1
现在route -n
说:
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.2 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
但当我尝试执行时
route add -net default gw 192.168.2.2
PC1说
SIOCADDRT: Network is unreachable
我可以 ping 并连接到 192.168.2.2 的 Web 界面,但无法连接到世界其他地方