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

Простой клиент / сервер с неработающим NC

Почему следующее не работает?

У меня недавно установлена ​​система Debian 9. iptables широко открыт:

[···]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Я вхожу в систему на двух разных консолях (ну, два отдельных входа по ssh). В одном из них я бегаю:

[···]# nc -l 11115

Затем я перехожу к другой консоли и запускаю:

[···]# nc localhost 11115

и я получаю В соединении отказано ошибка:

[···]# nc localhost 11115
localhost [127.0.0.1] 11115 (?) : Connection refused

Я тоже пробовал nc 127.0.0.1 11115, пробовал с telnet --- всегда В соединении отказано.

Что касается "прослушивания", я также пробовал nc -l localhost 11115 --- нет разницы.

Что я упускаю или делаю не так?

[РЕДАКТИРОВАТЬ]: На компьютере с CentOS 6.9 точно такие же команды работают, как и ожидалось. То же самое и на моем домашнем Ubuntu 14.04. Я подумал, может быть, запуск от root делает nc запретить некоторые функции. Но нет, я просто попробовал как обычный пользователь на машине Debian 9, и все равно ничего не вышло. Есть идеи, почему?

На самом деле существует три (или более?) Разных программы, которые называются nc (netcat), которые являются форками или переписыванием одной и той же базовой программы, издавна и далекой.

По-видимому, в Debian по умолчанию используется то, что он называет netcat-traditional, древняя оригинальная версия. Я смог воспроизвести эту проблему с помощью netcat-Traditional; слушание кажется очень нарушенным. На самом деле он не привязывался к порту; Я не мог видеть это, слушая ss output, и я не видел попытки привязки при запуске под strace.

Другой доступный пакет Debian называется netcat-openbsd, который в настоящее время является форком оригинального netcat разработчиками OpenBSD. Вы должны обнаружить, что это работает, если вы установите этот пакет (и затем вы сможете удалить netcat-traditional).

Существует еще один пакет netcat, который используется системами на основе Red Hat, разработанный и поддерживаемый Федором из nmap и insecure.org и другими разработчиками. Он полностью переписан с нуля и не использует традиционный код netcat или BSD netcat. Тоже исправно работает. Имя его пакета (в системах Red Hat): nmap-ncat.

В Debian 2 пакеты netcat и переходный пакет , это будет относиться к netcat-традиционный

root@debian9:~# apt-cache search ^netcat
netcat - TCP/IP swiss army knife -- transitional package
netcat-traditional - TCP/IP swiss army knife
netcat-openbsd - TCP/IP swiss army knife
[../..]

Когда вы бежите несколько раз NC -l 11115 , nc прослушивает, но на случайном порту (кажется, случайным).

root@debian9:~# lsof -p $(pidof nc ) | grep LISTEN
nc      12734 root    3u  IPv4 11892054      0t0   TCP *:44907 (LISTEN)

На самом деле ты можешь бежать nc -l вместо того NC -l 11115 , и вы будете вести себя так же.

ДА netcat-традиционный это старое программное обеспечение, и некоторые простые ошибки не исправлены (в вашем примере отсутствует параметр -p ПОРТ для прослушивания .

Вы можете предпочесть netcat-openbsd , и он будет работать так, как вы ожидали.

root@debian9:/# lsof -p $( pidof nc ) | grep LISTEN
nc      2140 root    3u  IPv4  29855      0t0     TCP *:11115 (LISTEN)