Rediriger une adresse IP publique à une autre adresse IP accessible au public, différents sous-réseaux et serveurs.

C'est ma première question, alors j'espère que je le limite correctement.

Comme il s'agit d'un cas pour un ami, je vous serai reconnaissant du manuel de la configuration appropriée, car je n'aurai pas accès à l'environnement.

En bref - sur eth0 Il y a un serveur A avec un public ip (31.x.x.x). Il a lancé un service sur un port spécifique, écoutant des connexions udp. La fonction publique a été déplacée vers le serveur B, qui a encore eth0 Avec à nouveau publiquement disponible IP, Mais dans un sous-réseau complètement différent. (93.x.x.x).

L'objectif est de rediriger toutes les connexions provenant de l'ancienne adresse IP sur le serveur. A, sur la nouvelle adresse IP sur le serveur b. Serveur B Doit connaître l'adresse IP source de la source du package.

Nous avons essayé des configurations avec iptables sur le serveur A, Utilisant dnat pour routage préliminaire et snat / masquerade Pour le routage ultérieur, et cela fonctionne, mais le service est sur le serveur B Voit des paquets quand ils viennent d'une adresse IP publique sur le serveur A.

J'ai lu que la postmachrutisation doit être supprimée et le serveur b Doit utiliser le serveur a comme gw Par défaut, lorsque vous retournez de tels packages, mais je ne pense pas que cela soit possible car ils sont dans des réseaux complètement différents.

Toute aide que nous pouvons atteindre l'objectif est la bienvenue.

Merci d'avance!
Invité:

Catherine

Confirmation de:

Solution possible 1

Que voudrai-je essayer de faire (doit travailler, mais je n'ai pas testé):

Obtenez la deuxième adresse IP sur le nouveau serveur. Configurez-le en utilisant un autre espace de noms de réseau (Pour lui, vous pouvez utiliser quelque chose comme Docker).

Créer un tunnel (par GRE, probablement le moyen le plus simple, mais vous pouvez faire n'importe quoi, y compris IPSEC, OpenVPN etc.) Entre deux serveurs.

Pour un nouvel espace de noms de réseau que vous avez créé, utilisez le tunnel comme voie par défaut.

Installation TPROXY Sur la source / Vieille voiture I. NAT Sur la seconde IP.

Maintenant tout est difficile, parce que c'est aussi UDP. Vous devrez vous déconner avec le suivi de la connexion.

Solution possible 2

Une autre chose que vous pouvez faire est beaucoup plus facile: écrivez votre propre application de tunneling, en utilisant ce que cela UDP. Cela devrait éteindre quelque chose comme ça:

La partie source de l'application va écouter UDP Sur l'ancien serveur.

Partie dest Les applications vont écouter TCP Sur un nouveau serveur.

La partie source de l'application envoie chaque package UDP, y compris les titres IP, Grâce à la connexion TCP qu'il a sur le serveur cible.

Partie de l'application dest, recevoir des données dans le flux TCP, Restaure le paquet UDP, y compris les titres IP, et l'envoie au port UDP Sur l'hôte local. La substitution d'adresse IP doit fonctionner normalement sur localhost.

Bien sûr, cela entraînera un délai pour les paquets UDP, mais cessera.

Pour répondre aux questions, connectez-vous ou registre