Различное поведение netcat от telnet при подключении к общему серверу маршрутов - PullRequest
2 голосов
/ 16 августа 2010

Я наблюдал разное поведение между netcat и telnet при подключении к общедоступному серверу маршрутов bgp-view.tvnetwork.hu и выполнении команды show ip bgp.

Использование TelnetВывод (который обычно составляет несколько десятков тысяч строк) усекается, и для просмотра всего этого вам нужно нажать пробел или ввести, чтобы продолжить (например, страницы руководства).Когда я соединяюсь с netcat, он просто начинает сбрасывать весь вывод и после первых нескольких сотен строк зависает.Даже если я прямо заявляю, что хочу сделать паузу после первых 100 строк, используя команду terminal length 100 netcat не меняет поведение.

Есть ли у вас какие-либо идеи, почему это происходит и как это можно решить?Моя ОС - Ubuntu 10.4, а на сервере маршрутов работает Quagga (версия 0.99.5).С другими типами маршрутизаторов (cisco или juniper) такой проблемы не возникает.

Спасибо.

пс.Я хотел пометить вопрос как сервер маршрутов, но не могу создать новые теги: (

РЕДАКТИРОВАТЬ:

Проблема в том, что netcat не согласовывает размер окна (см. мой ответ ниже). Параметр -t Netcat используется для согласования параметров telnet, но он отвечает отрицаниями (НЕ или НЕ), поэтому вопрос заключается в том, как настроить netcat для согласования параметров telnet. Возможно, я опубликуюновый вопрос по этому вопросу.

Ответы [ 2 ]

1 голос
/ 21 августа 2010

ОК, тайна решена с помощью wireshark.

Проблема заключалась в согласовании параметров Telnet. Сервер запрашивает у клиента telnet «Обсудить размер окна» , но клиент не вел переговоры и даже с параметром -t netcat отвечает «Не будет согласовывать размер окна» .

Я создал клиент java telnet с библиотекой apache commons для согласования размера окна с помощью конструктора WindowSizeOptionHandler(), и он работает нормально. Теперь мне просто нужно найти способ сделать это с помощью netcat.

1 голос
/ 16 августа 2010

Я обнаружил аналогичное расхождение с SSH 1.5 на маршрутизаторах можжевельника.Когда я реализовывал инструмент сетевой топологии, мне пришлось использовать две разные библиотеки SSH в Java, чтобы все заработало.Я никогда полностью не диагностировал проблему, но похоже, что была проблема с тем, как одна из моих библиотек выполняла рукопожатие, в отличие от того, как ssh-сервер на маршрутизаторе ожидал, что что-то будет сделано.В этом случае мои соединения просто сбрасывались.Мне пришлось использовать четыре библиотеки для поддержки трех протоколов: telnet, ssh 1.5 и ssh 2.0.

Я бы совсем не удивился, если бы это была проблема, специфичная для маршрутизатора.К сожалению, у меня нет для вас полезных советов, кроме как попробовать другую библиотеку или программу для достижения ваших целей.Если вы хотите устранить проблему, вы можете наблюдать, как проходят пакеты.

Спасибо,

-Brian-

...