从特定接口执行 ping 操作时出现问题

从特定接口执行 ping 操作时出现问题

我正在尝试从特定接口进行 ping 操作,我的笔记本电脑上有有线和无线连接。

我的有线适配器eth0的 IP 为 172.16.109.75
我的 WiFi 适配器wlan0的 IP 为 192.168.1.69

eth0当我使用以下命令在拔掉电源的情况下 ping google 时:

conneco@mcr-pc-29334:~$ ping -I wlan0 www.google.co.uk
PING www.l.google.com (74.125.230.115) from 192.168.1.69 wlan0: 56(84) bytes of data.
64 bytes from 74.125.230.115: icmp_seq=1 ttl=51 time=32.7 ms
64 bytes from 74.125.230.115: icmp_seq=2 ttl=52 time=28.7 ms
64 bytes from 74.125.230.115: icmp_seq=3 ttl=52 time=28.9 ms
64 bytes from 74.125.230.115: icmp_seq=4 ttl=52 time=28.3 ms

正如预期的那样,它工作得很好。我插入eth0电缆并再次运行相同的操作:

conneco@mcr-pc-29334:~$ ping -I wlan0 www.google.co.uk
PING www.l.google.com (74.125.230.112) from 172.16.109.75 wlan0: 56(84) bytes of data.
From mcr-pc-29334.local (192.168.1.69) icmp_seq=2 Destination Host Unreachable
From mcr-pc-29334.local (192.168.1.69) icmp_seq=3 Destination Host Unreachable
From mcr-pc-29334.local (192.168.1.69) icmp_seq=4 Destination Host Unreachable
From mcr-pc-29334.local (192.168.1.69) icmp_seq=5 Destination Host Unreachable
From mcr-pc-29334.local (192.168.1.69) icmp_seq=6 Destination Host Unreachable
From mcr-pc-29334.local (192.168.1.69) icmp_seq=7 Destination Host Unreachable

从顶部的输出来看,它似乎是从eth0(在工作中无法 ping 因为它被阻止)发送的,但这wifi是另一个链接到一个单独的网络,我直接在网上,因此发送来自 的 ping 请求wlan0应该有效。发生了什么?我应该如何修复它?

答案1

可能是,当插入以太网电缆时,您的默认路由网关会通过 dhcp 更改。您从 wlan0 发送数据包,但您的系统不知道将它们转发到的网关是谁。这样,您只能 ping 通 192.168.1 网络内的系统,而不能 ping 更远的系统。如果您想从谷歌服务器获得回复,您必须将默认网关更改回无线路由器,或者为此服务器添加特定路由。

route add -host 74.125.230.112/32 gw 192.168.1.1 # assuming 192.168.1.1 is the wireless router's ip

答案2

SystemWide,只能有一个默认网关,也只能有一张SystemWide路由表。不完全正确,但足够了。

NicWide,每个网卡可以有一个默认网关。每个网卡都可以有自己单独的路由表。

简而言之,熟悉ip routeip rule和 /etc/iproute2/rt_tables。看这个 ”两个默认路由“ 教程。

http://www.rjsystems.nl/en/2100-adv-routing.php

答案3

我的例子

# echo "203 T3" >> /etc/iproute2/rt_tables
# apt install -y sipcalc
WNET=$(sipcalc -I wlp2s0 | grep "Network address" | awk '{print $4}')
WBIT=$(sipcalc -I wlp2s0 | grep "Network mask (bits)" | awk '{print $5}')
WLAN_NET="$WNET/$WBIT"

ip route add default via $GW_WLAN table T3
ip route add $WLAN_NET via $GW_WLAN table T3
ip rule add from $WLAN_NET table T3

# Tests
ip rule list
ping -I enp3s0 8.8.8.8
ping -I wlp2s0 8.8.8.8

相关内容