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.

© 2006-14 Association Actux - Documentation sous licence GFDL - Conception & design: Imaginair.net - Logo: Zazo0o - Propulsé par PmWiki