Comment redirect les requests vers mon adresse / port IP externe vers une autre adresse / port IP externe sous Linux sans changer l'adresse IP source?

Je peux utiliser les commands suivantes, mais elles changent l'adresse IP source:

iptables -t nat -A PREROUTING -p tcp --dport port -j DNAT --to-destination dest_ip:port iptables -t nat -A POSTROUTING -j MASQUERADE 

Je reçois donc l'adresse IP source à l'ordinateur de Dest_ip équivalente à l'adresse IP de cet ordinateur, mais je souhaite get l'adresse IP réelle.

Si je supprime iptables -t nat -A POSTROUTING -j MASQUERADE , je ne peux pas get de réponse. Comment puis-je résoudre ce problème?

Toutes les adresses IP sont des adresses IP externes.

One Solution collect form web for “Comment redirect les requests vers mon adresse / port IP externe vers une autre adresse / port IP externe sous Linux sans changer l'adresse IP source?”

L'utilisation de la règle PREROUTING sans la règle MASQUERADE fera ce que vous requestz. Il ne fonctionnera toujours pas, mais c'est pour une raison différente.

Si vous avez un client sur 192.0.2.1 qui envoie un package SYN à votre server en 198.51.100.2 , votre première règle peut modifier l'adresse de destination de ce package sur votre autre server sur 203.0.113.3 et le transférer en tant que tel.

Le premier problème que vous pourriez rencontrer avec cette approche serait que la connection entre 198.51.100.2 et 203.0.113.3 pourrait avoir un filtrage IP source. Cela entraînerait la suppression du package car l'adresse source serait encore 192.0.2.1 mais le routeur devrait être 198.51.100.2 . Si tel est le cas dans votre réseau particulier, il peut être utilisé à l'aide d'un tunnel.

Toutefois, vous rencontrerez un autre problème. Une fois que le package arrive à 203.0.113.3 un SYN-ACK sera renvoyé à 192.0.2.1 . Ceci sera apathé directement vers le client sans passer par la première machine qui avait appliqué la règle DNAT .

Le client qui envoie un SYN de 192.0.2.1 à 198.51.100.2 verra un SYN-ACK de 203.0.113.3 à 192.0.2.1 . Cela ne correspondra à aucune connection TCP sur le client, et le client répondra avec un package RST. Une fois que le package RST atteint 203.0.113.3 la connection TCP est fermée du côté server.

Au total, quatre packages ont été transmis et la connection a été fermée du côté du server avant d'être complètement établie. Ces quatre packages se répéteront autant de fois que le client retransmet le SYN jusqu'à ce qu'il finisse son time.

Il existe quelques façons de contourner ce problème:

  • Apathez tout le trafic de 203.0.113.3 à 198.51.100.2 pour vous assurer qu'il se traduit sur le path du return. Malheureusement, cela rendra le public IP 203.0.113.3 inutile à d'autres fins.
  • Affectez une adresse IP secondaire à 203.0.113.3 , vous pouvez par exemple lui donner 10.0.113.3 comme adresse IP secondaire. Le 198.51.100.2 vous DNAT à 10.0.113.3 et utilisez un tunnel pour 203.0.113.3 afin d'get les packages sur l'hôte de destination approprié. En 203.0.113.3 vous utilisez une politique de routing pour vous assurer que les packages avec source IP 10.0.113.3 sont routés par le tunnel et d'autres packages sont apathés sur votre passerelle par défaut.
  • Arrêtez d'utiliser NAT et utilisez plutôt une approche d'équilibrage de charge DSR pour envoyer des packages de 198.51.100.2 à 203.0.113.3 . Si ces deux ne sont pas directement connectés avec aucun routeur entre eux, cela nécessitera à nouveau un tunnel. Mais cette fois, les packages à l'intérieur du tunnel conservent l'adresse de destination d'origine, et 203.0.113.3 n'aura pas besoin d'une politique de routing, mais il enverra les réponses correctes directement au client. L'inconvénient de cela est que 203.0.113.3 devra être assigné 198.51.100.2 comme une IP secondaire, et donc 198.51.100.2 et 203.0.113.3 ne pourront pas communiquer entre eux, mais ils communiqueront toujours très bien avec tout le monde autre.
  • Si vous avez seulement besoin de prendre en charge HTTP, vous pouvez utiliser un proxy au lieu de NAT. Ensuite, vous pouvez utiliser X-Forwarded-For pour que 203.0.113.3 connaisse l'IP client d'origine. Le server Web sur 203.0.113.3 devra alors faire confiance à X-Forwarded-For sur toutes les connections issues du 198.51.100.2 et l'ignorer sur les connections des autres IP du client.
  • Ubuntu + Apache2 - Ne pas autoriser la connection externe?
  • Comment savoir à quel Sata Channel mon / sd * associé à
  • service pam (sshd) ignorant les tentatives maximales
  • Configuration Tomcat6 correctement dans Ubuntu 10.04
  • Logs tronqués / manquants avec systemd sur Ubuntu 16.04
  • mysql ne démarre pas après la mise à niveau vers 5.6 - Autorisation refusée
  • Ubuntu 12.04 haute io par process racine
  • Régénération /etc/resolv.conf
  • Problème du Serveur de messagerie en envoyant des mails à des domaines externes
  • Empêcher la connection SSH perdue après la connection à VPN sur la machine server
  • Le assembly ne va pas
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.