我有以下设置:
----PC----
10.8.0.1/24
--LINUX1--
10.8.0.6/24
192.168.1.3/24
--LINUX2--
192.168.1.1/24
我想从 PC ping LINUX2,反之亦然。我需要在相应的设备上添加哪些路由。
我在 Linux1 上运行了这个:
echo 1 > /proc/sys/net/ipv4/ip_forward
而且,据我所知,这应该足以在 LINUX1 上路由黑白网络,但我对此可能是错误的。
我已添加 10.8.0.3 作为 LINUX2 上的默认网关:
# route -e
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 ath0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
224.0.0.0 * 240.0.0.0 U 0 0 0 ath0
default 192.168.1.3 0.0.0.0 UG 0 0 0 ath0
之后我可以从 LINUX2 ping LINUX1 的两个接口,但我仍然无法 ping PC。
我在 PC 上添加了一条到 192.168.1.0/24 网络的路由,如下所示:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.20.1 192.168.20.90 20
10.8.0.0 255.255.255.0 10.8.0.2 10.8.0.1 30
10.8.0.0 255.255.255.252 On-link 10.8.0.1 286
10.8.0.1 255.255.255.255 On-link 10.8.0.1 286
10.8.0.3 255.255.255.255 On-link 10.8.0.1 286
127.0.0.0 255.0.0.0 On-link 127.0.0.1 306
127.0.0.1 255.255.255.255 On-link 127.0.0.1 306
127.255.255.255 255.255.255.255 On-link 127.0.0.1 306
169.254.0.0 255.255.0.0 On-link 192.168.126.1 296
169.254.255.255 255.255.255.255 On-link 192.168.126.1 276
192.168.1.0 255.255.255.0 10.8.0.6 10.8.0.1 33
192.168.20.0 255.255.255.0 On-link 192.168.20.90 276
但我仍然无法从 PC ping LINUX2。我只能从PC上ping通LINUX1的10.8.0.6接口,但无法ping通192.168.1.3。
如果重要的话,10.8.0.0 是一个 openVPN,192.168.1.0 只是一个 LAN。
答案1
除了默认网关之外,您还必须告诉PC
它可以通过以下方式到达LINUX2
(以及完整的 192.168.1.* LAN 网段)LINUX1
:
ip route add 192.168.1.0/24 via 10.8.0.6
你必须告诉LINUX2
它可以PC
通过以下方式到达LINUX1
:
ip route add 10.0.8.0/24 via 192.168.1.3
您已经在 上启用了转发LINUX1
,并且链路本地路由应该足够了。所以现在你应该能够ping 192.168.1.1
from PC
,也ping 10.8.0.1
能够 from LINUX2
。如果它不起作用,请使用tcpdump -i interface_name
(使用您要转储的网络接口)和进行调试ip route get ...
。