10 votes

Transférer les demandes d'IP/PORT vers un autre serveur

J'ai la PORT:IP d'écoute suivante configurée sur mon serveur UBuntu.

12.345.67.890:3636

Il reçoit les demandes parfaitement, cependant, j'aimerais maintenant rediriger toutes les demandes vers cette IP:PORT vers une autre IP:PORT, c'est-à-dire :

09.876.54.321:3636

Fondamentalement, je veux faire une redirection de demande 12.345.67.890:3636 -> 09.876.54.321:3636.

Comment puis-je procéder dans le Terminal et si je voulais le modifier de nouveau, comment pourrais-je procéder aussi ? Y a-t-il aussi un moyen de tester que les données sont bien redirigées et que tout est configuré correctement ?

Merci !

Édition : Puis-je simplement faire ce qui suit, je me demandais simplement comment je pourrais le tester et comment je pourrais le désactiver ?

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 3636 -j DNAT --to-destination 09.876.54.321:3636
iptables -t nat -A POSTROUTING -j MASQUERADE

4voto

Eric Carvalho Points 51571

Les commandes de votre question sont suffisantes pour activer le routage et rediriger 12.345.67.890:3636 vers 09.876.54.321:3636.


Utilisez la cible LOG d'iptables pour surveiller ce qui se passe :

iptables -I FORWARD -j LOG

Vous devriez voir quelque chose comme ceci dans /var/log/syslog :

Aug 19 08:43:23 hostname kernel: [190951.964227] IN=eth0 OUT=eth0 SRC=11.22.33.44 DST=09.876.54.321 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=51600 DF PROTO=TCP SPT=41960 DPT=3636 WINDOW=246 RES=0x00 ACK URGP=0
  • SRC: Adresse IP source
  • DST: Adresse IP de destination
  • SPT: Port source
  • DPT: Port de destination

Effacez les règles iptables pour nettoyer tout :

iptables -F

1voto

KaeL Points 1300

Désactivation du transfert de port

Lorsqu'il s'agit de désactiver la capacité de routage de port, aucune réponse n'a été donnée pour désactiver le transfert (vérifié expérimentalement sur Ubuntu 18.04.2).

Crédits : La question posée par @DT.DTDG est formulée de manière précise, merci. Cette question ainsi que la réponse d'@Eric m'ont aidé à résoudre quelque chose, merci ! Et j'ai continué mes recherches sur ce sujet, alors je souhaite partager mes connaissances avec la communauté.

Purge des règles

Pour nettoyer les règles de routage, vous devez les supprimer de la table de routage NAT (Network Address Translation). Vous y parvenez en faisant ceci :

iptables -F -t nat

Sinon : si vous oubliez le paramètre "-t nat", les règles mentionnées dans la question continueront à fonctionner (par exemple, dans Ubuntu 18.04.2).

Désactiver le transfert

De plus, le paramètre du noyau nécessite une commande séparée. Si vous voulez tout nettoyer, vous devez également :

sysctl net.ipv4.ip_forward=0

Il est généralement fortement conseillé de ne pas activer le transfert de paquets entre les interfaces dans des systèmes qui ne sont pas des routeurs, pour des raisons de sécurité.

Annexe

  1. Toutes les actions nécessitent généralement des privilèges élevés, exécutez-les précédées de sudo ou en tant que "root".

  2. Ad-acta. Commandes configurant le routage :

CUR_PORT = port de la machine actuelle
DES_IP = adresse IP de la machine de destination
DES_PORT = port de la machine de destination

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport CUR_PORT -j DNAT --to-destination DES_IP:DES_PORT
iptables -t nat -A POSTROUTING -j MASQUERADE

0voto

Shinto C V Points 101

J'essayais de faire quelque chose de similaire et je suis tombé là-dessus.

J'ai exécuté les deux commandes données dans les questions. Et les choses se sont cassées. Je n'ai pas pu curl google.com, ni même curl des services s'exécutant sur le même serveur.

Le coupable était la deuxième commande.

$ iptables -t nat -A POSTROUTING -j MASQUERADE

Cela crée une règle dans iptables comme suit

21     286 19120 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0   

Supprimer cette règle a résolu le problème.

Pour supprimer les règles ci-dessus, changez -A en -D dans les mêmes commandes comme ceci :

$ sudo iptables -t nat -D PREROUTING -p tcp --dport 8585 -j DNAT --to-destination 192.168.1.101:80
$ sudo iptables -t nat -D POSTROUTING -j MASQUERADE

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X