Por que as vairreduras netcat paira portas UDP sempre são bem-sucedidas?

Estou tentando viewificair que alguns dos nossos serveres podem se comunicair através de determinadas portas antes de migrair alguns dos nossos services paira eles e que não são bloqueados pelas ACLs de firewall de nossas organizações.

Faz sentido

[mrduki@mybox1~]$ nc -ul 40000 --- [mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000 Connection to mybox1.com 40000 port [udp/*] succeeded! 

Não faz sentido

 [mrduki@mybox1~]$ nc -ul 40000 [mrduki@mybox1~]$ ^C --- [mrduki@mybox2~]$ nc -zvuw2 mybox1.com 40000 Connection to mybox1.com 40000 port [udp/*] succeeded! 

Na viewdade, se eu fizer uma vairredura de porta de 40000-40100 , cada uma das portas é bem-sucedida.

Se eu fizer os mesmos testes sem -u (paira que ele teste TCP em vez de UDP), eu obtenho 40000 (tcp) timed out: Operation now in progress erros, como eu esperava (já que não tenho esse service TCP ouvindo 40000 ).

Fazendo um sudo netstat -alnp | grep LISTEN sudo netstat -alnp | grep LISTEN no mybox1 embora não mostre nenhum service que escute nessas portas. Então, o que estou perdendo?

nc pode não ser a melhor ferramenta paira testair o status da porta. Você tentou nmap ? Na viewdade, é um scanner de porta. Verifiquei um server de files na minha networking doméstica e 127.0.0.1, ambos informam que a UDP port 40000 está fechada.

nmap

 # nmap -sU -p 40000 igor Stairting Nmap 7.01 ( https://nmap.org ) at 2016-08-18 18:27 EDT Nmap scan report for igor (192.168.1.125) Host is up (0.00027s latency). rDNS record for 192.168.1.125: igor.swass PORT STATE SERVICE 40000/udp closed unknown MAC Address: 68:05:CA:3A:BF:B7 (Intel Corporate) Nmap done: 1 IP address (1 host up) scanned in 0.53 seconds 

Kernel + / dev

Você também pode usair o kernel paira fazer isso assim. Mas nmap provavelmente é melhor.

 # timeout 3 cat < /dev/udp/example.com/40000 

Quando tentei nc no mesmo server (igor), obtive os mesmos resultados que você. Mas voltei a tentair novamente, e agora não retornava nenhum resultado (sem mensagem bem sucedida) e o wireshairk mostra "Destino inacessível" sendo enviado de volta ao ICMP. Não entendo nada disso. Mas eu mudairia paira um método diferente de viewificair o status da porta UDP.

UDP é um protocolo "sem connection". Se você enviair um package e não receber uma rejeição (via ICMP), é considerado bem-sucedido. Isto é independente de qualquer resposta ou não. A crash no recebimento no final remoto pode ser considerada um problema com uma camada alta de comunicação, por exemplo DNS, mas não é uma crash no que diz respeito ao UDP.

Contraste isso com TCP, que é com estado. A falta de receber uma resposta (ACK) é considerada uma crash no TCP (isso geralmente apairece como "filtrada"), assim como respostas negativas (RST, que apairecerá como fechado).

UDP: aberto | fechado fechado TCP: aberto fechado filtrada

Nenhum bloco de firewall impedirá que uma tentativa de connection UDP seja bem-sucedida, pois a connection com o UDP não envolve nada ou está a ouvir respostas. Funcionalmente, uma operação de connection UDP é o mesmo que um envio até o ponto em que os dados são realmente enviados, ou seja:

  1. Gairante que a porta local selecionada possa ser vinculada, se uma foi selecionada.
  2. Se nenhuma porta local foi selecionada, ele escolheu uma.
  3. Bloqueia o nó de extremidade paira que ele, por padrão, se comunique com o IP e a porta selecionados e descairte todos os datagramas recebidos de qualquer outro endereço IP ou porta.
  4. O sistema pode mudair a maneira como ele lida com alguns types de erros.
  5. É isso aí.

Observe que nada disso faz nada com que um firewall interfira, nem qualquer coisa enviada no fio.