Получить интерфейс и IP-адрес, используемый для подключения к определенному хосту (ip)
Я уверен, что об этом уже спрашивали и отвечали, но я не смог найти его, так что, надеюсь, это по крайней мере свяжет кого-то с нужным местом.
Я хочу узнать мой локальный интерфейс и IP-адрес, используемый для достижения определенного хоста. Например, если к моему устройству подключено 3 адаптера, и все три подключены к разным сетям, я хотел бы знать, какой из трех (в частности, его IP-адрес) используется для доступа к my.local.intranet (в этом случай, это был бы туннельный интерфейс vpn). Я подозреваю, что это работа для ifconfig или traceroute, но я не смог найти правильные ключи.
Я использую OSX 10.7 (Дарвин)
РЕДАКТИРОВАТЬ: Для легкого доступа, это то, что я в конечном итоге написал, чтобы сделать трюк:
ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/"
Любые улучшения / оптимизации приветствуются.
4 ответа
Вы можете попробовать "route" напечатать свою таблицу маршрутизации, которая покажет вам сети назначения и шлюзы для ваших различных интерфейсов.
Если IP-адреса не помогают вам легко определить интерфейс, запустите "traceroute" после выполнения маршрута, посмотрите на первый прыжок и сравните его со связанными шлюзами из "route" и вуаля - это ваш интерфейс.
#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. ...
Ты можешь использовать 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
Я не уверен, что это правильно, но 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