Também estou procurando uma resposta para sua primeira pergunta (verificando se o ISP não está bloqueando as portas de saída) e estou quase lá:
A maneira mais fácil de fazer isso é enviar dados para todas as portas de um servidor na Internet e ver se recebemos respostas ao entrar em contato com cada porta.
Mas precisamos ter certeza de que esse servidor (ou combinação de servidores):
- Não tem portas atrás de um firewall.
- Não tem portas UDP abertas. Se eles estiverem abertos, nós (necessariamente) não receberemos uma resposta, se eles estiverem fechados, receberemos um pacote ICMP informando que ele é inacessível.
... e eu não sei sobre um servidor do qual eu posso ter certeza que estas condições são o caso
O estado das portas TCP não importa, porque quando enviamos um SYN, recebemos um SYN / ACK quando estão abertos e um RST / ACK quando estão fechados, mas nunca sem resposta.
Consegui usar portquiz.net para testar todas as portas TCP no nível IPv4, exceto 445 (o proprietário deste servidor menciona em seu site que esta porta está atrás de um firewall de seu provedor). Então, eu ainda quero saber sobre:
- TCP / 445 no nível IPv4
- todas as portas UDP no nível IPv4
- todas as portas TCP e UDP no nível IPv6
Você provavelmente não quer descobrir como enviar os dados corretos para a porta correta e descobrir se recebe uma resposta manualmente. Então sugiro usar o nmap:
- Para TCP, execute
nmap -p 1-65535 server_that_we_need | grep filtered
.
-
Para UDP, execute sudo nmap -sU -p 1-65535 server_that_we_need | grep filtered
. (sudo é necessário aqui porque você precisa ser root para a varredura UDP). Lembre-se: precisamos ter certeza de que as portas UDP no servidor estão fechadas para obter a saída correta!
Todas as portas visíveis na saída são bloqueadas pelo seu provedor