OpenVPN: Routage de tout le trafic client via le VPN - Les clients non Windows ont-ils besoin de scripts supplémentaires côté serveur?


0

NB: je suis un noob de la mise en réseau, alors supposez que je ne sache rien et expliquer les choses en conséquence (ou fournir des liens vers plus d’informations).

J'essaie de configurer un serveur OpenVPN de sorte que tout le trafic client (y compris le trafic Web) soit acheminé via le VPN. Je suis le OpenVPN HOWTO et la section "Routage de l’ensemble du trafic client (y compris le trafic Web) par le biais du VPN" ( https://openvpn.net/index.php/open-source/documentation/howto.html#redirect ).

Ma configuration est:

  • Serveur OpenVPN (BeagleBone Black (BBB) ​​sur un réseau privé IP 10.240.233.2) connecté à mon routeur haut débit à home (sur le réseau privé IP 10.240.233.1).

  • Client (ordinateur portable fonctionnant sous Xubuntu GNU / Linux) connecté à un réseau externe.

Je peux avec succès:

  • Démarrer le serveur OpenVPN sur le BBB au démarrage

  • Connecter le client au VPN

  • Ping serveur OpenVPN (10.8.0.1) à partir du client (10.8.0.6) et vice versa

  • Envoyez une requête ping au routeur (10.240.233.1) à partir du client

Ce dernier a été réalisé par:

  • Ajout de la directive suivante au fichier de configuration du serveur: push "route 10.240.233.0 255.255.255.0"

  • Activation du transfert IP sur le serveur OpenVPN en modifiant /etc/sysctl.conf (Voici l'édition: # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1, après quoi la commande sudo sysctl net.ipv4.ip_forward les rendements net.ipv4.ip_forward = 1 )

  • Activer le transfert de tun à l’aide des commandes suivantes (à partir de ce guide: https://nikinuryadin.wordpress.com/2010/04/16/step-by-step-setting-up-openvpn-in-debian-with-routing-tun-connection/ ): sudo iptables -A INPUT -i tun+ -j ACCEPT et sudo iptables -A FORWARD -i tun+ -j ACCEPT

Maintenant pour le bit de redirection ...

J'ai ajouté les directives suivantes au fichier de configuration du serveur (du OpenVPN HOWTO):

push "redirect-gateway def1"
push "dhcp-option DNS 10.240.233.1"

NB: l’IP DNS poussé est celui de mon routeur large bande, que je peux cingler avec succès depuis le client lorsqu’il est connecté au VPN et que le serveur signale en tant que serveur de noms ( cat /etc/resolv.conf sur le serveur donne nameserver 10.240.233.1 )

J'ai ensuite utilisé la commande suivante pour NAT le trafic du client VPN sur Internet (à partir du HOWV OpenVPN):

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

(Oui, ma connexion au serveur OpenVPN avec le routeur large bande est signalée par le serveur comme suit: eth0 (en utilisant ifconfig ))

Finalement, j'ai fait les commandes suivantes pour sauvegarder les iptables et redémarrer le VPN (à partir du Niki Nuryadin lié ci-dessus):

sudo iptables-save
sudo /etc/init.d/networking restart
sudo /etc/init.d/openvpn restart

Je peux envoyer des requêtes ping à www.google.com et www.bbc.co.uk à partir du serveur OpenVPN. (Je peux aussi leur envoyer un ping depuis l'ordinateur portable sans être connecté au VPN, bien sûr!). Cependant, lorsque je suis connecté au VPN, je ne peux pas envoyer de requêtes ping à ces sites à partir du client.

Habituellement, si vous essayez d’envoyer une requête ping à un élément non disponible (par exemple, ping 192.168.7.2 ), vous obtenez un résultat comme celui-ci:

PING 192.168.7.2 (192.168.7.2) 56(84) bytes of data.

et puis il se bloque. Cependant, dans ce cas, lorsque le client est connecté au serveur OpenVPN et que j'essaie d'envoyer une requête ping à Google ou à la BBC, je n'obtiens aucune sortie.

Je ne trouve la réponse nulle part sur serverfault.com ou ailleurs. Le seul indice que j’ai est que le HOWV OpenVPN dit:

[Utiliser `push" dhcp-option DNS 10.240.233.1 "] configurera les clients Windows (ou les clients non Windows avec quelques scripts supplémentaires côté serveur ) à utiliser [10.240.233.1] comme serveur DNS.

Alors, ai-je besoin de scripts supplémentaires côté serveur? Ou y a-t-il un autre problème?

De plus, une fois que je peux cingler des sites Web et naviguer sur Internet, comment puis-je vérifier que tout le trafic passe effectivement par le tunnel OpenVPN et ne le contourne pas simplement comme avant?

Réponses:


0

J'ai depuis trouvé la réponse. C'était une faute de frappe dans le HOWTO. Les scripts supplémentaires sont requis sur le client côté, pas le serveur côté.

Ajoutez simplement ce qui suit au client fichier conf:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Et pour vérifier que tout le trafic traverse le tunnel, utilisez traceroute, par exemple.

traceroute google.com

La sortie montre la route empruntée par les paquets pour se rendre à la destination. Vous devriez voir la passerelle VPN (dans mon cas, mon routeur large bande chez moi) dans la sortie traceroute.

Un grand merci aux forums de la communauté OpenVPN pour leur aide: http://forums.openvpn.net/viewtopic.php?f=4&t=23249&p=67315&sid=f2657d061da760b5af60aec18dcea81e#p67315

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.