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      -
bashbin
источник

Ответы:

17

Существует как минимум 3 или 4 разных реализации netcat, как видно на Debian:

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

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

Кстати, socat - гораздо лучший инструмент, способный сделать гораздо больше, чем netcat. Тебе стоит попробовать это!

AB
источник
2
Потрясающие. Спасибо за предложение socatинструмента. У него, видимо, гораздо больше вариантов, и следующее: socat tcp6-listen:2222сделал работу.
Башбин
2
@bashbin, но немного более многословен в своем синтаксисе. это было бы socat tcp6-listen:2222,reuseaddr -(или, вероятно, reuseportвместо этого), если вы хотите использовать его дважды подряд, когда сервер (команда socat) отключается первым.
AB
4

Я полагаю, что функциональность ipv4 и ipv6 на самом деле является результатом путаницы вокруг множества реализаций (вилок) или совершенно разных версий. Если вы будете искать, вы наткнетесь на упоминания о 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 base 7 и Windows / Cygwin. 8 Mac OS X поставляется с Netcat, установленным с OSX 10.13, или пользователи могут использовать MacPorts для установки варианта. [9] Также доступна версия netcat для Microsoft Windows. [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
SLM
источник