Netcat - Como escutar em uma porta TCP usando o endereço IPv6?

13

Estou usando a versão mais recente do netcat ( v1.10-41.1), que parece não ter uma opção para endereços IPv6 (como -6era nas versões anteriores nc).

Se eu digitar nc -lvnp 2222e verificar as portas de atendimento netstat -punta, o servidor parece estar atendendo na porta apenas 2222para endereços IPv4:

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

tcp6 não está ativo como, por exemplo, meu servidor apache2:

tcp6       0      0 :::80                   :::*                    LISTEN      -
bashbin
fonte

Respostas:

17

Existem pelo menos 3 ou 4 implementações diferentes do netcat como visto no Debian:

  • netcat-traditional 1.10-41 o original que não suporta IPv6: provavelmente o que você instalou.
  • O netcat6, que foi criado para oferecer IPv6 (oldstable, substituído).
  • netcat-openbsd 1.130-3. Suporta IPv6.
  • O ncat 7.70 + dfsg1-3 provavelmente é um pouco mais recente, já que não está estável no Debian, fornecido pelo nmap , suporta IPv6.

Eu iria para o openbsd. Cada versão pode ter uma sintaxe sutilmente diferente, portanto, tome cuidado.

A propósito: o socat é uma ferramenta muito melhor capaz de realmente fazer muito mais do que o netcat. Você deveria tentar!

AB
fonte
2
Impressionante. Obrigado por sugerir a socatferramenta. Aparentemente, tem muito mais opções, e as seguintes: socat tcp6-listen:2222fizeram o trabalho.
22418 bashbin
2
@bashbin, mas um pouco mais detalhado em sua sintaxe. isso seria socat tcp6-listen:2222,reuseaddr -(ou provavelmente em reuseportvez disso) se você quiser usá-lo duas vezes seguidas quando o servidor (o comando socat) se desconectar primeiro.
AB
4

Eu acredito que a funcionalidade do ipv4 e ipv6 é de fato um resultado da confusão em torno de haver várias implementações (garfos) ou versões completamente diferentes. Se você pesquisar, tropeçará nas menções de nc6. Essa implementação parece estar nas distros baseadas no BSD.

Eu tentaria instalar nc6em sua distribuição específica e executá-la em vez de ncobter suporte ao ipv6.

Mais pesquisa

Consegui encontrar esse commit datado de 2018-01-11- adicionar patch IPv6 que claramente está adicionando a funcionalidade IPv6 de volta ao que você está chamando de versão mais recente do netcat.

NOTA: Só tenho acesso ao nc 7.50 nos meus sistemas e, como você descreve, suporta ambos -4e -6.

Eu suspeito que o que você acha que é uma versão mais recente do netcat é de fato uma versão muito mais antiga: http://nc110.sourceforge.net/ .

Se você quiser uma lista exaustiva das várias implementações, isso está disponível na pergunta da Wikipedia sobre o Netcat .

A versão original do netcat era um programa Unix. A última versão (1.10) foi lançada em março de 1996. 1

Na maioria das distribuições Linux, o GNU netcat ou a versão NMAP parecem ser o que a maioria está usando:

Existem várias implementações em sistemas POSIX , incluindo reescritas a partir do zero, como GNU netcat [5] ou OpenBSD netcat, 6 o último dos quais suporta IPv6 e TLS . A versão do OpenBSD foi portada para o FreeBSD base 7 e Windows / Cygwin. 8 O Mac OS X vem com o netcat instalado a partir do OSX 10.13 ou os usuários podem usar o MacPorts para instalar uma variante. [9] Existe também uma versão do netcat para Microsoft Windows disponível. [10]

Por exemplo, no 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
fonte