我在 Linux 机器 (Slackware) 上使用带有 OpenWRT 的虚拟机进行路由。我尝试将主机专用接口 (eth0) 配置为 wan 接口。eth1 是作为桥接接口连接到以太网的。
我尝试测试对外部 IP 地址 (来自 OpenWRT) 的配置 ping。
# ping -I eth0 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C
--- 8.8.8.8 ping statistics ---
6 packets transmitted, 0 packets received, 100% packet loss
我使用 wireshark 发现系统(OpenWRT 端)正在发送 ARP 请求,要求获取 8.8.8.8 的 MAC 地址。这是怎么回事?看起来网关被忽略了。
我的路线:
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.56.1 0.0.0.0 UG 1 0 0 eth0
default 192.168.56.1 0.0.0.0 UG 5 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.56.0 * 255.255.255.0 U 5 0 0 eth0
Iptables 配置为接受所有数据包的输入、输出和转发。
更多测试:
# ping -I eth0 192.168.56.1
PING 192.168.56.1 (192.168.56.1): 56 data bytes
64 bytes from 192.168.56.1: seq=0 ttl=64 time=10.000 ms
64 bytes from 192.168.56.1: seq=1 ttl=64 time=0.000 ms
64 bytes from 192.168.56.1: seq=2 ttl=64 time=0.000 ms
64 bytes from 192.168.56.1: seq=3 ttl=64 time=0.000 ms
^C
--- 192.168.56.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.000/2.500/10.000 ms
。
# ip route show
default via 192.168.56.1 dev eth0 proto static metric 1
default via 192.168.56.1 dev eth0 proto static metric 5
192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.1
192.168.56.0/24 dev eth0 proto static scope link metric 5
答案1
您可能将默认路由设置为设备而不是网关 IP。检查ip route show
默认线路是否没有“通过 IP”部分。
编辑:抱歉,我现在看到了您的路由输出。但是,ip route show
这更有帮助,因为路由命令无法显示路由详细信息。另外奇怪的是,似乎有 2 个默认路由是相同的,希望 ip 能显示差异。
答案2
尝试在虚拟机上重新安装OpenWRT,但未能解决问题。
在主机上进行一些配置(路由和 iptables)后,问题消失了。很遗憾,我无法确定这个问题的确切原因。看起来有一个循环(路由器发送的数据包再次被路由器接收),因为主机上的配置错误,这在某种程度上导致了问题。
如果再次发生这种情况并且获得更多详细信息,我将编辑此答案。