Як побачити в 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

Ще простіше, я б сказав, nm-toolі якщо ви хочете лише відповідного рядка nm-tool | grep Device. Це повинно вивести:

- Device: wlan0  [My router name] -----------------------------------------------
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.