私のAndroid電話では、ユーザースペースでDebianシステムを実行しています(apt、GNUツール、およびその他のソフトウェアはsshからアクセス可能なchrootで実行されます) 、ルーティングテーブルが不完全なようです。
ip route -all -details show
の出力:
unicast 192.168.2.0/24 dev wlan0 proto kernel scope link src 192.168.2.108
unicast 192.168.43.0/24 dev p2p-p2p0-0 proto kernel scope link src 192.168.43.1
ip route get 1.1.1.1
の出力:
1.1.1.1 via 192.168.2.1 via ??? ??? dev wlan0 src 192.168.2.108
cache
どこから192.168.2.1
を取得しますか?これは確かに正しいゲートウェイですが、ルーティングテーブルの出力には表示されません。外部アドレスにもアクセスできます。
私の正気を疑って、私は別のツールを試しました、そしてそれが私に同じ出力を与えたとき、私はカーネルに直接尋ねる方法を見つけました:
$ route -v
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
192.168.43.0 0.0.0.0 255.255.255.0 U 0 0 0 p2p-p2p0-0
$ cat /proc/net/route
Iface Destination Gateway Flags RefCnt Use Metric Mask MTU Window IRTT
wlan0 0002A8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0
p2p-p2p0-0 002BA8C0 00000000 0001 0 0 0 00FFFFFF 0 0 0
デバイスは「WiFiブリッジ」モードで動作しており、WiFiネットワークに接続され、同時にホットスポットを提供します。したがって、2つのローカルネットワーク。カーネルは次のとおりです。
$ uname -a
Linux localhost 4.1.18-g0fcbc9f #1 SMP PREEMPT Thu Dec 28 10:57:06 CST 2017 armv7l GNU/Linux
この魔法のデフォルトルートはどこから来ていますか?
標準 ip route
プログラムはオプションを知りません-all
または-details
なので、おそらくここにAndroid特定のバージョンがあります。
デフォルト以外のルーティングエントリがテーブルにある可能性があります。
ip
コマンドが標準のip
と互換性があると仮定して、
ip rule
少なくともテーブルのリストが表示されるはずです
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
次に、それらのそれぞれを調べることができます
ip route show table 32767
上記のリストのテーブル番号なども同様です。