Transfert de port simple


20

Je suis un peu en difficulté car j'essaie de configurer un proxy inverse avec et un deuxième serveur. Mon idée était d'obtenir le pare-feu pour transmettre https au proxy inverse et le port 29418 (gerrit ssh) au deuxième serveur. Maintenant, mon collaborateur informatique dit: NE PEUT PAS! Soit les deux ports vont au serveur 1, soit les deux ports vont au serveur 2.

Ok, en guise de solution, j'ai essayé de configurer une redirection de port sur le proxy inverse du port 29418 -> server2: 29418

Détails:

  • Server1 IP: 10.0.0.132 et 192.168.10.2 sur Ubuntu 12.04.2 LTS
  • Server2 IP: 10.0.0.133 et 192.168.10.3 sur Ubuntu 12.04.2 LTS

Maintenant, https et le port 29418 passent du pare-feu à 10.0.0.132, le service informatique indique que c'est la seule façon. :(

Alors s'il vous plaît, dites-moi comment transférer à partir de 10.0.0.132:29418 -> 192.168.10.3:29418 ou 10.0.0.133:29418

Lorsque je travaille sur le 10.0.0.132, je peux me connecter aux deux 10.0.0.133:29418 et 192.168.10.3:29418 afin que les ports soient ouverts.

-- Mise à jour --

Mon iptables -t nat -L ressemble à ceci:

root @ dev: / root # iptables -t nat -L
PRÉROULEMENT de la chaîne (politique ACCEPTER)
destination de la source cible opt prot
DNAT tcp - partout dev.example.com tcp dpt: 29418 à: 10.0.0.133

ENTRÉE de chaîne (politique ACCEPTER)
destination de la source cible opt prot

SORTIE de chaîne (politique ACCEPTER)
destination de la source cible opt prot

Chaîne POSTROUTING (politique ACCEPTER)
destination de la source cible opt prot
root @ dev: / root # cat / proc / sys / net / ipv4 / ip_forward
1

Réponses:


33

Au cas où quelqu'un d'autre chercherait un moyen qui fonctionne réellement. Bien que @HorsePunchKid ait raison dans sa suggestion, j'ai trouvé cette procédure qui remplit les étapes manquantes:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

En substance:

Activer le transfert IP:

sysctl net.ipv4.ip_forward=1

Ajoutez votre règle de transfert (utilisez nnnn: port):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Demandez à IPtables de masquer:

iptables -t nat -A POSTROUTING -j MASQUERADE

Et c'est tout! Cela a fonctionné pour moi en tout cas :)


1
C'est la meilleure réponse que j'ai trouvée à ce sujet.
Victor Piousbox

Connexion perdue depuis mon conteneur Docker après avoir utilisé cette solution. J'ai dû supprimer la règle. La règle fonctionnait, mais a perdu tout autre trafic. Je ne le recommande pas.
Dyin

iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... c'est ça, merci! Passé des heures à chercher sur le Web et à comprendre C'est tellement simple et ça marche.
shrimpwagon

7

Si vous avez installé iptables sur 10.0.0.132, je pense que ce sera assez simple:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Cela dit d'envoyer le trafic entrant vers 10.0.0.132 sur le port 29418 vers 10.0.0.133 à la place, sur le même port, avant tout autre routage que 10.0.0.132 pourrait essayer de faire. Si vous exécutez cette commande et rencontrez des problèmes, remplacez l'indicateur -A par -D pour le supprimer.

Si vous souhaitez que cette règle s'exécute automatiquement au démarrage de 10.0.0.132, pensez à ajouter la commande ci-dessus en tant que règle de "post-up" dans / etc / network / interfaces.


C'est exactement ce que j'ai fait, mais cela n'a pas fonctionné. J'ai décommenté le net.ipv4.ip_forward = 1 dans /etc/sysctl.conf mais je reçois toujours des erreurs de connexion au 10.0.0.132:29418
uncletall

6

Si quelqu'un recherche une méthode temporaire, essayez la solution ci-dessous.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 root@10.0.0.10

La commande ci-dessus redirige toutes les connexions vers le port 8080 de votre machine de base vers le port 80 de votre machine virtuelle. Vous pouvez tester le fonctionnement en accédant à la page Web http://192.168.0.10:8080 , et il vous montrera la page Web sur la machine invitée.

Cela s'applique à tous les ports :)


0

Au final, j'ai dû installer pfSense en tant que routeur à l'intérieur de mon serveur ESXi pour acheminer le trafic vers les différentes machines virtuelles car je ne pouvais pas le faire fonctionner dans Ubuntu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.