web-dev-qa-db-ja.com

特定のホスト(ip)への接続に使用されるインターフェースとIPアドレスを取得する

これは以前に尋ねられて答えられたと確信していますが、私はそれを見つけることができなかったので、うまくいけば、これは少なくとも誰かを正しい場所にリンクするでしょう。

特定のホストに到達するために使用するローカルインターフェイスとIPアドレスを確認したい。たとえば、ボックスに3つのアダプタを接続していて、3つすべてが異なるネットワークに接続している場合、my.local.intranetに到達するために3つ(具体的にはそのIPアドレス)が使用されていることを知りたい(この場合、それはvpnトンネルインターフェイスです)。これはifconfigまたはtracerouteの仕事だと思いますが、正しいスイッチを見つけることができませんでした。

OSX 10.7(Darwin)を実行しています

編集:簡単にアクセスできるように、これは私がトリックを終わらせるために書いたものです:

ifconfig `route get <Host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/"

任意の改善/最適化は大歓迎です。

7
umop

「ルート」を試して、さまざまなインターフェースの宛先ネットワークとゲートウェイを示すルーティングテーブルを印刷できます。

IPアドレスを使用してもインターフェイスを簡単に特定できない場合は、「traceroute」を実行し、ルートを実行した後、最初のホップを確認し、「ルート」からの関連付けられたゲートウェイと比較します。これがインターフェイスです。

#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
145.67.4.0      switch47        255.255.255.0     U     0      0      eth0
192.168.1.0     localrouter     255.255.255.0     U     0      0      eth1

#traceroute <destination>
1    switch47.ba.foo.com   (145.67.4.1)    0.5 ms  .....
2    xxxxx.xxx.xxxx        (xxx.xxx.xxx.xxx)   0.Xms. ...
7
Univ426

route -n get www.yahoo.com

私はOS x 10.6.8を実行しています

11
Samir Sogay

ip route getを使用すると、指定した宛先に使用されるルートを検索して出力できます。出力には、インターフェイスと送信元アドレスが含まれている必要があります。

% ip route get 8.8.8.8
8.8.8.8 via 172.16.4.1 dev eth1  src 172.16.4.36
3
mgorven

これが正しいかどうかはわかりませんが、netstatがそれを行う可能性があります。確立された接続のローカルアドレスが表示されます。

# netstat -nt
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
...
tcp        0      0 192.168.1.61:44114      64.34.119.101:80        ESTABLISHED
tcp        0      0 192.168.1.61:36036      107.21.205.201:80       ESTABLISHED
1
facha