web-dev-qa-db-fra.com

La redirection de port NETSH du port local vers le port local ne fonctionne pas

J'essaie d'utiliser la commande NETSH PORTPROXY pour transférer les paquets envoyés à mon XP PC (IP 192.168.0.10) sur le port 8001 vers le port 80 (j'ai un serveur XAMPP Apache écoutant le port 80).

J'ai délivré ce qui suit:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10

Tout afficher confirme que tout est correctement configuré:

netsh interface portproxy show all

Listen on IPv4:             Connect to IPv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.0.10    8001        192.168.0.10    80

Cependant, je ne parviens pas à accéder au site Web Apache à partir de http://localhost:8001. Je peux accéder via le port direct à http://localhost comme indiqué ci-dessous.

De plus, j'ai également essayé ce qui suit: 1. Accédez au site Web Apache à partir d'un PC distant en utilisant le lien: http://192.168.0.10:8001. Pare-feu désactivé. 2. Modification de l’adresse d’écoute et de la connexion de l’adresse à 127.0.0.1.

Sans plus d'informations, je ne trouve pas de moyen de résoudre le problème. Existe-t-il un moyen de déboguer NETSH PORTPROXY?

enter image description here

Remarque: au fait, si vous vous demandez pourquoi je fais cela, je veux en fait mapper les connexions client MySQL distantes d'un port personnalisé au port 3306 du serveur MySQL par défaut.

22
Joshua

J'ai réussi à le faire fonctionner en émettant:

netsh interface ipv6 install

De plus, pour mon objectif, il n'est pas nécessaire de définir listenaddress et mieux de définir connectaddress = 127.0.0.1, par ex.

netsh interface portproxy add v4tov4 listenport=8001 connectport=80 connectaddress=127.0.0.1
35
Joshua

J'ai le problème avec toi. Je l'ai résolu tout à l'heure. Il existe un Service Windows nommé "IP Helper" qui fournit les connexions du tunnel de fonctions. Vous devez vous assurer qu'il a été démarré.

6
LongPingWEI
  1. Vous devez d'abord exécuter Command.exe en tant qu'administrateur, en cliquant avec le bouton droit sur l'icône d'invite de commandes et en choisissant Exécuter en tant qu'administrateur. Vous devrez confirmer.

  2. Collez votre commande netsh dans la fenêtre command.exe et appuyez sur Entrée.

  3. Si aucun message d'erreur ne s'affiche, la commande a fonctionné.

  4. Dans votre navigateur Web, accédez à http://your-up:8001 pour voir ça marche.

Le journal des événements Windows peut contenir des informations pour vous aider à trouver la cause d'un échec.

2
Rebwar

Si le proxy de port de netsh ne fonctionne pas comme prévu, vous devez vérifier les éléments suivants, de préférence dans cet ordre:

  1. Assurez-vous que le proxy de port est correctement configuré
  2. Démarrez ou redémarrez le service Windows associé
  3. Assurez-vous que la prise en charge d'IPv6 est installée
  4. Assurez-vous que le port n'est pas bloqué par un pare-feu

Assurez-vous que le proxy de port est correctement configuré

Cela peut sembler trivial, mais juste au cas où, prenez le temps de revoir votre configuration avant d'aller plus loin.

À partir d'une invite de commande ou d'une invite PowerShell, exécutez la commande suivante:

netsh interface portproxy show all

Le résultat devrait ressembler à ceci:

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
24.12.12.24     3306        192.168.0.100   3306
24.12.12.24     8080        192.168.0.100   80

Examinez attentivement ces paramètres. Assurez-vous que vous pouvez en effet vous connecter aux adresses sur le côté droit de cette liste, à partir de l'ordinateur local. Par exemple, pouvez-vous ouvrir localement un navigateur Web et atteindre 192.168.0.100:80? Si le protocole n'est pas HTTP, utilisez telnet: telnet 192.168.0.100 3306 (voir ici pour savoir comment installer le client Telnet sous Windows).

Alors, les valeurs du côté gauche sont-elles correctes? L'adresse IP est-elle valide pour votre machine? Est-ce le numéro de port auquel vous essayez de vous connecter, depuis la machine externe?

Démarrez ou redémarrez le service Windows associé

Sur les dernières versions de Windows, le proxy de port de netsh est géré par un service Windows nommé "IP Helper" ou "iphlpsvc". Le proxy ne fonctionnera évidemment pas si ce service est arrêté. J'ai également fait face à des situations qui se sont avérées être résolues en redémarrant ce service.

Pour ce faire dans les dernières versions de Windows:

  1. Ouvrez le Gestionnaire des tâches , puis accédez à l'onglet Services .
  2. Dans la colonne "Nom", recherchez le service nommé "iphlpsvc" ou "IP Helper".
  3. Faites un clic droit sur ce service, puis sélectionnez Redémarrer . Si redémarrage n'est pas disponible, alors le service est probablement arrêté et doit en fait être démarré, donc sélectionnez Démarrer .

Sur les versions précédentes de Windows, recherchez Services dans Outils d'administration , à l'intérieur le panneau de configuration.

Assurez-vous que la prise en charge d'IPv6 est installée

La prise en charge du protocole IPv6 est requise pour activer le proxy de port de netsh, y compris pour les proxys IPv4 à IPv4 (voir l'article de support de Microsoft - ici ).

À partir d'une invite de commande ou d'une invite PowerShell, exécutez la commande suivante:

netsh interface ipv6 install

Assurez-vous que le port n'est pas bloqué par un pare-feu

Un pare-feu local peut potentiellement bloquer le port avant même qu'il n'atteigne le service d'assistance IP. Pour faire valider cette hypothèse, désactivez temporairement tout pare-feu local (y compris le pare-feu natif de Windows), puis retestez. Si cela fonctionne, ajoutez simplement une exclusion de port à votre configuration de pare-feu.

0
jwatkins