Як сказати, на якому інтерфейсі буде виходити з'єднання TCP?


10

У мене є сервер з декількома інтерфейсами Ethernet. Який найпростіший спосіб сказати, над яким інтерфейсом вихідне TCP-з'єднання вийде? Результати "netstat -rn" для мене грецькі, тому, якщо ваша відповідь - "подивіться в локальну таблицю маршрутизації", будь ласка, будьте детальними та зрозумілими.

Відповіді:


13

Для мене я бачу, який інтерфейс у мене є там, використовуючи netstat -rnабоroute -n

cyrex@cyrex:~$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.48.0.1      0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.48.0.0      0.0.0.0         255.255.224.0   U         0 0          0 eth0

Або netstat -r

cyrex@cyrex:~$ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         192-48-0-1.dyn. 0.0.0.0         UG        0 0          0 eth0
link-local      *               255.255.0.0     U         0 0          0 eth0
192.48.0.0      *               255.255.224.0   U         0 0          0 eth0

В обох випадках я бачу назву інтерфейсу в кінці, в даному випадку це eth0

Інформація, подана цими командами, наведена нижче (джерело знайдено тут ):

Місце призначення - мережа призначення або хост призначення.

Шлюз - адреса шлюзу або *якщо його немає.

Genmask - мережева маска для мережі призначення.

 255.255.255.255 for the host destination.
 0.0.0.0 for the default route.  

Прапори - можливі прапори включають:

 U (route is up)  
 H (target is a host)  
 G (using gateway)  
 R (reinstate route for dynamic routing)  
 D (dynamically installed by daemon or redirect)  
 M (modified from routing daemon or redirect)  
 A (installed by addrconf)  
 C (cache entry)  
 ! (reject route)  

MSS - максимальний розмір сегмента за замовчуванням для з'єднань TCP по цьому маршруту.

Вікно - розмір вікна за замовчуванням для з'єднань TCP по цьому маршруту.

irtt - початковий RTT (час в обидва кінці ). Ядро використовує це для здогадки про найкращі параметри протоколу TCP, не чекаючи на (можливо повільні) відповіді.

Iface - інтерфейс, до якого будуть відправлені пакети для цього маршруту.

Іншими полями можуть бути:

Метричний - Відстань до цілі (зазвичай рахується у стрибках). Він не використовується останніми ядрами, але може знадобитися маршрутизацією демонів.

Ref - Кількість посилань на цей маршрут. (Не використовується в ядрі Linux.)

Використання - кількість підказок для маршруту. Залежно від використання -F і -C це буде або пропустити кеш маршруту (-F), або хіти (-C).

HH (тільки в кешеному режимі) - кількість записів ARP та кешованих маршрутів, які посилаються на кеш апаратного заголовка для кешованого маршруту. Це буде -1, якщо для інтерфейсу кешованого маршруту не потрібна апаратна адреса (наприклад, lo).

Arp (лише в кешованому режимі) - актуальна версія апаратури для кешованого маршруту чи ні.

Тепер до питання. Найпростіший спосіб, який я зараз пам'ятаю (як завжди, є кілька способів зробити те саме) - це використання iptraf. Просто встановіть його:

sudo apt-get install iptraf

і запустіть його з кореневими привілеями: sudo iptraf

У меню iptrafвиберіть IP Monitor Monitor і виберіть Усі інтерфейси . Це повинно показати вам всі TCP-з'єднання та до якого інтерфейсу вони пов’язані. Це термінальна база, яка корисна для моніторингу.


Гарна відповідь Луїс. Ви також можете скористатися командоюroute
Пантера

1
Замість того , скажімо піти подивитися і побачити , де він дійсно йде, правильна відповідь повинна сказати з огляду на цю маршрутну інформацію таблиці, ви можете побачити , де трафік для даної адреси буде йти.
psusi

8

Ви можете запитувати таблиці маршрутизації ядра за допомогою ipкоманди. Його route getсубкоманди покаже вам точно , як ядро буде маршрут пакета на адресу одержувача:

 $ ip route get to 10.0.2.2
 10.0.2.2 dev eth0  src 10.0.2.15

тоді як

$ ip route get to 192.168.3.5
192.168.3.5 via 10.0.2.2 dev eth0  src 10.0.2.15

і

$ ip route get to 127.0.1.1
local 127.0.1.1 dev lo  src 127.0.0.1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.