Чи можливо захопити пакети маршрутизатора?


2

Я стикаюся з проблемою, що деякі пакети, відправлені в Інтернет з мережі, відсутні. Шаблон, який ми використовуємо, такий:

  Client A ←→ Switch A ← Router A:NAT ← .. Network .. 
     → Router B:NAT → Switch B ←→ Server B

Щоб відстежити проблему, потрібно зробити два кроки нижче:

  1. Захоплення пакетів, які є з клієнта A на маршрутизаторі B.
  2. Перевірте таблицю перекладу маршрутизатора B.

Чи можливі обидві дії?

Більше інформації:

  1. Клієнт A працює на Windows XP
  2. Сервер B працює на Linux (саме Fedora).
  3. Маршрутизатор B використовує статичний порт і таблицю перекладу адреси, що означає вхідні пакети
    до конкретного порту буде переслано на сервер B.
  4. І Routera, і Routerb є продуктами TP Link WR340 +.
  5. Як маршрутизатор A, так і маршрутизатор B мають повноконусний NAT.
  6. Перемикач A - це DLink DES-1024R, а комутатор B - DLink DES-1016D.

Причина, чому я хочу виконати дві дії, полягає в тому, що знайдені пакети були відправлені з мережевого інтерфейсу ClientA, але через невідому причину ядро ​​TCP клієнтської машини ніколи не отримує будь-який пакет ACK з іншої кінцевої точки, таким чином він вводить дані передачі до тайм-ауту. І з боку сервера, також використовуючи інструмент WireShark, ми виявили, що мережевий інтерфейс машини B сервера ніколи не отримує пакет, надісланий від клієнта A. Я думаю, що пакети були відкинуті маршрутизатором B, так що мені цікаво, чи можна захопити пакети на маршрутизаторі. B.

Насправді проблема виникає тільки тоді, коли у нас є два клієнти, кажучи, що це клієнт A і клієнт C. Клієнт A і клієнт C не спілкуються безпосередньо один з одним, а спілкуються з сервером B замість нього.

Проблема виникла, коли ми відключили мережний кабель від апарата Client A і на іншому комп'ютері, увійшовши в Client A приблизно за 30 секунд, клієнт A на новій машині почне TCP зв'язок з сервером B, перші багато команд - OK, але після більше не може отримувати жодних команд від клієнта.

Відповіді:


2

Сервер B ніколи не отримував пакет

Якщо ви запустите Wireshark з сервера B, це нормально; якщо не, будь ласка, подумайте, що вам знадобиться керований перемикач, який налаштовує порт "дзеркало / проліт / монітор", де ви підключаєтеся до ПК Wireshark.

Я б дотримувався Wireshark, переміщаючи його, щоб побачити пакети між маршрутизатором B і комутатором B (можна додати концентратор між ними, щоб вставити ПК wireshark?)

якщо пакет не потрапляє в сегмент RouterB-SwitchB, то перенаправлення порту на маршрутизаторі B (для того, щоб обійти його служби NAT) може не працювати правильно, або маршрутизатор просто не маршрутизує трафік.


Завдяки Pat. Але хіба будь-яка інша частина Інтернету не викине пакети? Ви маєте на увазі, що пакети досягатимуть маршрутизатор B, а маршрутизатор B може їх скинути? Я додав набагато більше інформації, сподіваюся, що це допоможе.

Якщо ваш протокол заснований на протоколі TCP, Інтернет буде відновлено з падіння. Якщо ви базуєтеся на UDP, звичайно, ні. Нова інформація про двох клієнтів трохи заплутує; Маршрутизатори не знають про клієнта A-B, який вони просто знають про IP-трафік. Те, що ви описуєте клієнта A відключеним і повторно зареєстрованим на іншому IP-адресі і не вдалося звучить, є більш проблемою більш високого рівня, ніж IP-пакет, який не досягає долі. Спочатку ви повинні спробувати побачити, чи невдала ваша програма, або мережа.
Pat

Так, протокол базується на протоколі TCP, і це було для передачі файлів. Насправді я також вважаю, що це, швидше за все, проблема більш високого рівня. Але ми не можемо з'ясувати, яким чином програма викликає пакети ACK TCP ядра (від сервера B до клієнта A) відсутні (здається, не досягає ядра TCP клієнта).

Я спробую захопити пакети з комутатора, оскільки ми не можемо безпосередньо захопити пакети від маршрутизаторів tplink. Дякую.
Steve Peng

0

Я думаю, що важливо отримати більше інформації, комутатори не роблять NAT (але роутери роблять), і різні маршрутизатори мають дуже різні можливості. Я ніколи не чув, що термін "перевірка таблиці перекладу" при зверненні до комутаторів або маршрутизаторів, але я розумію, що ви маєте на увазі стосовно маршрутизаторів.

Ви, швидше за все, знайдете знання про NAT і перевірку таблиць перекладу і т.д. Першим інструментом, яким я користуюся, є "WinMTR" від Клієнта А. Залишайте це трохи (хвилини?), А також переконайтеся, що відбувається втрата пакетів. Це дасть вам гарну ідею, куди дивитися далі. [Дивившися на затримки і сплески затримок, ви також отримаєте деякі підказки, якщо ви знаєте, на що дивитися].

Для того, щоб хтось надав додаткову допомогу, ви можете надати більш детальну інформацію про те, чому ви вважаєте, що пакети відсутні, та характеристики проблеми.


Завдяки David. Причина, чому я хочу виконати дві дії, полягає в тому, що знайдені пакети були відправлені з мережевого інтерфейсу ClientA, але через невідому причину ядро ​​TCP клієнтської машини ніколи не отримує будь-який пакет ACK з іншої кінцевої точки, таким чином він вводить дані передачі до тайм-ауту. І з боку сервера, також за допомогою Tool WireShark ми виявили, що мережевий інтерфейс машини B сервера ніколи не отримує пакет, відправлений від клієнта A, звичайно, він не зміг відправити будь-який пакет ACK назад до ClientA.

Я не впевнений, що ви маєте на увазі використання WinMTR від Клієнта А. Я хочу перевірити будь-яку річ з наступного: 1) Пакети досягли комутатора B, але були зняті з якоїсь причини? 2) Якщо таблиця перекладу адрес на комутаторі B містить правильну інформацію, яка повинна дозволити комутатору пересилати вхідні пакети на правий внутрішній хост - тут сервер B? Чи можна зробити будь-який з них за допомогою WinMTR з клієнта або сервера B?

Девід, я додав більше інформації про топологію, яку ми використовуємо.

0

Ось короткий огляд декількох ідей, і, можливо, інші знають, як це зробити в деталях.

Використовуйте маршрутизатор Linux.

Можливо, томатний або DDWRT може. Так що якщо ваш маршрутизатор підтримує цю прошивку / якщо ви придбали той, який підтримує його, ви можете спробувати це.

Ви прокоментували "The reason why I want to perform the two actions is that we found packets were sent out of the network interface of ClientA, but due to unknown reason the TCP kernel of ClientA machine never receives any ACK packet from the other endpoint, thus it enters data transmission until timeout. And from the server side, also using Tool WireShark we found the network interface of Server B machine never receives the packet sent from client A, of course it was not able to send any ACK packet back to ClientA."

Можливо, пошкоджений маршрутизатор, або у вас несправний кабель.

Мені дуже подобаються цікаві ідеї про те, як побачити, що відбувається на вашому маршрутизаторі, можливо, це можливо за допомогою любителя маршрутизатора або кращого програмного забезпечення. Але якщо ви можете / хочете зробити це, то ви, ймовірно, мати або потрібен кращий маршрутизатор, або замінити один, щоб спробувати. Не забувайте про основні методи усунення несправностей, логіку типу мавпи, як обмін частинами!

Чи є це лише один спосіб, який має проблему? подібно A -> B. Або B- & gt; Ви можете усунути неполадки, подібні до заміни кабелів. перемикання портів, до яких вони підключені.


Завдяки балопу, в обох напрямках є проблема, яка означає, що пакети з Sever B також не можуть досягти певного порту клієнта A. Я додав набагато більше інформації, сподіваюся, що це допоможе.

ehh, в даний час я не в змозі отримати кращий маршрутизатор, перш за все ми ще не впевнені, що це проблема маршрутизатора викликає цю проблему. Тоді я знаю якийсь маршрутизатор, як продукт Cisco, але це занадто дорого, як десятки тисяч доларів !!

@ StevePeng Я не пропонував отримати кращий пристрій маршрутизатора! Я запропонував змінити маршрутизатор (и) на будь-який маршрутизатор, це не для захоплення пакетів, але щоб побачити, якщо після зміни маршрутизаторів у вас все ще є проблема. Це діагностичний крок, щоб перевірити, чи це питання маршрутизатора, і буде зроблено, оскільки він не впевнений, що це питання маршрутизатора. А отримання "будь-якого" маршрутизатора не дорого.
barlop

@ StevePeng Інша річ, яку я згадав, що можна було назвати зміною маршрутизатора, був маршрутизатором linux machine. Linux може працювати на старому комп'ютері, який хтось може роздавати (або невеликий пристрій, розроблений як маршрутизатор linux, тому карта w / router pci і вільне програмне забезпечення, а не сотні доларів), але просто навіть старий комп'ютер і просто потрібен маршрутизатор PCI-карта (і технічне ноу-хау) і може також захоплювати. Також має бути можливим налаштувати машину Windows як маршрутизатор (і тоді ви можете, звичайно, захопити теж).
barlop
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.