Question Comment vérifier qu'une route existe entre deux hôtes pour un port particulier?


Comment vérifier s’il existe une route entre deux hôtes pour un port particulier (par exemple 1433).


5
2017-08-07 04:17


origine


S'il existe un itinéraire pour un port, il existe un itinéraire pour chaque port. Le routage s'effectue sur une couche réseau sans ports. - Christopher Perrin
Que se passe-t-il s'il existe un pare-feu entre les deux hôtes et les ports de filtrage? - ohho
@ohho: ça n'a pas d'importance. S'il existe un itinéraire, il l'est, quels que soient les paramètres du pare-feu. Vous devrez probablement reformuler votre question. - zerkms
Les pare-feu fonctionnent à un niveau différent. @ChristopherPerrin est correct, le routage a lieu au niveau IP, pas au niveau du port. - EEAA
Y a-t-il un outil de ligne de commande (CentOS) que je peux utiliser pour vérifier que les hôtes sont connectables via un port particulier? - ohho


Réponses:


avec 'ip route get ADDRESS', vous pouvez vérifier l'itinéraire configuré dans votre système, c’est-à-dire le premier saut:

$ ip route get 192.168.10.10
192.168.10.10 via 192.168.10.1 dev eth0  src 192.168.10.11 
    cache 

pour vérifier la connectivité des ports, un simple telnet devrait faire:

$ telnet 192.168.10.10 1433
...

bonne chance!


6
2017-08-07 06:47





Premièrement, vous devez savoir que le route l'action se produit à Couche réseau, tandis que port est défini à Couche de transport. Donc, s’il existe une route entre deux hôtes, cela ne signifie pas que vous pouvez atteindre un port dans un hôte.

Imaginer deux hôtes est deux maisons, le port est la porte de la maison, la route est la route. Vous pouvez construire de nombreuses routes entre les maisons. Mais lorsque vous atteignez une maison, si la porte de la maison est fermée, vous ne pouvez pas entrer.

METTRE À JOUR

Pour votre question de commentaire, vous pouvez utiliser une commande comme:

Pour vérifier que l'itinéraire existe:

  • route
  • traceroute

Pour vérifier le port ouvert:

  • telnet
  • netcat

Lisez-le et essayez d’utiliser.


5
2017-08-07 04:46



Quels outils (ligne de commande) sont disponibles pour vérifier l'existence de la route et la connectivité du port? - ohho
Si vous pouvez trouver une route entre les hôtes avec les outils, il y a une route. S'il existe un itinéraire, vous pouvez vérifier si le port est ouvert avec les autres outils. - Christopher Perrin
telnet dst_host dst_port est l'invocation standard. - dmourati
J'aime l'analogie de la maison et de la porte. - Vijay Kumar


J'aime vraiment mtr http://www.bitwizard.nl/mtr/. Il existe également une version Windows sur http://winmtr.net/Un séjour sans faille


1
2017-08-07 06:34





Comme d'autres l'ont mentionné, le fait d'avoir un itinéraire ne signifie pas nécessairement que vous avez une connectivité. Si c'est ce que vous cherchez à tester, netcat offre le -z option pour analyser si un port est ouvert:

$ nc -z 127.0.0.1 22; echo $?
0
$ nc -z 127.0.0.1 11; echo $?
1

Vous pouvez utiliser le code de sortie pour effectuer une action (ou non) selon que vous avez ou non démontré la connectivité à cette adresse et à ce port:

if nc -z 127.0.0.1 22; then
    echo "SSH server is available."
else
    echo "Cannot connect to SSH server."
fi

le -v option rendra la sortie plus détaillée, et cela peut être utilisé pour balayer une plage de ports:

$ nc -vz 127.0.0.1 22-25
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/smtp] succeeded!
$ echo $?
0

Comme indiqué ci-dessus, en mode de balayage multiport, le code de sortie sera vrai (0) si l'un des ports a réussi à se connecter, ou faux sinon.

Il existe plusieurs versions de netcat; celui utilisé dans les exemples ci-dessus est le netcat-openbsd paquet de Debian 9, qui est une réécriture du netcat "traditionnel" (netcat-traditional paquet). Pour ces paramètres particuliers et les codes de sortie, la version traditionnelle est sensiblement similaire. Si vous rencontrez des problèmes avec les paramètres de ligne de commande netcat et les codes de sortie, vérifiez la version que vous utilisez. ls -l /bin/nc* peut donner un aperçu.


1
2018-01-30 06:49



Je suis sur CentOS et l'option '-z' n'est pas valide. Existe-t-il un équivalent? - Vijay Kumar
Vous ne mentionnez pas la version de CentOS et la version de netcat que vous utilisez, mais comme je l’ai mentionné, il existe un certain nombre de versions différentes. Avez-vous vérifié la liste des paquetages de votre système pour voir si vous pouvez installer une version différente, telle que le netcat OpenBSD que j'ai utilisé ci-dessus? - Curt J. Sampson