Forum général.général Redirection iptable Upnp

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
25
sept.
2013

Bonjour,

Je me permets d'ouvrir un poste, car j'essaye de mettre en place une redirection que je ne parviens pas à mettre en place avec iptable
Mon but est de pouvoir accéder par ma freebox player, au Upnp qui n'est pas dans le réseau local (sur internet)

Pour vous décrire

J'ai une machine A hors du réseau local (sur internet) disposant d'un serveur OpenVPN
(adresse IP du VPN : 192.168.1.1)
(nom de domain : serveur.fr)

Ensuite, j'ai une machine B (une fonera DD-WRT) étant le client et créant un tunnel OpenVPN (interface tun0) à la machine B
(adresse IP en VPN : 192.168.1.2)
(adresse IP local : 192.168.0.2)

Enfin, j'ai une machine C sur le même réseau que B mais n'étant pas en VPN (accès par ethernet sur eth0)
(adresse IP local : 192.168.0.3)

Mon objectif est lors que je tape "telnet 192.168.0.2 49200" j'obtiens le même résultat que "telnet serveur.fr 49200" ", car actuellement ce n'est pas le cas
(il s'agit d'un serveur Upnp sur le port 49200)

Merci de votre aide.
Actuellement j'ai essayé

iptables -I FORWARD -i eth0 -p tcp -d 192.168.1.1 --dport 49200 -j ACCEPT
iptables -I FORWARD -i eth0 -p udp -d 192.168.1.1 --dport 49200 -j ACCEPT
iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 49200 -j DNAT --to-destination 192.168.1.1:49200
iptables -t nat -I PREROUTING -i eth0 -p udp --dport 49200 -j DNAT --to-destination 192.168.1.1:49200

OU

iptables -t nat -A POSTROUTING -d 192.168.1.1 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.1 -p tcp --dport 49200 -j DNAT --to 192.168.1.1

  • # resolution dns?

    Posté par  . Évalué à 2. Dernière modification le 26 septembre 2013 à 01:51.

    ca ressemble fichtrement à un problème de dns via openvpn plutôt qu'à un problème de routage, surtout si le serveur répond à un ping. à vérifier.

    un exemple pour l'option dhcp-option qui va bien ici: http://claw.triple6.org/linux/openvpn-kann-keine-hostnames-auflosen/?lang=en

  • # il est ou ton service openvpn ?

    Posté par  . Évalué à 2. Dernière modification le 26 septembre 2013 à 07:33.

    de ce que je vois tu as le reseau suivant :

    (machine B)[192.168.0.3]<->[192.168.0.2](machine B)[192.168.1.2] <->[192.168.1.1](serveur A)
    

    je ferais la combinaison de tes regles :
    1°) le prerouting, pour reecrire la destination de la trame
    2°) le forward, pour laisser passer la trame
    3°) le masquerade, pour laisser croire que la trame vient de 192.168.1.2 et permettre ainsi à 192.168.1.1 d'envoyer sa reponse

    ta derniere ligne ne fait rien
    tu lui dit de changer en prerouting la destination (-i eth0 -d 192.168.**1.1** ) en la meme adresse (-j DNAT 192.168.**1.1**)
    elle devrait etre en -J SNAT 192.168.1.2 pour faire croire que c'est 192.168.1.2 qui pose la question
    mais c'est sensiblement pareil que la masquerade juste au dessus

    de plus, je doute que ton interface vpn soit eth0, mais doit plutot etre tun0 ou tap0 suivant comment tu as créés ton VPN

  • # Plus d'explication, concernant mon problème

    Posté par  . Évalué à -1. Dernière modification le 26 septembre 2013 à 23:34.

    Pour information, ce n'est pas un problème de DNS (c'est pour l'exemple ici) mais tout est appelé par adresse IP.
    Quand je redirectionne le port 80 vers 192.168.1.1:80, j'arrive à accéder à Apache du serveur. Par contre, quand j'essaye un telnet ca ne fonctionne pas quand j'accéder au 49200, en passant par la redirection sinon en direct c'est OK. Le port 49200 est un serveur Upnp.

    Le flux fait 192.168.1.2 (Mon ordinateur avec un client Upnp) <=> eth0 <=> 192.168.1.2 (client VPN, serveur Upnp) <=> tun0 <=> 192.168.1.1 (serveur OpenVPN) si tout va bien.
    C'est pouyr cela que j'ai mis eth0, car ça entre par eth0 puis fait la direction vers 192.168.1.2 (part sur tun0)

    Je ne suis pas très fort en iptables, si vous pouvez m'aider, ca serait avec grande joie, j'ai cherché sur Internet et essayé d'adapter.

    Merci

    • [^] # Re: Plus d'explication, concernant mon problème

      Posté par  . Évalué à 2.

      probleme IP
      dans le shema que tu viens de faire les deux coté de ton tun on la meme plage d'IP sur les cartes reseaux.

      j'imagine que c'est une erreur de copier/coller

      d'ailleurs il serait bon d'avoir un 3e reseau pour ton vpn
      ex :
      reseau local chez toi : 192.168.1.0/24
      reseau distant : 192.168.0.0/24
      reseau vpn : 172.16.0.0/16

      ce serait ainsi plus facile d'ecrire tes regles de routage puis de parefeu
      car tu pourras dire à ta machine locale qu'il faut passer par 172.16.0.0 pour joindre 192.168.0.0

      • [^] # Re: Plus d'explication, concernant mon problème

        Posté par  . Évalué à -1.

        Très bien, je vais essayer ce que tu m'as dit, merci pour l'information.
        Le réseau distant est un serveur OVH sur internet, donc 1 seule machine.

        Je vais modifier le VPN en 172.16.x.x

        Encore merci, je vous tiens au courant ;)

        • [^] # Re: Plus d'explication, concernant mon problème

          Posté par  . Évalué à 2. Dernière modification le 28 septembre 2013 à 12:56.

          donc il ne doit pas y avoir de probleme.
          car tu as le reseau suivant quand le VPN est ouvert.

          serveur A (IP publique)
          |
          (172.16.X.Y)
          VPN
          (172.16.X.Z)
          |
          machine B (192.168.1.X)
          |
          switch -> box internet/dhcp
          |
          machine C (192.168.1.Y)
          

          il faut donc juste regler ton serveur UPNP pour ecouter sur l'interface 172.16.X.Y plutot que sur l'ip publique
          le VPN devrait faire le reste et permettre à la machine B de voir le systeme UPNP

          si ca ca marche, alors il reste juste à regler :

          • la machine C pour envoyer ses demandes UPNP vers machine B plutot que de broadcast sur le reseau
          • la machine B pour faire suivre les demandes UPNP arrivant sur eth0 vers tun0 (le vpn) en faisant du masquerade pour laisser croire au vpn que ca vient de lui.
  • # Telnet OK mais pas de serveur upnp !

    Posté par  . Évalué à 0.

    Bonsoir,

    J'ai essayé ce que tu m'as dit, j'ai enfin pu me connecter en telnet sur le port 49200, de la machine C vers la machine A. J'ai donc un tunnel OpenVPN avec comme adresse du serveur 172.16.0.1

    Quand je connecte ma machine C directement au serveur OpenVPN, j'arrive à voir mon serveur Upnp (avec un client) depuis toujours (ça prouve que le serveur Upnp fonctionne bien)

    mais quand ma machine C passe par la machine B puis par l'OpenVPN vers la machine A, je n'ai pas le serveur dans la liste :-( J'ai mis minidlna, configuré sur le port 49200 pour le serveur Upnp.

    Merci de votre aide

    • [^] # Re: Telnet OK mais pas de serveur upnp !

      Posté par  . Évalué à 0.

      J'ai surement des ports à ajouter !!! :

      lsof -i4 -n | grep minidlna
      minidlna 29948 minidlna 5u IPv4 3190789 0t0 UDP *:1900
      minidlna 29948 minidlna 7u IPv4 3190790 0t0 TCP *:49200 (LISTEN)
      minidlna 29948 minidlna 8u IPv4 3190791 0t0 UDP 172.16.0.1:39719

      • [^] # Re: Telnet OK mais pas de serveur upnp !

        Posté par  . Évalué à 0.

        J'ai essayé :

        iptables -t nat -A POSTROUTING -d 172.16.0.1 -j MASQUERADE
        iptables -t nat -A PREROUTING -i eth0 -d 172.16.0.1 -p tcp --dport 49200 -j DNAT --to 172.16.0.1
        iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 49200 -j DNAT --to-destination 172.16.0.1:49200
        
        iptables -t nat -A PREROUTING -i eth0 -d 172.16.0.1 -p udp --dport 1900 -j DNAT --to 172.16.0.1
        iptables -t nat -I PREROUTING -i eth0 -p udp --dport 1900 -j DNAT --to-destination 172.16.0.1:1900
        
        iptables -t nat -A PREROUTING -i eth0 -d 172.16.0.1 -p udp --dport 39719 -j DNAT --to 172.16.0.1
        iptables -t nat -I PREROUTING -i eth0 -p udp --dport 39719 -j DNAT --to-destination 172.16.0.1:39719
        

        Mais ca ne fonctionne toujours pas :-(

        • [^] # Re: Telnet OK mais pas de serveur upnp !

          Posté par  . Évalué à 2.

          un bout de l'erreur

          iptables -t nat -A PREROUTING -i eth0 -d 172.16.0.1 -p tcp --dport 49200 -j DNAT --to 172.16.0.1
          iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 49200 -j DNAT --to-destination 172.16.0.1:49200

          traduction :
          si le paquet arrive sur eth0, et qu'il est à destination de 172.16.0.1, protocole tcp vers le port 49200
          alors tu le renvoie vers l'adresse ip 172.16.0.1 (-j DNAT --to 172.16.0.1

          ce qui finalement ne fait rien puisqu'il n'y a rien à modifier.

          ce que tu cherches à faire, c'est :

          1°) sur machine C, lui dire de passer par B pour joindre A,
          ca se fait avec une simple route, voire meme ta machine B est deja la passerelle par defaut des machines de ton reseau.

          2°) sur machine B, autoriser l' ip_forward entre les interfaces (echo 1 >/proc/sys/net/….)

          3°) faire du masquerade ou du SNAT pour changer l'emetteur du paquet pour faire croire à la machine A que c'est machine B qui fait la demande.

          Neanmoins, ca semblait fonctionner puisque tu pouvais faire un telnet.

    • [^] # Re: Telnet OK mais pas de serveur upnp !

      Posté par  . Évalué à 2.

      As-tu pensé au fait que l'upnp utilise aussi du multicast?

      • [^] # Re: Telnet OK mais pas de serveur upnp !

        Posté par  . Évalué à 0. Dernière modification le 29 septembre 2013 à 23:47.

        Je n'y ai pas pensé, je pensais que j'avais juste à redirectionner les ports, je pensais que ca fonctionnerait.

        Que dois-je donc faire? Car actuellement la machine A (Serveur OpenVPN) relié directement à la machine C ça fonctionne mais pas de C => eth0 => B => tun0 => A

        Merci

        • [^] # Re: Telnet OK mais pas de serveur upnp !

          Posté par  . Évalué à 0.

          J'ai vu qu'il fallait utiliser

          iptables -A INPUT -i eth0 -m pkttype --pkt-type multicast -j ACCEPT

          Mais ca ne marche toujours pas, j'avoue je ne suis pas un pro de l'iptable !

          • [^] # Re: Telnet OK mais pas de serveur upnp !

            Posté par  . Évalué à 0.

            J'ai vu ca aussi sur un site, mais je ne sais pas comment l'adapter !
            Il l'utilisait pour du " multicast streaming"

            sudo iptables -L INPUT
            sudo iptables -R INPUT [position in list] -p all -s base-address.mcast.net/8 -j ACCEPT
            sudo iptables -R INPUT [position in list] -p all -d base-address.mcast.net/8 -j ACCEPT

            sudo iptables -L OUTPUT
            sudo iptables -R OUTPUT [position in list] -p all -s base-address.mcast.net/8 -j ACCEPT
            sudo iptables -R OUTPUT [position in list] -p all -d base-address.mcast.net/8 -j ACCEPT

          • [^] # Re: Telnet OK mais pas de serveur upnp !

            Posté par  (site web personnel) . Évalué à 2.

            Ni du réseau apparemment.

            ça dépend des protocoles / utilisés et applications.

            Tu vois qu'une partie du problème.

            Système - Réseau - Sécurité Open Source

Suivre le flux des commentaires

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