web-dev-qa-db-fra.com

Comment transférer un port sous Mac OS X

Je souhaite que toutes les connexions entrantes sur le port 1000 de mon hôte (IP: 200.234.XXX.XXX) soient transférées sur le port 80 de l'hôte 10.211.55.5.

Comment puis-je le faire sur mon hôte? Il fonctionne sous Mac OS X 10.5.8

33
Daniel Cukier

Très simple à faire, vous devrez d’abord activer le service de connexion à distance sur votre Mac ( Préférences Système -> Partage -> Connexion à distance ). Cela démarre votre serveur ssh.

Puis exécutez la commande suivante dans votre terminal OS X:

ssh -L 200.234.XXX.XXX:10000:10.211.55.5:80 -N 127.0.0.1

Vous devrez peut-être initialement accepter l’empreinte digitale du serveur et taper votre mot de passe local pour la connexion SSH. (Vous pouvez également configurer une clé publique/privée ssh de local à local pour éviter de demander un mot de passe, laissez cela comme un exercice pour le lecteur.)

Le format est:

ssh -L local_addr:local_port:remote_addr:remote_port -N 127.0.0.1
28
Marius

Très simple en utilisant l'outil polyvalent ncat:

Sudo ncat --sh-exec "ncat 10.211.55.5 80" -l 1000 --keep-open

Obtenez les binaires de ncat/nmap pour Mac OS X sur le site officiel: http://nmap.org/download.html#macosx

EDIT: ajout de Sudo pour l’écoute sur un port restreint <1024

8
Tony Baguette

En supposant que vous ayez un routeur UPnP, il est facile de configurer les ports à l’aide de PortMap

Il a une interface utilisateur très simple.

alt text

5
Alexis Hirst

Eh bien, je peux vous dire comment je fais ce genre de chose sur mon système Mac OS X 10.5.8.

J'ai commencé par une réponse à propos de NAT, mais je pense que vous voulez plutôt un programme de transfert TCP (vous mentionnez 'proxy' et le transfert de port.)

Il y a plusieurs façons de le faire. Selon vos besoins, même 'SSH' peut être activé, bien que ma façon préférée de parler soit un script Perl tcpforward .

Si vous avez besoin de manipulations HTTP (vous devrez peut-être modifier les redirections HTTP, de sorte que lorsqu'une demande d'URL est présentée sans le '/' final, vous ne serez pas redirigé vers le serveur réel, inaccessible), Apache peut alors effectuer le travail d'un proxy inverse. Vous voudrez regarder mod_proxy et plus précisément ProxyPass et ProxyPassReverse. Ne pas activez ProxyRequests, c’est pour le transfert direct du proxy. Il devrait être possible d'utiliser Apache de Mac OS pour le faire, si vous l'avez exécuté. Il vient avec mod_proxy et /etc/httpd/httpd.conf est le fichier de configuration à mettre à jour.

Même avec Apache, vous devez vous assurer que tous les liens du contenu du serveur réel sont relatifs. S'ils font référence au serveur réel, vous pouvez essayer le module mod_proxy_html (je n'ai aucune expérience de l'efficacité de ce dernier.)

3
jrg