ユーザースペース(apt、GNUツール、chrootで実行され、sshを介してアクセスできる他のソフトウェア)でDebianシステムを実行しているAndroid携帯電話では、ルーティングテーブルが不完全なようです。
出力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
標準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
上のリストのテーブル番号などが推論されます。