Forum Linux.général Problème courant : appel client → serveur via une IP publique

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
1
30
mar.
2020

Bonjour à tous,

J'ai configuré mon réseau et voici l'environnement,

Réseau local = 5.0.20.0
IP serveur = 5.0.20.182
IP client = 5.0.20.185
IP publique = 36.10.206.471

J'arrive à tous faire sauf le cas suivant.

Lorsque je souhaite accéder à mon serveur depuis mon pc qui est sur le même réseau local depuis mon IP publique, ce n'est pas possible.

La connection ne s'établie pas.

Sur le forum mikrotik, ils proposent la solution du hairpin nat.

https://wiki.mikrotik.com/wiki/Hairpin_NAT

La solution est implémenté et je n’arrive toujours pas à obtenir de résultat.

Est-ce que vous utilisez des routeurs particuliers ? Auriez-vous une idée ?

Merci

  • # la base

    Posté par  . Évalué à 4. Dernière modification le 30 mars 2020 à 16:47.

    1.) deja un reseau en 5.x.y.z ne DOIT pas exister en reseau privé

    les reseaux sont normés, et les classes privées sont :

    • 10.0.0.0/8
    • 192.168.0.0/16
    • 172.16.0.0/12

    les autres IPs sont dites publiques et peuvent donc être routées entre les fournisseurs.

    ainsi rien ne dit que ton trafic venant de 5.x.y.z vers ton 36.10.x.y verra un jour un paquet retour

    ton reseau 5.0.20.0 c'est un opérateur syrien

    inetnum:        5.0.0.0 - 5.0.127.255
    netname:        SY-ISP-TARASSUL
    descr:          Tarassul Inetnet Service Provider
    address:        Syrian Telecommunication Est
    address:        Damascus, Syria

    et ton reseau 36.10.206.0 est chez un opérateur japonais

    inetnum:        36.8.0.0 - 36.15.255.255
    netname:        KDDI
    descr:          KDDI CORPORATION
    descr:          GARDEN AIR TOWER,3-10-10,Iidabashi,Chiyoda-ku,Tokyo
    address:        Urbannet-Kanda Bldg 4F, 3-6-2 Uchi-Kanda
    address:        Chiyoda-ku, Tokyo 101-0047, Japan

    pour l'ip publique, pourquoi pas, tu as le droit d'avoir une connexion internet ou des serveurs au japon.

    2.) une IP se terminant par 471 (36.10.206.471) ne fonctionnera jamais, vu que les valeurs en ipv4 c'est entre 1 et 254

    3.) enfin, oui il y a parfois des routeurs qui n'apprécient pas de sortie du LAN pour rerentrer par le WAN vers le LAN
    et là il faut voir si ton routeur est tout seul, si le routeur est branché à la box d'un opérateur, etc

    pour le 3, oui, il faut jouer du SNAT ET du DNAT pour changer la source de la demande quand une machine du LAN demande l'IP Publique, pour que le flux se passe "normalement"

    via des IPs virtuelles par exemple.
    un reseau virtuel 10.x.y.z dans ton cas, reseau inconnu autrement que dans le firewall.

    ainsi le flux 5.x.y.z -> 36.x.y.z est modifié en 10.x.y.z -> 36.x.y.z grace au SNAT
    puis la réponse fait alors 36.x.y.z -> 10.x.y.z -> 5.x.y.z grace à un DNAT

    mais deja voir le 1.) car ta machine 36 ne répond peut-être simplement pas car elle n'envoie pas sa réponse au bon endroit pour aller du Japon à la Syrie, il y a surement quelques intermédiaires

    • [^] # Re: la base

      Posté par  . Évalué à 2. Dernière modification le 30 mars 2020 à 18:22.

      Okey, j'ai mal anonymisé la chose,

      Réseau local = 10.0.20.0
      IP serveur = 10.0.20.182
      IP client = 10.0.20.185
      IP publique = 80.10.50.185 (à titre d'exemple)

      La on peut voir un jour un paquet retour.

      3.) enfin, oui il y a parfois des routeurs qui n'apprécient pas de sortie du LAN pour rerentrer par le WAN vers le LAN
      et là il faut voir si ton routeur est tout seul, si le routeur est branché à la box d'un opérateur, etc

      Oui, mon routeur mikrotik est derrière la box du gros FAI, … je ne sais pas si cela va empêcher la connexion de s'établir.

      ainsi le flux 5.x.y.z -> 36.x.y.z est modifié en 10.x.y.z -> 36.x.y.z grace au SNAT
      puis la réponse fait alors 36.x.y.z -> 10.x.y.z -> 5.x.y.z grace à un DNAT

      Aujourd'hui j'ai cette config,

      /ip firewall nat 
      
      add action=src-nat chain=srcnat out-interface=vpn \
          src-address=10.0.20.0/24 to-addresses=80.10.50.185
      
      add action=src-nat chain=srcnat out-interface=vpn \
          src-address=10.0.20.0/24 to-addresses=80.10.50.185
      
      add action=dst-nat chain=dstnat dst-address=80.10.50.185 protocol=tcp dst-port=5111 \
           to-address=10.0.20.182
      
      add action=masquerade chain=srcnat src-address=10.0.20.0/24
           dst-address=10.0.20.182 protocol=tcp dst-port=5111 \
           out-interface=bridge1
      
      • [^] # Re: la base

        Posté par  . Évalué à 2.

        Oui, mon routeur mikrotik est derrière la box du gros FAI, … je ne sais pas si cela va empêcher la connexion de s'établir.

        du coup l'ip publique est ou ?

        • derriere la box de l'opérateur, avec un reseau privé entre la box et ton microtik ?
        • derriere le microtik, la box étant alors en mode "bridge" si c'est par exemple une Freebox
        • [^] # Re: la base

          Posté par  . Évalué à 1.

          L'IP publique est au niveau du mikrotik.

          Le mikrotik est à ce jour lié en VPN au réseau du FAI asso
          et
          lié à une IP en 192.168.1.X par le serveur dhcp de la sfrbox.

          J'arrive à avoir accès à mon serveur depuis le web mais pas depuis mon réseau local.

          Le souci est qu'à l'heure actuelle, je ne sais pas si il y a quelque chose a configurer sur la box.
          Elle laisse passer mon protocole L2TP et donne internet à ceux qui s'y connecte.
          J'ai une autre IP publique sur la sfrbox.

          • [^] # Re: la base

            Posté par  . Évalué à 1.

            si l'ip publique est au niveau de ton serveur/routeur, tu es censé etre en mode bridge,
            si tu as une ip en 192.168.1.x en dhcp par la box sfr, tu es censé etre en mode routé/nat classique
            du coup tu es en quoi?

            je pense que tu fais une confusion, tu dois etre en mode routé et a mon avis ton ip publique doit probablement etre sur ta box sfr, le hairpinning doit donc etre géré par la box sfr, renseigne toi aupres d'eux pour savoir si c'est supporté

          • [^] # Re: la base

            Posté par  . Évalué à 2.

            ton IP 36.x.y.z c'est celle derriere le VPN ou derriere la box ?

            si c'est derriere la box, il y a un renvoi entre ta box et ton mikrotik, mais c'est la box qui gere (ou pas) le hairpinning.

            dans tous les cas, tu peux faire ton pinning sur le mikrotik quand meme, en interceptant les paquets qui circulent entre le LAN et l'IP publique.

            en jouant du NAT comme évoqué,

            SI le paquet vient du LAN et est à destination de 36.x
            ALORS

            • tu changes la destination par la destination locale (IP LAN de ton serveur)
            • mais il faut aussi changer la source par l'IP LAN du mikrotik

            ainsi le serveur répond au mikrotik qui refait le chemin inverse.

            • [^] # Re: la base

              Posté par  . Évalué à 1.

              ton IP 36.x.y.z c'est celle derriere le VPN ou derriere la box ?

              C'est l'IP publique qui m'a été délivré et qui est présent au niveau du routeur mikrotik.

              si c'est derriere la box, il y a un renvoi entre ta box et ton mikrotik, mais c'est la box qui gere (ou pas) le hairpinning.

              Oui, sur la box je peux faire du NAT, indiquer la présence d'un bridge, c'est tout ce que je vois comme option.

              J'ai eu la réponse de quelqu'un sur un forum qui me disait aussi être embêté à ce même titre parce que le hairpinning n'était pas géré par la box du gros FAI.

              dans tous les cas, tu peux faire ton pinning sur le mikrotik quand meme, en interceptant les paquets qui circulent entre le LAN et l'IP publique.

              Oui mais par contre, l'IP publique que le FAI asso m'a attribué, elle est bien au niveau de mon routeur je pense.

              SI le paquet vient du LAN et est à destination de 36.x
              ALORS
              tu changes la destination par la destination locale (IP LAN de ton serveur)
              mais il faut aussi changer la source par l'IP LAN du mikrotik
              ainsi le serveur répond au mikrotik qui refait le chemin inverse.

              Oui je suis d'accord, est-ce que c'est le principe du hairpinning ? à priori c'est ça mais je n'arrive pas à le mettre en place.

              • [^] # Re: la base

                Posté par  . Évalué à 1.

                Avec quel outil je peux faire des captures de traffic sans interface graphique type xfce4 ? Sans wireshark graphique.

                • [^] # Re: la base

                  Posté par  . Évalué à 2. Dernière modification le 31 mars 2020 à 13:15.

                  tcpdump sur linux
                  par exemple :

                  tcpdump -vnni any port 5111

                  devrait d'afficher tout ce qui rentre ou sort de ta machine sur le port 5111

                  remplace le any par l'interface de ton choix si tu as plusieurs interfaces

                  • [^] # Re: la base

                    Posté par  . Évalué à 0.

                    J'y suis arrivé avec l'aide du forum associé à mon routeur.

                    Merci pour tes conseils.

                    • [^] # Re: la base

                      Posté par  . Évalué à 3.

                      une copie de la réponse ici, ou un lien vers le forum pourra aider une autre moule qui passerait par là ;)

                      • [^] # Re: la base

                        Posté par  . Évalué à 1. Dernière modification le 10 avril 2020 à 21:15.

                        Voila la solution,

                        https://wiki.mikrotik.com/wiki/Hairpin_NAT

                        *******************
                        ****HAIRPIN NAT****
                        *******************
                        
                        /interface list member
                        add interface=l2tp0 list=WAN
                        add interface=l2tp1 list=WAN
                        
                        /ip route rule
                        add action=lookup-only-in-table dst-address=10.0.14.0/24 table=main
                        
                        /ip firewall nat
                        
                        add action=masquerade chain=srcnat comment="defconf: masquerade" out-interface-list=WAN
                        add action=src-nat chain=srcnat out-interface-list=WAN to-addresses=40.25.78.26
                        add action=masquerade chain=srcnat comment=HAIRPIN-NAT dst-address=10.0.14.0/24 src-address=10.0.14.0/24
                        
  • # Rien à voir

    Posté par  . Évalué à 3.

    Mais quand je lis ça, je suis content d'être passé en IPv6 ;-)

    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.