web-dev-qa-db-ja.com

「iprouteshow」の出力は不完全なようです。デフォルトルートはありませんが、とにかくインターネットにアクセスできます。

私の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

この魔法のデフォルトルートはどこから来ていますか?

1
Luc

標準 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

上記のリストのテーブル番号なども同様です。

2
RalfFriedl