Comment vérifier qu'un port UDP est ouvert? [fermé]

13

J'ai ici un dilemme. J'ai un appareil qui communique avec un autre appareil distant mais il y a un pare-feu entre eux. Il s'agit d'une connexion UDP, donc les utilitaires TCP ne fonctionnent pas pour tester si le port spécifique est ouvert. Je sais que nous pourrions obtenir cela du pare-feu mais je n'y ai pas accès, je dois donc prouver que le port n'est pas ouvert.

Le système source est un système Windows 7 et le système de destination est une appliance exécutant Linux.

JoeliNNaBit
la source
1
Sans accès au pare-feu, vous ne pouvez vraiment pas le dire (à moins, bien sûr, que vos systèmes fonctionnent).
Ron Trunk
Les questions concernant des réseaux sur lesquels vous n'avez aucun contrôle sont explicitement hors sujet ici.
Ron Maupin
2
Je voterais pour le laisser ouvert. Je pense que cela tombe dans la zone grise, et c'est une question théorique / de dépannage utile.
Ron Trunk
1
... avez-vous le contrôle du pare-feu et des réseaux? Sinon, c'est hors sujet ici.
Craig Constantine
C'est maintenant un environnement de laboratoire, nous essayons de simuler une situation de production future. Je voudrais obtenir un moyen de dépanner les sessions UDP sans avoir à analyser les journaux côté serveur. Mais merci, je crois que ce n'est pas possible par la nature du type de communication.
JoeliNNaBit

Réponses:

10

UDP est évidemment un protocole d'envoi et d'oubli. Par exemple, lors d'une analyse NMap UDP, la seule façon de prouver définitivement qu'un port UDP est ouvert est de recevoir une réponse de ce port. Gardez à l'esprit que de nombreux services peuvent ne pas répondre à des données arbitraires et nécessitent des requêtes spécifiques au protocole ou à l'application afin de garantir une réponse. Cependant, certains codes ICMP peuvent garantir la fermeture du port. Les RFC 792 et RFC 1122 nous donnent de bonnes informations sur ce à quoi s'attendre lorsqu'un port est fermé.

Par exemple, un code ICMP de type 3 "Port de destination inaccessible" 3 est, à toutes fins utiles, presque garanti d'être un port fermé.

Une liste complète des codes peut être trouvée ici:

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml

Des goodies
la source
1
Merci d'avoir répondu. Je vais enquêter davantage sur les demandes ICMP de type 3.
JoeliNNaBit
7

Voici une recette rapide:

1) Démarrez un renifleur de paquets:

sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes

2) Envoyez un paquet UDP:

$ echo reply-me | nc -u 1.0.0.2 1000

3) Si vous recevez «Port ICMP inaccessible», ce port UDP est fermé:

20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45

4) Sinon, généralement le port est ouvert ou quelque chose bloque ICMP.

Everton
la source
1
Comme le système source est Windows 7, les commandes Linux ne fonctionneront pas.
Ron Maupin
1
Oui, c'est vrai, mais je vais essayer une machine virtuelle et vérifier si cela fonctionne.
JoeliNNaBit
4

"nc -uvz ip port"n'est pas en quelque sorte précis, vous devriez probablement l'utiliser "nmap -sU -p port ip", si le résultat montre "ouvert" alors le port udp est probablement ouvert, s'il montre "ouvert | filtré" alors probablement il est fermé ou filtré.

Jailman Tough
la source