Как узнать в 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 и устанавливать интерфейсы в смешанном режиме.)

Благодарю.

Ответы:


39

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


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

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


0

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

- Device: wlan0  [My router name] -----------------------------------------------
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.