Ошибка дескриптора файла Ncat при подключении клиента

Проблема

Я пытался использовать Ncat для просмотра TCP-трафика в виртуальной коробке CentOS. Однако на этой конкретной машине я не могу даже установить простую связь между сервером и клиентом.

Я открываю сокет TCP как «сервер» или слушатель (простите меня, если я ошибаюсь в правильной терминологии)

Терминал 1:

$ ncat -l 12345

Затем в отдельном терминале я инициирую клиентское соединение и пытаюсь отправить случайную строку:

Терминал 2:

$ ncat my_hostname 13245
 <Random string to send>

Это инициирует следующую ошибку с моего «сервера» TCP

Терминал 1:

close: Bad file descriptor

Терминал 2:

Ncat: Broken pipe.

Я выполнил эту точную последовательность команд через cygwin, и они отлично работают. Я не уверен, что может быть причиной этого (если только это не отсутствие root-прав? см. ниже). Ищу что-то для отладки. Если это права root или может быть, как я могу проверить это, не имея прав root?

Дополнительная (релевантная?) информация

я побежал

$ Ncat my_hostname <port that I know has a TCP connection>

и он выдал много тарабарщины. Между тем, когда я пытаюсь прослушать тот же порт с помощью tcpflow, он говорит мне, что у меня нет разрешения. Итак, может быть, это просто проблема с разрешениями, о которой Ncat мне явно не говорит? У меня нет root-прав на этой машине, поэтому я не могу проверить эту гипотезу.


person Bryce    schedule 23.05.2018    source источник
comment
У меня та же проблема, но запуск nc работает нормально. Можешь попробовать?   -  person lorenzog    schedule 25.05.2018
comment
@lorenzog, я пробовал это, но все еще не играл в кости.   -  person Bryce    schedule 25.05.2018


Ответы (1)


Я была такая же проблема. Я решил проблему, указав версию семейства протоколов. nc -4 // используя ipv4 можно попробовать

person LandyLiu    schedule 04.06.2018
comment
это сработало и для меня, используя ncat вместо nc (что, может быть, в точности то же самое?) Не уверен, но в любом случае спасибо! - person Bryce; 04.06.2018
comment
Могу подтвердить, что соединение работает для linux rhel 7. Я использую команду: nc -l -4 ‹port_number›, а затем в другом окне терминала: nc ‹host› ‹same_port_number› - person v01d; 12.03.2019
comment
Это связано с тем, что серверу не удалось запустить nc -l, а также не удалось запустить service iptables restart, в котором говорится, что другое приложение держит xtables, теперь nc -l -4 решило проблему nc, но я все еще понятия не имею, какое приложение держит xtables... - person UnixAgain; 20.04.2020