Voilà plusieurs jours que je penche sur le sujet et impossible de trouver la solution.
Je dispose d’un Raspberry Pi qui fait à la fois office de hotspot wifi et de serveur web.
Le serveur web doit être accessible de l’extérieur et en local.
Openvpn est installé sur le raspberry. Il a pour vocation d’anonymiser le trafic des machines connectées en wifi au raspberry à travers wlan0 → tun0.
Dans le but recherché, le fait qu’eth0 soit anonymisé par le vpn ou non n’a pas d’importance.
Lorsque ovpn est lancé.
Les clients machines connectées au raspberry sont bien anonymisée (wlan0 → tun0).
Les clients machines connectées au raspberry arrive bien à se connecter en local au serveur web (ip du raspberry sur wlan0).
Par contre, dès que ovpn est lancé, le serveur web n’est plus joignable de l’extérieur; pas de ping possible non plus.
Mes recherches sur le forum et sur le web se sont révélées infructueuses.
Par avance merci.
En fait, tout le trafic entrant semble redirigé vers tun0.
Le ping, le ssh, le serveur web par exemple deviennent inaccessible de l’extérieur dès le lancement d’openvpn
Merci pour la précision, je tentais de simplifier pour que l’on comprenne mieux mais ce n’était peut être pas opportun.
En tout cas, ce commentaire ne fais pas avancer le sujet
Tu pouvais simplement dire que le VPN sert d’accès internet pour les machines en wifi.
@Zargos n’a pas besoin de faire avancer le sujet. J’ai proposé une piste, maintenant la balle est dans ton camp.
Qu’appelles-tu une « adresse interne » ?
Pourquoi ? Et quel rapport entre « publique » et « interne » ?
Mais si, on peut savoir: on voit 92.* plusieurs fois, il s’agit donc d’une adresse IP publique. Par contre le masque 255.0.0.0 associé me semble erroné, le bloc alloué au FAI par le RIPE étant 92.0.0.0 - 92.15.255.255.
une passerelle, c’est une IP par laquelle les machines vont envoyer leur traffic si elles ne savent pas où se trouve un réseau qui ne leur est pas connu (donc, i.e. tous les réseaux en dehors de celui dans lequel elles sont définie).
Une adresse IP interne, c’est une IP du réseau local. Une adresse externe c’est une IP externe au réseau local.
Ton, adresse externe 92… est effectivement avec un mauvais masque comme celà a été dit.
Donc la passerelle d’un réseau local est une machine obligatoirement dans le même réseau.
La machine qui reçoit le VPN renvoie vers le routeur qui lui envoie vers l’extérieur. et ce même routeur lui recoit les requetes externe sur son IP publique et les envoie vers le serveur Web.
Donc:
1- eth0 est donc l’interface publique celle qui est raccordée à internet.
2- wlan0 est donc l’interface interne celle qui est sur ton réseau local.
3- C’est donc wlan0 qui « porte » les passerelles nécessaires à te réseaux locaux (VPN ou autres).
4- c’est eth0 qui reçoit les requêtes externe (d’internet).
5- l’ip de serveur web est en local
6- il y a donc un forward de l’externe vers l’interne, via un nat
7- la passerelle du réseau VPN est l’adresse IP du réseau VPN vers le réseau local (porté par tun0 vers wlan0, à priori)
tun0 a pour destination 10.200.0.37. Qui porte cette IP?
D’où sort le réseau 128.0.0.0 qui n’est porté par aucun réseau?
Ta table de routage a des adresses réseau qui ne sont portés par aucune interface.
8- la passerelle du réseau local est l’adresse IP locale de wlan0
9 dans le routage il y a conflit entre les deux lignes:
Avant tout, le terme « passerelle » (« gateway ») est jugé trop vague et son usage dans ce contexte est déconseillé. Je ne sais plus quel RFC recommande d’utiliser le terme « routeur » à la place. Je vais donc appliquer cette recommandation.
Ensuite un routeur est une machine, pas une adresse IP. Une machine envoie du trafic à travers un routeur, pas à un routeur. La nuance est importante : l’adresse IP de destination des paquets n’est pas l’adresse du routeur. Techniquement, un routeur n’a même pas besoin d’avoir une adresse IP pour router.
Pour finir, les machines peuvent parfaitement savoir où se trouve le réseau de destination et qu’elles doivent passer par tel routeur pour l’atteindre.
Un routeur sert à joindre d’autres réseaux, c’est tout. Pas besoin de rajouter des hyptohèses.
Bien. Il te reste à définir ce qu’est le réseau local. Je suis sérieux.
Par exemple, est-ce que le segment ethernet qui relie mon routeur d’accès internet à mon modem ADSL (qui est un simple pont, pas un routeur) fait partie du réseau local ?
Ce n’est pas « mon » adresse. Quant à dire si elle est externe, cela va dépendre de ta définition du réseau local.
C’est une évidence. Où veux-tu en venir, quel rapport avec l’adresse IP publique en 92.* ? J’ai l’impression qu’on s’égare.
La formulation de cette phrase est ambiguë. De quelle machine parles-tu et qu’entends-tu par « reçoit le VPN » ? Ce sujet concerne une machine qui est client VPN.
Elle renvoie quoi vers le routeur ? Quel routeur ?
Ce routeur lui renvoie ce qu’elle lui a envoyé vers l’extérieur ? Ça ne veut rien dire !
Cette phrase ne veut rien dire.
Je ne comprends pas cette phrase.
D’où sors-tu cela ? Le serveur web est sur la machine qui a l’adresse IP publique, il n’y a aucun besoin de forward ni de NAT.
Cette phrase ne veut strictement rien dire.
Probablement l’interface tun du serveur openvpn à l’autre bout du VPN. Aucune importance de toute façon, c’est un tunnel routé, on peut mettre ce qu’on veut (voire rien) comme adresse. La seule chose qui compte, ce sont les routes.
D’openvpn. Je te donne un indice :
Destination Passerelle Genmask Indic Metric Ref Use Iface
0.0.0.0 10.200.0.37 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.200.0.37 128.0.0.0 UG 0 0 0 tun0
default x.x.x.x 0.0.0.0 UG 202 0 0 eth0
Si on concatène les deux routes /1, qu’est-ce qu’on obtient ? Et quelle est la différence avec une route 0/0 unique ?
Evidemment puisque par définition cette table de routage contient des destinations extérieures à la machine.
Non, elles n’ont pas le même masque. Et même si elles avaient le même masque, elles n’ont pas la même métrique.