Netcat - Як прослуховувати порт TCP за допомогою IPv6 адреси?


13

Я використовую найновішу версію netcat ( v1.10-41.1), яка, схоже, не має можливості для IPv6-адрес (як це -6було у старих версіях nc).

Якщо я ввожу nc -lvnp 2222і перевіряю порти прослуховування netstat -punta, сервер, як видається, слухає на порту лише 2222для IPv4 адрес:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  

tcp6 не активний, як, наприклад, мій сервер apache2:

tcp6       0      0 :::80                   :::*                    LISTEN      -

Відповіді:


17

Існує щонайменше 3 або 4 різних реалізацій netcat, як це видно на Debian:

  • netcat- tradicional 1.10-41 оригінал, який не підтримує IPv6: можливо, те, що ви встановили.
  • netcat6, який був зроблений для пропонування IPv6 (старий, замінений).
  • netcat-openbsd 1.130-3. Підтримує IPv6.
  • ncat 7.70 + dfsg1-3, мабуть, трохи новіший, оскільки не в стабільній Debian, наданій nmap , підтримує IPv6.

Я б пішов на openbsd. Кожна версія може мати тонко різний синтаксис, тому будьте уважні.

До речі: socat - це набагато кращий інструмент, здатний реально зробити набагато більше, ніж netcat. Спробуйте спробувати!


2
Дивовижно. Дякуємо, що запропонували socatінструмент. Мабуть, є більше варіантів, і наступне: socat tcp6-listen:2222зробив роботу.
башбін

2
@bashbin, але трохи більше багатослівного в своєму синтаксисі. це було б socat tcp6-listen:2222,reuseaddr -(або, можливо, reuseportзамість цього), якщо ви хочете використовувати його двічі поспіль, коли сервер (команда socat) спочатку відключиться.
AB

4

Я вважаю, що функціональність ipv4 & ipv6 насправді є результатом плутанини навколо того, що існує багато реалізацій (fork) або зовсім інші версії. Якщо ви шукаєте, ви натрапите на згадки про nc6. Здається, ця реалізація знаходиться в дистрибутиві, заснованому на BSD.

Я б спробував встановити nc6ваш конкретний дистрибутив і запустити його замість ncпідтримки ipv6.

Подальші дослідження

Мені вдалося знайти цю фіксацію від 2018-01-11- додати патч IPv6, який чітко додає функціональність IPv6 назад до того, що ви називаєте новою версією netcat.

ПРИМІТКА. У моїх системах є доступ до nc 7.50, і він, як ви описуєте, підтримує і -4і -6.

Я підозрюю, що ви вважаєте, що новіша версія netcat насправді є значно старшою версією: http://nc110.sourceforge.net/ .

Якщо ви хочете вичерпний перелік різних реалізацій, це доступно у питанні Вікіпедії про Netcat .

Оригінальною версією netcat була програма Unix. Остання версія (1.10) була випущена в березні 1996 року. 1

У більшості дистрибутивів Linux найчастіше використовується GNU netcat або версія NMAP:

Існує кілька реалізацій на системах POSIX , включаючи переписування з нуля, як GNU netcat [5] або OpenBSD netcat, 6 з яких підтримує IPv6 та TLS . Версія OpenBSD перенесена на базу FreeBSD 7 та Windows / Cygwin. 8 Mac OS X поставляється з netcat, встановленим на OSX 10.13, або користувачі можуть використовувати MacPorts для встановлення варіанту. [9] Також доступна версія Microsoft Windows Netcat. [10]

Наприклад, на CentOS 7.x:

$ nc --version
Ncat: Version 7.50 ( https://nmap.org/ncat )

$ rpm -qf /bin/nc
nmap-ncat-6.40-13.el7.x86_64
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.