Как узнать в Linux, какой сетевой интерфейс и IP-адрес источника используется для маршрута к конкретному хосту назначения?

16

Если у меня несколько сетевых интерфейсов (здесь: 2) на компьютере с Linux (здесь: Debian Lenny). Как узнать, по какому сетевому интерфейсу (NIC) идет маршрут к определенному хосту назначения и какой IP-адрес источника используется по умолчанию?

Я имею хотя использования

ping -I nic1 desthost.example.com
ping -I nic2 desthost.example.com

также посмотрите, возможны ли оба пути. (Здесь: возможны оба пути)

Я посмотрел таблицу маршрутизации

ip route show

Но это довольно сложно, поэтому я подумал, что нужно с помощью небольшого простого инструмента просто сказать мне:

«На хост назначения desthost.example.com требуется интерфейс nicX и IP-адрес источника 10.0.0.1»

Какой самый простой способ получить эту информацию?

(И я бы предпочел не использовать tcpdump и устанавливать интерфейсы в смешанном режиме.)

Благодарю.

Sandoz
источник

Ответы:

39

Использование ip route get <ip>.

weeheavy
источник
1
И чтобы получить только интерфейс:ip -o route get $ipaddress | perl -nle 'if(/dev\s+(\S+)/) {print $1}'
mivk
2
илиip -o route get $ipaddress | awk '{ print $5 }'
ShadowFlame
0

как насчет route -C

Jure1873
источник
маршрут устарел. используйте iproute2.
madCode
0

Я использую netstat -Wcatnp. Вы должны попробовать эту команду.

fmysky
источник
0

Еще проще, я бы сказал, nm-toolи если вы хотите только соответствующую строку nm-tool | grep Device. Это должно вывести:

- Device: wlan0  [My router name] -----------------------------------------------
Buzut
источник