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 ashgan . É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 NeoX . Évalué à 2. Dernière modification le 26 septembre 2013 à 07:33.
de ce que je vois tu as le reseau suivant :
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 raynoxfr . É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 NeoX . É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 raynoxfr . É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 NeoX . É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.
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 :
[^] # Re: Plus d'explication, concernant mon problème
Posté par raynoxfr . Évalué à -1.
Oui, c'est ce que j'ai fait actuellement, le serveur écoute sur l'interface tun0, j'ai juste à refaire le test dès que possible ;)
Merci
# Telnet OK mais pas de serveur upnp !
Posté par raynoxfr . É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 raynoxfr . É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 raynoxfr . Évalué à 0.
J'ai essayé :
Mais ca ne fonctionne toujours pas :-(
[^] # Re: Telnet OK mais pas de serveur upnp !
Posté par NeoX . Évalué à 2.
un bout de l'erreur
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 Donk . Évalué à 2.
As-tu pensé au fait que l'upnp utilise aussi du multicast?
[^] # Re: Telnet OK mais pas de serveur upnp !
Posté par raynoxfr . É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 raynoxfr . É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 raynoxfr . É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 nono14 (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 - Ouvert à de nouvelles opportunités
[^] # Re: Telnet OK mais pas de serveur upnp !
Posté par raynoxfr . Évalué à 0.
Justement, je cherche à faire que B soit transparent… je pense que ça doit être possible… mais comment :-(
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.