Bonsoir,
Je vous fait part d'un problème que je n'arrive pas à résoudre malgré de nombreuses recherches...
Il s'agit d'un problème de routage et de partage de connexion avec iptables.
J'ai une machine sous ubuntu server qui me sert de passerelle pour accéder à Internet.
Sur son interface eth0, elle dispose d'une connexion au net.
Elle établit une connexion à un premier VPN via une interface virtuelle tun0.
A travers tun0, elle établit une connexion à un second VPN via une interface virtuelle tun1.
Le but du jeu est de router tous les paquets sur tun1, sauf ceux de certaines plages IP qui doivent transiter sur tun0.
En local sur cette machine, en configurant mes routes, c'est nickel chrome et ça fonctionne exactement comme je veux.
Par contre, une fois que j'applique mes règles iptables, c'est toujours nickel en local sur la machine... mais pas du tout sur les autres PC qui sont censés profiter de la connexion routée par ma passerelle.
Les symptômes constatés sont :
- Pour le trafic censé passer par tun1, tout baigne !
- Pour le trafic censé passer par tun0, là par contre c'est pas bon du tout. Mes connexions SSH se coupent au bout d'un moment aléatoire (et je n'ai même pas de "connexion closed", la console "freeze", c'est tout.). L'envoi de mails fonctionne une fois sur deux, jamais pour des gros mails ou des mails avec pièces jointes. Lors de la soumission de certains formulaires, la page ne se charge jamais "en attente..." indéfiniment.
Voilà mes règles (j'ai fini par tout réinitialiser à ACCEPT par désespoir, mais évidemment ça ne change rien :))
# Réinitialisation
iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Idem, table NAT
iptables -t nat -F
iptables -t nat -X
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
Je débute totalement avec iptables, il y a donc peut être une erreur monstrueuse là dedans... mais en cherchant et en comparant avec les divers howto "partage de connexion internet", je n'ai pas trouvé...
Merci d'avance pour vos lumières !
# Davantage de détails stp
Posté par tipmeabout . Évalué à 1.
tun0 se connecte "à un 1er VPN": tun0 t'établit un tunnel entre toi et une machine/routeur où tourne un service VPN. A partir de là, ta machine est connecté en pseudo local pour les machines du réseau distant. OK pour moi.
tun1 doit t'établir un 2e tunnel entre ta machine étant vue comme locale sur le réseau distant et un autre serveur VPN. Question bête: es-tu obligé de passer par le 1er tunnel ? Ne peux-tu pas établir une connexion directe vers ce 2e serveur VPN ? Ce serait peut-être plus simple non ?
Peux-tu également donner les IPs qu'aura ta machine (change les si tu veux, mais c'est pour savoir si c'est les mêmes plages utilisées).
[^] # Re: Davantage de détails stp
Posté par CyberjujuM . Évalué à 1.
eth0 me donne en réalité accès à un réseau local. Via ce réseau local j'ai accès à une passerelle VPN qui me permet de me connecter au "VPN 1" (10.31.0.0/16).
Via ce "VPN 1", je peux accéder à un proxy qui me donne accès à l'extérieur... et donc oui, je suis obligé de passer par "VPN 1" (tun0) pour me connecter à "VPN 2" (tun1).
Sur "VPN 2" j'ai une adresse en 10.26.0.0/16. Et c'est ma passerelle du "VPN 2" (10.26.0.1) qui me donne réellement accès à Internet !
D'où mon routage : "tous les paquets sur tun1" (internet) SAUF certaines plages qui sont seulement accessibles via "VPN 1" (si je passe par internet pour m'adresses à ces plages d'IP les serveurs ne me répondront pas).
J'espère avoir été plus clair :)
# peut etre un problème de MTU
Posté par jluce . Évalué à 2.
pex tu faire un ifconfig sur ta machine et nous envoyer le resultat
aux niveau iptables, tu ne peux pas etre plus ouvert
a+
je plussoie et je paie ma tournée !!!!
[^] # Re: peut etre un problème de MTU
Posté par CyberjujuM . Évalué à 1.
Sur la passerelle, le MTU de eth0 et de tun1 est à 1500.
Par contre pour tun0... 1390 !
cyberjujum@gateway:~$ ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.1.254 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::222:15ff:fed3:8e28/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:950394 errors:0 dropped:954033481 overruns:0 frame:0
TX packets:1169709 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:501630327 (501.6 MB) TX bytes:752817774 (752.8 MB)
Interrupt:220
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1268172 errors:0 dropped:0 overruns:0 frame:0
TX packets:1268172 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:344919896 (344.9 MB) TX bytes:344919896 (344.9 MB)
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.31.xx.xx P-t-P:10.31.xx.xx Mask:255.255.248.0
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1390 Metric:1
RX packets:6114 errors:0 dropped:0 overruns:0 frame:0
TX packets:5485 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:1787334 (1.7 MB) TX bytes:485448 (485.4 KB)
tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.26.0.6 P-t-P:10.26.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4298 errors:0 dropped:0 overruns:0 frame:0
TX packets:2007 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2182609 (2.1 MB) TX bytes:155133 (155.1 KB
Sur le PC sur lequel je suis, qui accède au net via la passerelle, le MTU est également de 1500.
Pauvre iptables, je lui mettais tout sur le dos alors que si ça se trouve il n'y est pour rien...
Donc pour résoudre le problème, il faudrait que je fasse quoi ? Que j'augmente le MTU de tun0 à 1500 ? Peut être pas une bonne idée, si automatiquement il s'est mis à cette valeur... ou alors je diminue tous les autres ?
[^] # Re: peut etre un problème de MTU
Posté par CyberjujuM . Évalué à 2.
Par contre pour les mails avec pièce jointes, toujours le même problème. Idem pour les déco SSH (peut être un peu plus rares qu'avant cependant).
Mais après il ne suffit peut-être pas de le faire seulement sur le poste client...
Pour être le plus précis possible, mon réseau complet se compose :
- D'un routeur sous OpenWRT, sur lequel sont connectés :
- Ma passerelle sous Ubuntu server (celle dont je parle ici)
- Mes postes clients
- Un second réseau sur l'interface WAN du routeur (le fameux réseau local qui me donne accès à la passerelle du "VPN 1").
Donc faut-il modifier les MTU partout ? Ou est-ce que c'est sensé suffire sur le client ?
Et donc je rappelle que sur la passerelle sous ubuntu, tout fonctionne correctement... (je viens d'installer thunderbird et d'envoyer un mail avec pièce jointe depuis la passerelle, ça passe impec).
Merci pour votre aide en tous cas :)
[^] # Re: peut etre un problème de MTU
Posté par NeoX . Évalué à 2.
PC =x Ubuntu server (passerelle) x=x openwrt (firewall, passerelle) x= LAN =x VPN1 x== quelquepart ==x reseau2 x==x VPN2 x== ...
non ?
[^] # Re: peut etre un problème de MTU
Posté par CyberjujuM . Évalué à 1.
PC x=x OpenWRT (passerelle LAN résidence) x=x Ubuntu server (passerelle VPNs) x= OpenWRT & LAN résidence =x VPN 1 x= Proxy dispo via le VPN 1 =x VPN 2 x=x Internet
L'OpenWRT qui a deux interfaces réseau me permet de partager le LAN de ma résidence (branché sur son port "WAN") avec mon petit LAN de chez moi (mes PC et ma passerelle Ubuntu server étant branchés sur les 4 ports de son interface "LAN"). Je ne pouvais pas le faire direct sur ma passerelle Ubuntu server qui n'a qu'une interface réseau.
Mon PC passe donc par le WRT pour accéder à ma passerelle Ubuntu server, qui elle-même repasse par le WRT pour se connecter aux deux VPN et repasse encore par le WRT pour répondre à mon PC.
Si je suis pas clair, n'hésite pas à me demander de reformuler.
Merci :)
(En voyant l'aperçu du post je comprends pourquoi tu as utilisé des x=x et non pas des <=> :))
[^] # Re: peut etre un problème de MTU
Posté par NeoX . Évalué à 2.
x=x PC
|
x=x passerelle
|
x=x openWRT x=x LAN de la residence
puis tu veux aller sur internet (que ne te fournit pas la residence ou de maniere brider)
en allant d'abord
[ (x=x VPN 1 ) x=x VPN 2 ] x=x Internet
donc il faut en fait "simplement"
changer les routes (ce que tu as deja fait)
mais il faut peut-etre les "ponderer"
en effet il ne faut pas que la machine vers laquelle tu fais ton SSH (par exemple)
soit dispo au travers de vpn1 ET de vpn2 en meme temps
sinon la machine ne sait plus ce qu'elle doit faire
[^] # Re: peut etre un problème de MTU
Posté par CyberjujuM . Évalué à 1.
Cette passerelle est connectée au LAN de la résidence (10.203.0.0/16) au travers du WRT. Grâce au LAN de la résidence elle se connecte au VPN 1 (10.31.0.0/16) et grâce au VPN 1 elle se connecte au VPN 2 (10.26.0.0/16).
Sur cette passerelle j'ai en effet changé les routes pour amener les paquets soit sur le VPN 1, soit sur le VPN 2 selon leur destination.
Si je surfe, que je me connecte en SSH ou que j'envoie des mails depuis ma passerelle, tout fonctionne parfaitement.
C'est lorsque que j'utilise un autre PC, connecté au WRT et configuré pour utiliser ma passerelle sous Ubuntu comme passerelle que je rencontre les problèmes mentionnés plus haut (déconnexions SSH, pages qui se chargent indéfiniment, pb d'envoi de mail qui échoue dès que le mail est un peu volumineux...), et seulement pour des serveurs auxquels j'accède via le VPN 1 (pour bon nombre de ces serveurs je suis d'ailleurs obligé de passer par le VPN 1, ils ne sont pas accessibles depuis l'extérieur).
Donc le coup du MTU me semblait pas mal, puisque l'interface tun0 qui représente la connexion au VPN 1 a un MTU de 1390, 1500 pour toutes les autres y compris mon PC.
D'ailleurs, quand je passe le MTU de mon PC à 1390, les envois de mails merdent moins (des mails texte avec du long contenu passent alors qu'avant ils ne passaient pas, par contre avec des pièces jointes ça ne fonctionne toujours pas) et certaines pages qui posaient problème auparavant (ex : certains formulaires dans phpMyAdmin) fonctionnent bien. Mais j'ai toujours le problème de mails avec pièces jointes et de déconnexions SSH (peut être un peu moins fréquent cependant pour les décos SSH).
Penses-tu, comme ça avait été proposé, que ça soit effectivement un problème de MTU ? Le problème est que je ne sais pas trop quels MTU modifier comme j'ai pas mal de choses entre moi et le net... (mon PC, mon WRT, ma passerelle...).
Pour les routes, le problème que tu décris est-il compatible avec le fait que si je suis directement sur ma passerelle (si je ne passe pas par un autre PC) tout fonctionne parfaitement ?
J'ai également essayé de ne plus passer par la passerelle et d'effectuer les connexions à mes VPN depuis mon PC directement (en connectant directement mon PC au LAN de la résidence ou en passant par le WRT). Et là tout fonctionne nickel, comme quand je suis directement sur la passerelle en fait. Donc ça doit bien être quelque chose entre mon PC et la passerelle...
[^] # Re: peut etre un problème de MTU
Posté par NeoX . Évalué à 2.
il s'agit de la limite max du paquet avant fragmentation.
ainsi faire passer un MTU de 1500 dans un tuyau de 1390 va forcement couper le paquet en (environ) 1300 et 200 (plus ou moins les entetes de paquets)
donc à toi de regler les enchainements pour que ca se passe bien
par exemple un MTU de 1000 sur ton PC, qui envoie à la passerelle, qui envoie avec un MTU de 1100 au VPN1, qui envoie avec un MTU de 1390 au VPN2
que quelqu'un me corrige si je me suis trompe, car parfois je dis des betises :p
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.