Назад | Перейти на главную страницу

Можно ли перехватывать пакеты маршрутизатора?

Я столкнулся с проблемой, что некоторые пакеты, отправленные в Интернет из внутренней сети, отсутствовали. Используемый нами шаблон выглядит так:

  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. И маршрутизатор A, и маршрутизатор B являются продуктами TPLink WR340 +.
  5. И маршрутизатор A, и маршрутизатор B имеют полноконусный NAT.
  6. Коммутатор A - это DLink DES-1024R, а коммутатор B - это DLink DES-1016D.

Причина, по которой я хочу выполнить эти два действия, заключается в том, что мы обнаружили, что пакеты были отправлены из сетевого интерфейса ClientA, но по неизвестной причине ядро ​​TCP машины ClientA никогда не получает никаких пакетов ACK от другой конечной точки, поэтому оно вводит данные передача до тайм-аута. И со стороны сервера, также используя Tool WireShark, мы обнаружили, что сетевой интерфейс машины Server B никогда не получает пакет, отправленный от клиента A. Я предполагаю, что пакеты были отброшены маршрутизатором B, поэтому мне интересно, можно ли захватывать пакеты на маршрутизаторе Б.

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

Проблема произошла, когда мы отсоединяем сетевой кабель машины клиента A и на другой машине регистрируемся в клиенте A примерно через 30 секунд, клиент A на новой машине начинает TCP-связь с сервером B, первые многие команды в порядке, но после этого сервера больше не может получать команды от клиента А.

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

Если вы запускаете Wireshark с сервера B, все в порядке; в противном случае подумайте, что вам понадобится управляемый коммутатор, настраивающий порт «зеркало / диапазон / мониторинг», через который вы подключаетесь к ПК Wireshark.

Я бы предпочел, чтобы Wireshark перемещал его, чтобы видеть пакеты между маршрутизатором B и коммутатором B (можете ли вы добавить концентратор между ними, чтобы вставить компьютер wirehark?)

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

Вот набросок некоторых идей, и, возможно, другие знают, как это реализовать в деталях.

Используйте маршрутизатор Linux.

Возможно, Tomato или 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-> A тоже? Вы можете немного устранить неполадки, например, поменять местами кабели. поменять местами порты, к которым они подключены.

Я думаю, что важно получить больше информации, коммутаторы не поддерживают NAT (а маршрутизаторы делают), а возможности разных маршрутизаторов сильно различаются. Я никогда не слышал термин «проверка таблицы перевода» применительно к коммутаторам или маршрутизаторам, но я понимаю, что вы имеете в виду в отношении маршрутизаторов.

Скорее всего, вы обнаружите, что знание NAT, проверка таблиц трансляции и т. Д. Намного менее ценно, чем использование простых сетевых инструментов. Первый инструмент, который я бы использовал, - это WinMTR от клиента A. Оставьте его поработать на некоторое время (минут?) И посмотрите, происходит ли и где потеря пакетов. Это даст вам очень хорошее представление о том, где искать дальше. [Анализ задержек и всплесков задержек также даст вам несколько подсказок, если вы знаете, на что смотреть].

Чтобы кто-то мог оказать дополнительную помощь, вы могли бы захотеть предоставить более подробную информацию о том, почему вы считаете, что пакеты пропадают, и о характеристиках проблемы.