Rendre accessible un hôte derrière un NAT par VPN

Cet article va vous expliquer comment rendre accessible depuis le net une machine LAN située derrière un dispositif de NAT. Vous devez au préalable avoir configuré la liaison VPN entre cette machine et le serveur VPN distant.

 

Vous avez besoin de :
- Un serveur VPN extérieur accessible depuis le net
- Une machine derrière le NAT avec un client VPN
- Une connexion VPN entre les deux (voir article sur PPTPD)
- Une ip publique dédiée a la machine client

 

Côté serveur VPN :
- eth0       -> 8.8.8.8   (ip publique principale du serveur)
- eth0:0   -> 9.9.9.9  (ip publique dédiée a la future machine)
- ppp0      -> 192.168.30.1  (ip de l’interface vpn côté serveur)

 

Côté machine Cliente :
- eth0       -> 10.0.0.100  (ip lan de la machine)
- ppp0      -> 192.168.30.100 (ip de l’interface vpn côté client)

 

Règles Iptables à exécuter sur le serveur VPN :

Une fois la connexion établie, voici les règles iptables permettant de rediriger le trafic de l’ip 9.9.9.9 vers l’interface vpn et de rediriger le trafic de la machine cliente vers internet en ayant comme source l’ip 9.9.9.9 (et non l’ip principale 8.8.8.8) :

iptables -t nat -A PREROUTING -d 9.9.9.9 -j DNAT –to-destination 192.168.30.100
iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -j SNAT –to-source 9.9.9.9

N’oubliez pas que les règles iptables ne fonctionnent plus après un redémarrage. Pensez à faire un script contenant toutes vos règles. (/etc/init.d/regles-iptables.sh, et « update-rc.d regles-iptables.sh defaults » pour le lancer au démarrage)

 

Résumé :

Client –> Internet –> Serveur VPN –> LIAISON VPN –> Machine derriere le NAT

 

Installer un VPN pptp sous DEBIAN

VPN1Bonjour All !

Comment faire pour jouer sur internet depuis un réseau bloqué ?

Comment sécuriser sa connexion des petits malins qui regardent mes paquets ?

Comment accéder a son réseau local depuis un autre connecté à internet ?

Une solution simple à mettre en place, multi-user par login/password : le serveur PPTP

Installation :

#apt-get install pptpd

Ensuite comme à chaque installation d’un service on édite les fichiers de configuration :

# nano /etc/pptpd.conf

On doit  définir quelles ip donner à nos utilisateurs VPN. Pour cela on modifie 2 options : localip et remoteip.

- localip est l’ip que l’interface sur le serveur utilisera.

- remoteip est la plage d’ip disponibles pour les utilisateurs, le nombre d’ip disponibles sera aussi le nombre d’utilisateurs max connectés en même temps.

Exemple:

localip 192.168.30.1

remoteip 192.168.30.2-10

Ce qui donne que l’interface du serveur aura l’ip 192.168.30.1 et tous les clients auront une ip entre 192.168.30.2 et 192.168.30.10 ce qui donne 9 utilisateurs connectés en même temps au maximum.

Les utilisateurs sont contenus dans le fichier /etc/ppp/chap-secrets. Pour chaque utilisateur on doit ajouter une ligne dans ce fichier de la forme suivante :

login server password address

- login : le login de l’utilisateur (ex: toto).

- server : par défaut pptpd on peut le changer/trouver dans le fichier /etc/ppp/pptpd-options a la ligne name.

- password : le mot de pass requis pour l’utilisateur  (ex: password).

- address : définit l’ip de l’utilisateur de laquel il se connecte.

* autorise toutes les ips distantes

80.234.35.23 l’utilisateur sera obliger de se connecter depuis cette ip

!80.234.35.23 l’utilisateur ne pourra pas se connecter depuis cette ip

80.234.35.0/24 on précise le sous-réseau depuis lequel doit être connecté l’utilisateur

Exemple d’une ligne de chap-secrets :

toto pptpd password * => autorise l’utilisateur toto avec le mot de pass password à se connecter depuis partout

Ce qui suit va servir uniquement si vous voulez que vos utilisateurs puissent ressortir de votre réseau et accéder à internet à travers vous, par conséquent en utilisant votre connexion internet.

On va tout d’abord activer l’ip forwarding en mettant  « 1″ dans le fichier /proc/sys/net/ipv4/ip_forward

#echo « 1″ > /proc/sys/net/ipv4/ip_forward

Puis pour éviter de le retaper a chaque redémarrage on va faire que cette commande soit effectuée à chaque fois que l’interface passe en active.

#nano /etc/network/interfaces

On repère l’interface sortante puis on ajoute après la configuration de l’adressage résau (si il y en a une) : up echo « 1″ > /proc/sys/net/ipv4/ip_forward

Ce qui donne quelque chose du genre :

iface eth0 inet static

address 192.168.1.106

netmask 255.255.255.0

gateway 192.168.1.1

up echo « 1″ > /proc/sys/net/ipv4/ip_forward

Et pour finir il vous faut  ajouter une règle iptables qui vas rediriger le flux sortant vers la passerelle du serveur.

La règle iptables ressemble a ça :

iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -j MASQUERADE

Remplacer 192.168.30.0/24 par votre réseau spécifié pour les clients (remoteip dans /etc/pptpd.conf).

Attention cette règle va s’effacer après chaque redémarrage du système il faudra donc l’exécuter à chaque démarrage.

Bien entendu vous devez ouvrir le port 1723 dans votre box/routeur pour qu’il soit accessible depuis le net sur votre serveur.

A partir de maintenant votre client pourra se connecter mais n’auras pas accès à un serveur DNS  (résolution des nom).

Pour ajouter des serveurs DNS au clients de notre VPN il nous faut éditer le fichier /etc/ppp/pptpd-options et ajouter/décommenter les lignes suivantes

ms-dns 8.8.4.4
ms-dns 8.8.8.8

Comme vous le voyez on peut mettre 2 serveurs DNS.

Il ne reste plus qu’à ce connecter !!!!