web-dev-qa-db-fra.com

Comment faire en sorte que netcat accepte les connexions en dehors du LAN?

J'utilise netcat comme backend pour pelleter les données d'avant en arrière pour un programme que je crée. J'ai testé mon programme sur le réseau local, et une fois qu'il a fonctionné, j'ai pensé qu'il s'agirait simplement de transférer un port depuis mon routeur pour que mon programme fonctionne sur Internet. Hélas! Cela ne semble pas être le cas.

Si je démarre l'écoute de netcat sur le port 6666 avec:

nc -vv -l -p 6666,

ensuite aller à 127.0.0.1:6666 dans un navigateur, comme prévu, je vois une demande HTTP GET passer par Netcat (et mon navigateur attend en vain). Si je vais à my.external.ip.address:6666, cependant, rien ne vient du tout et le navigateur affiche "Impossible de se connecter à my.external.ip.address:6666 '.

Je sais que le port est correctement transmis, comme www.canyouseeme.org dit que le port 6666 est ouvert (et lorsque netcat n'écoute pas, qu'il est fermé).

Si je lance netcat avec -g my.adslmodem's.local.address pour définir l'adresse de la passerelle, j'obtiens le même comportement. Suis-je en utilisant cette option de ligne de commande correctement? Avez-vous une idée de ce que je fais mal?

30
Chris

Il s'avère qu'il n'y a pas de problème. Cela n'apparaît que de cette façon car mon routeur n'autorise pas les connexions en épingle à cheveux. Autrement dit, même si je l'ai configuré correctement, le routeur ne ferait pas la connexion lorsque la source et la destination sont derrière le NAT. Tout simplement ncat -l -p 6666 fonctionne très bien, tant que la demande provient de l'extérieur du LAN. Pour tester cela, j'ai accédé à my.external.ip.address:6666 avec mon téléphone mobile 3G et bien sûr, une requête HTTP est arrivée :)

Cette réponse est venue de: ne question de défaut de serveur , c'est là que j'aurais dû poser cette question en premier lieu. Toutes mes excuses pour cela.

15
Chris

Vous devez écouter sur l'interface publique. Vous écoutez actuellement sur localhost où personne en dehors de votre ordinateur ne peut se connecter.

Votre kilométrage peut varier, mais avec mon implémentation de netcat je dois utiliser cette ligne de commande pour écouter sur toutes les interfaces publiques.

netcat -vv -l 0.0.0.0 6666

27
Kent

Pour spécifier une adresse d'écoute:

nc -l -s <LISTENING_IP_ADDR> -p <LISTENING_PORT>

Testé sur une Debian Jessie avec netcat-traditional-1.10-41

8
Antonio Bardazzi