2つのIPアドレスを持つインターフェースを備えたマシンがあります。
inet 192.168.1.15/32 scope global eth0
inet 10.10.118.45/24 brd 10.10.118.255 scope global eth0:hosts4
たとえばip -s route get 8.8.8.8
、を実行すると、これに従って、出力パケットには送信元IPアドレスが含まれます10.10.118.45
。
8.8.8.8 via 10.10.118.254 dev eth0 src 10.10.118.45
cache users 1 used 1
しかし、私は、例えばping
またはSSH
に8.8.8.8
、[ソースIPです192.168.1.15
。
15:19:38.092508 IP 192.168.1.15 > 8.8.8.8: ICMP echo request, id 9135, seq 2, length 64
15:19:38.097962 IP 8.8.8.8 > 192.168.1.15: ICMP echo reply, id 9135, seq 2, length 64
この場合ip route get
、正しい送信元IPアドレスが表示されない理由は何ですか?
なんて
—
zeppelin 2017年
ip route show to match 8.8.8.8
言うの?
@Martin
—
JohanMyréen17年
ip route get
は、ルーティング選択アルゴリズムの結果を出力しsrc
、一致するルーティングテーブルエントリのフィールドから送信元アドレスを出力します。ただし、アプリケーションはアドレスをソケットにバインドできます。ソケットは、IPパケットのソースアドレスとして代わりに使用されます。送信元アドレスの選択を参照してください。多分あなたのpingプログラムはこれをしますか?(いくつかのpingプログラムがあります。どのパッケージからのものですか?)
ip rule list
何ですか?リストされている各テーブルの出力はip route list table $table
何ですか?