Я использую новейшую версию 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 -
socat
инструмента. У него, видимо, гораздо больше вариантов, и следующее:socat tcp6-listen:2222
сделал работу.socat tcp6-listen:2222,reuseaddr -
(или, вероятно,reuseport
вместо этого), если вы хотите использовать его дважды подряд, когда сервер (команда socat) отключается первым.Я полагаю, что функциональность ipv4 и ipv6 на самом деле является результатом путаницы вокруг множества реализаций (вилок) или совершенно разных версий. Если вы будете искать, вы наткнетесь на упоминания о
nc6
. Эта реализация, кажется, в дистрибутивах на основе BSD.Я бы попробовал установить его
nc6
на свой дистрибутив и запустить вместоnc
поддержки ipv6.Дальнейшие исследования
Я смог найти этот коммит от 2018-01-11 - добавить патч IPv6, который явно добавляет функциональность IPv6 обратно в то, что вы называете новой версией netcat.
ПРИМЕЧАНИЕ: у меня есть доступ только к nc 7.50 в моих системах, и он, как вы описываете, поддерживает
-4
и-6
.Я подозреваю, что вы думаете, что более новая версия netcat на самом деле является гораздо более старой версией: http://nc110.sourceforge.net/ .
Если вы хотите получить исчерпывающий список различных реализаций, это доступно в Википедии о Netcat .
В большинстве дистрибутивов Linux большинство используют GNU netcat или версию NMAP:
Например, в CentOS 7.x:
источник