特定のインターフェイスでpingを試していますが、ラップトップに有線および無線接続があります。
有線アダプタのIPeth0
は172.16.109.75、
WiFiアダプタのIPはwlan0
192.168.1.69です。
eth0
次のコマンドを使用してプラグを抜いている間にGoogleにpingを実行した場合:
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 からパケットを送信しますが、システムはパケットを転送するゲートウェイが誰であるかを知ることはできません。このようにして、192.168.1ネットワーク内のシステムにのみpingを実行でき、より遠くにあるシステムにはpingを実行できません。 Googleサーバーから応答を受け取るには、デフォルトゲートウェイをワイヤレスルーターに戻すか、このサーバーへの特定のルートを追加する必要があります。
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には、1つのデフォルトゲートウェイと1つのSystemWideルーティングテーブルしかありません。正確ではありませんが、十分です。
NicWideでは、各ネットワークカードにデフォルトゲートウェイがある可能性があります。各ネットワークカードには別々のルーティングテーブルがあります。
簡単に言うとip route
、ip rule
および/etc/iproute2/rt_tablesに慣れてください。これを見てください」2 つの基本パス「マップ時間。
答え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