OpenVPN ou comment passer outre une connexion limitée
Si vous êtes dans le cas où la connexion qui est à votre disposition ne vous permet d'accéder à certains services (ports fermés), tout n'est pas perdu!
Vous pourrez jouer à votre jeu préféré en vous servant de votre connexion personnelle en créant un réseau virtuel privé (VPN) et ainsi pouvoir vous défouler au bureau ^^
Pour celà, il faut installer sur vos 2 machines le paquet Openvpn, rediriger les ports 443 tcp et udp de votre box, puis faire les manip suivantes:
Côté serveur:
Créez les fichiers suivants:
- Fichier /etc/openvpn/vpn.conf:
up vpn.sh script-security 2 dev tun0 port 443 proto tcp-server ifconfig 192.168.10.1 192.168.10.2 comp-lzo secret /etc/openvpn/vpn.key user nobody group nogroup keepalive 10 60 ping-timer-rem persist-tun persist-key log /var/log/openvpn.log verb 3
- Fichier /etc/openvpn/vpn.sh:
#!/bin/sh sysctl net.ipv4.conf.all.forwarding=1 iptables -t nat -F iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -d ! 192.168.10.0/24 -j MASQUERADE
Puis faites
openvpn --genkey --secret /etc/openvpn/vpn.key /etc/init.d/openvpn restart
Côté client:
Créez les fichiers suivants:
- Fichier vpn.conf:
dev tun0 remote 88.164.242.235 proto tcp-client port 443 ifconfig 192.168.10.2 192.168.10.1 comp-lzo secret /etc/openvpn/vpn.key user nobody group nogroup keepalive 10 60 ping-timer-rem persist-tun persist-key log /var/log/openvpn.log verb 3 # pour utiliser le vpn comme route par defaut #redirect-gateway redirect-gateway def1
Copiez le fichier vpn.key dans le répertoire /etc/openvpn de votre client puis faites
/etc/init.d/openvpn restart
Ça y est, vous utilisez votre connexion personnelle et plus la connexion bridée!
Dès que vous voudrez utiliser votre tunnel (à condition que votre ordinateur distant soit allumé bien sûr), vous devrez lancer Openvpn sur votre client (il est désactivé par défaut) avec la commande /etc/init.d/openvpn start.
Explications (paste du mail de Geb, sur la ml Actux@):
Le principal:
On ecoute sur 443/tcp, c'est discutable (tcp over tcp), mais ça marche partout (port d'https). On peut aussi envisager le 53/udp (dns). Openvpn ecoute par défaut sur 1194/udp.
Le serveur a l'ip 192.168.10.1 , le client 192.168.10.2 (on ecrit ifconfig $addr_local $addr_distante).
Le serveur lance un .sh a la connection, qui:
1) active la redirirection (il devient un routeur)
2) fait du nat, "reecrit tout ce qui vient de 192.168.10.0/24 et qui n'est pas a destination de 192.168.10.0/24 avec mon adresse ip")
Le serveur et le client partagent un .key qu'ils utilisent pour s'authentifier mutuelement. Ce .key est à génerer avec openvpn --genkey (ou --keygen je sais jamais).
redirect-gateway def1 est important, il va creer deux nouvelles routes pour sortir via le serveur, Chez moi:
0.0.0.0 172.25.1.1 128.0.0.0 UG 0 0 0 tap0
128.0.0.0 172.25.1.1 128.0.0.0 UG 0 0 0 tap0
Pourquoi 2 routes ? On evite de redefinir 0.0.0.0/0 (route par defaut), si on met 2 routes plus precises, elles seront choisies par l'os pour sortir. Si jamais on coupe le vpn la route par défaut sera préservée (ça evite de relancer dhcp quand on coupe le vpn !)
L'optionel:
comp_lzo active la compression a va vollee
user, group, persist-key, persist-tun servent a dropper les privileges (le persist-key/tun evite de se retrouver dans l'impossibilité de lire la clef)
keepalive 10 60 et , ping-timer-rem, servent a tester regulierement la connextion pour la relancer si elle semble coupée.
Je passe sur les logs, c'est explicite, on peut utiliser log-append, et mute (man openvpn).
Pour utiliser ces fichiers:
- Les placer dans /etc/openvpn/$foo.conf pour qu'ils soient lancés au démérrage par /etc/init.d/openvpn (avec quelques options automatiques comme le fait d'être lancés en daemon).
- On peut lancer/relancer le vpn via /etc/init.d/openvpn start|stop|restart [$foo]
- Si on veut le relance à chaque fois qu'on se connecte / reconnecte: echo /etc/init.d/openvpn restart >> /etc/network/if-up.d/openvpn
- On peut check les logs et tcpdump l'interface (ici tun0) pour debugger.