Connexion client à serveur openvpn > plus d'accès internet

C’est l’option redirect-gateway qui crée une route par défaut via le tunnel.
L’autre route, c’est celle qui existe normalement pour sortir en l’absence du tunnel.

Quand tu parles de l’accès à ton site hébergé, il s’agit de l’accès entrant au serveur web sur la machine elle-même depuis l’extérieur ?

Pascal: Une table comme

Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 10.8.1.205 128.0.0.0 UG 0 0 0 tun0 10.8.0.1 10.8.1.205 255.255.255.255 UGH 0 0 0 tun0 10.8.1.205 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 94.23.144.32 192.168.0.254 255.255.255.255 UGH 0 0 0 eth1 128.0.0.0 10.8.1.205 128.0.0.0 UG 0 0 0 tun0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Devrait faire ce qu’il veut non (tout le traffic en dehors de10.8.0.1, 10.8.1.205 et de 94.23.144.32 qui doit être le serveur VPN passe par le réseau VPN (y compris les DNS d’ailleurs ce qui à mon avis peut expliquer l’absence d’un retour de google.com, un ping 82.66.248.156 devrait fonctionner sauf si les pings ne sont pas relayés). Sinon, une telle table devrait empêcher l’accès à son serveur.

Je me trompe?

Bonjour,
J’ai fait une partie du chemin grâce à vos conseils. Maintenant j’ai accès à internet, j’ai gardé l’intégralité de la table de routage crée par redirect-gateway et j’ai simplement ajouté dans le resolv.conf les DNS indiqués par redirect-gateway.

Il me reste donc à rétablir l’accès à mon site hébergé, il s’agit de l’accès entrant au serveur web sur la machine elle-même depuis l’extérieur.

Si tu veux que le serveur soit accessible de l’extérieur via le VPN, alors il n’y a rien à ajouter côté routage. Il faut juste faire pointer le nom de domaine du site vers l’adresse IP de l’interface tun. Si au contraire le serveur doit être accessible depuis la connexion internet normale, voir ma première réponse.

Bonjour,
Je viens de faire deux essais :

  1. Dans Dyndns j’ai fais pointer mon nom de domaine vers l’adresse IP externe du VPN >>>> négatif
  2. Toujours dans Dyndns j’ai fais pointer mon nom de domaine vers l’adresse IP de l’interface tun >>>> négatif
    :013

Flûte, je n’avais pas fait attention que le tunnel utilisait des adresses IP privées (10.x.y.z) qui ne sont pas routées sur l’internet public. Donc à moins que tu puisses configurer une redirection de port sur le serveur de tunnel, tu ne peux pas rendre ton serveur accessible de l’extérieur via le tunnel.

Je n’ai pas accès au paramétrage du serveur vpn, puisque c’est un serveur externe gratuit : freedom-ip.com

Donc le tunnel ne peut servir que pour des connexions sortantes. Ton serveur ne peut être accessible que via l’adresse IP publique de la connexion internet normale, avec redirection de port par la box/routeur. Et pour qu’il reste accessible lorsque le tunnel est monté, il faut du routage avancé comme décrit plus haut.

Il faut donc que j’ajoute une route avec la fonction “ip route …” ?

Il faut les trois commandes (ip route et ip rule) mentionnées dans mon premier message.
La commande ip rule dit que si l’adresse source d’un paquet est 192.168.0.x, ce qui est le cas des paquets de réponse du serveur, alors il doit être routé selon la table de routage 99. Dans cette table les deux commandes ip route créent une route pour le réseau local et une route par défaut via la box/routeur.

L’l’adresse source d’un paquet du serveur n’est pas plutôt en 10.X.X.X

Les connexions entrantes arrivent de la box/routeur sur l’adresse 192.168.0.x, alors le serveur répond avec la même adresse.

OK un grand merci je vais essayer ça

Bonjour,
Reprise des activités ce matin : Après avoir ajouté

Code: ip route add default via 192.168.0.254 dev eth1 table 99 ip route add 192.168.0.0/24 dev eth1 table 99 ip rule add from 192.168.0.0/24 lookup 99

J’ai bien vérifié que les nouvelles routes étaient actives avec :

ip route list table all ip rule list

Négatif, en fait le routage s’arrête à la page d’accueil du serveur vpn lorsque j’essaie de joindre mon nom de domaine de l’extérieur.
A priori j’ai l’impression qu’il n’est pas possible pour un client vpn de router une requête externe vers mon “tuyau vpn”.
J’ai aussi essayé en remplaçant 192.168.0.0/24 par 192.168.0.100 (IP locale de mon serveur Apache)

Je ne comprends pas ce que tu veux dire. Peux-tu expliquer ?

Quel client VPN ? Si j’ai bien compris, il était question que le site sur le serveur web reste accessible par son adresse publique normale lorsqu’il est client VPN.
Que fais-tu exactement ?

Cela veut dire que lorsque je tape l’url de mon site internet je vois la page d’accueil de freedom-ip.fr

donc pour moi le routage s’arrête à la page d’accueil de freedom-ip.fr et ne continue pas jusqu’aux adresses 10.X.X.X

A priori, j’ai l’impression qu’il n’est pas possible pour un client vpn (qui n’a pas accès au routage du serveur vpn) de router une requête externe vers mon adresse en 10.X.X.X

Je n’ai pas répondu à ta 2ème question :
Ben oui je voudrais que mon site soit accessible par son adresse publique normale lorsqu’il est client VPN.
Mais actuellement ça ne marche pas, car avec mon ordi portable 3G j’essaie d’y accéder de l’extérieur et en fait j’ouvre la page d’accueil de freedom-ip

Visiblement le nom de domaine de ton site pointe vers l’adresse IP du serveur VPN. On a déjà vu que ça ne peut pas marcher, le serveur VPN ne faisant pas la redirection. Le nom de domaine de ton site doit pointer en permanence vers l’adresse IP publique de la connexion internet “normale”. Si l’adresse IP est mise à jour automatiquement avec un client de DNS dynamique depuis ton serveur, alors il faudra faire en sorte qu’il annonce l’adresse IP publique de la connexion internet normale et non celle du VPN.

Bonjour,

YYYYYYYYYYEEEEEEEEEEEEEEEEAAAAAAAAAAAAAAAHHHHHHHHHHHHH !!!
ça marche >> lorsque le vpn était désactivé j’ai stoppé mon ddclient pour conserver mon IP de FAI >>>> puis réactivation du VPN et là … Miracle ou plutôt non, je doit reconnaitre avoir eu l’aide d’une vraie compétence.

Un grand merci à PascalHambourg

Je dois maintenant automatiser et pérenniser les [ip route] et [ip rule] pour qu’à chaque [reboot] mon vpn s’active.
Merci encore

Il faut donc empêcher ddclient de faire la mise à jour de l’adresse via le VPN, ou le forcer à passer par la connexion internet normale. Je ne connais pas bien le fonctionnement de ddclient et compagnie, ayant la chance (si on peut dire, mais en fait c’est un choix) de bénéficier d’adresses IP publiques fixes depuis que j’ai l’ADSL. J’imagine qu’il communique en HTTP(S) avec un serveur distant de DynDNS. Méthodes envisageables, faisabilité à étudier :

  • forcer ddclient à utiliser l’adresse d’eth1 comme source de la connexion au serveur de mise à jour (mais pas comme adresse IP à associer au nom de domaine évidemment) ;
  • forcer ddclient à utiliser un port source défini, qu’il serait possible de marquer avec iptables pour le router avec la table 99 ;
  • si ddclient s’exécute sous un utilisateur spécifique, marquer les paquets émis par cet utilisateur avec iptables pour les router avec la table 99 ;
  • si l’adresse IP du serveur DynDNS ne change pas, créer une route spécifique pour elle ; c’est probablement la méthode la plus simple. Si le nom de domaine du serveur résoud en plusieurs adresses IP, créer une route pour chaque adresse.

Les ip route/rule et le VPN sont deux choses indépendantes. Pour exécuter les premières au démarrage, le meilleur endroit est dans le fichier /etc/network/interfaces si c’est lui qui configure eth1 (je suppose en statique) :

iface eth1 inet static address 192.168.0.x ... up ip route add default via 192.168.0.254 dev eth1 table 99 up ip route add 192.168.0.0/24 dev eth1 table 99 up ip rule add from 192.168.0.0/24 lookup 99 down ip rule del from 192.168.0.0/24 lookup 99
Inutile d’ajouter des commandes pour supprimer les routes, elles le sont automatiquement lorsque l’interface est arrêtée.

Pour démarrer automatiquement openvpn au démarrage, je suppose qu’il faut regarder du côté de /etc/default/openvpn.