O Netcat não consegue ligar um soquete de escuta

7

No meu computador com o Ubuntu 14.04, posso fazer coisas assim:

$ nc -l 5349 -vvv
Listening on [0.0.0.0] (family 0, port 5349)

ou isto:

$ nc -vvv -l 192.168.254.96 5349
Listening on [192.168.254.96] (family 0, port 5349)

E um soquete é aberto para escutar conexões entrando no meu endereço IP local (192.168.254.96). E obviamente eu posso conectar do outro lado e transmitir dados.

Mas em um servidor atrás de um NAT com Debian 8.0 Jessie, recebi este erro estranho:

$ nc -vvv -l 5349
5349: inverse host lookup failed: Unknown host
nnetfd reuseport failed : Protocol not available
listening on [any] 38541 ... : Protocol not available

ou:

$ nc -vvv -l 10.1.6.189 5349
10.1.6.189: inverse host lookup failed: Unknown host
nnetfd reuseport failed : Protocol not available
listening on [any] 52606 ... : Protocol not available

A porta não está em uso:

$ ss -tnl | grep 5349
(empty)

e é o endereço IP correto:

$ ip addr list
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 1e:89:93:f1:96:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.1.6.189/19 brd 10.1.31.255 scope global eth0
    inet6 fe80::1c89:93ff:fef1:96a4/64 scope link 
       valid_lft forever preferred_lft forever

Qual poderia ser o problema? Poderia haver algo relacionado com o NAT por trás do servidor?

    
por logoff 28.09.2015 / 11:28

1 resposta

6

Para o netcat no modo de escuta, você deve usar -p flag para escolher a porta de escuta, por exemplo, nc -vvv -l -p 5349 .

o segundo erro: nnetfd reuseport failed : Protocol not available está relacionado à opção de soquete SO_REUSEPORT. Ele foi introduzido na versão 3.9 do kernel do linux e a versão do netcat que o utiliza não funcionará com a versão anterior do kernel. Você pode atualizar seu kernel para uma versão mais recente ou usar outra variação do netcat. Eu acredito que o netcat-openbsd deva funcionar.

    
por 28.09.2015 / 13:50

Tags