Utiliser un Turris Omnia comme client VPN

J'ai récemment acheté un routeur Turris Omnia. En effet, ayant déménagé dans un appartement disposant de la fibre, je ne pouvais plus avoir de liaison ADSL chez LDN. Qu'à celà ne tienne me disais-je, je prends un VPN chez eux et hop, j'ai un accès tout propre à Internet. Mais mon fidèle Buffalo était trop peu puissant pour faire office de client VPN pour une bande passante aussi élevée. D'où le Turris, plus puissant (et on peut faire plein de trucs avec, c'est un très beau jouet (certes, pas donné)).

Voici comment je m'y suis pris. Tout d'abord, envoyer sur le Turris les fichiers nécessaires à la connexion VPN fournis par LDN : ca_server.crt, client.crt, et client.key. Je mets tout ça dans /etc/openvpn.

Puis je rajoute la configuration VPN au fichier /etc/config/openvpn :

config openvpn 'vpn'
    option enabled '1'
    option client '1'
    option dev 'tun'
    option keepalive '10 1200'
    option nobind '1'
    option ca '/etc/openvpn/ca_server.crt'
    option cert '/etc/openvpn/client.crt'
    option key '/etc/openvpn/client.key'
    option ns_cert_type 'server'
    option comp_lzo 'yes'
    option verb '3'
    option log '/tmp/log/openvpn.log'
    list remote 'vpn.ldn-fai.net 1194'
    option up '/etc/openvpn/up.sh'
    option down '/etc/openvpn/down.sh'
    option script_security '2'

Dans le script /etc/openvpn/up.sh, je remplace les routes par défaut du routeur pour faire passer tout le trafic par le VPN, et dans /etc/openvpn/down.sh, je les remets en place. Je crois (j'ai fait toutes ces manipulations il y a quelques mois, je ne me souviens plus très bien) que j'ai créé ces scripts parce que les routes ne se mettaient pas en place toutes seules.

NB : le réseau de la box opérateur est 192.168.2.0/24, je l'ai modifié pour ne pas le confondre avec mon réseau local 192.168.1.0/24 fourni par le Turris. 192.168.2.1 est l'adresse IP de la box.

/etc/openvpn/up.sh :

#!/bin/ash
ip route del default via 192.168.2.1 dev eth1
ip route add default via mon_IP_publique_fournie_par_LDN dev tun0
exit 0

/etc/openvpn/down.sh :

#!/bin/ash
ip route del default via mon_IP_publique_fournie_par_LDN dev tun0
ip route add default via 192.168.2.1 dev eth1
exit 0

Pour que le routeur arrive quand même à joindre le serveur VPN de LDN une fois les routes par défaut modifiées, j'ai modifié le fichier /etc/config/network :

config route
    option interface 'wan'
    option target '80.67.188.131' # IP du serveur vpn.ldn-fai.net
    option metric '10'
    option gateway '192.168.2.1'

config route
    option interface 'vpn'
    option target '0.0.0.0'
    option netmask '0.0.0.0'
    option gateway 'mon_IP_publique_fournie_par_LDN'

Au niveau du firewall, il faut créer une zone tun et ajouter quelque petits trucs (dans /etc/config/firewall) :

config zone
    option input 'ACCEPT'
    option output 'ACCEPT'
    option name 'tun'
    option masq '1'
    option network 'vpn'
    option forward 'REJECT'

config forwarding
    option dest 'wan'
    option src 'lan'

config forwarding
    option dest 'wan'
    option src 'tun'

config forwarding
    option dest 'tun'
    option src 'lan'

Normalement, il y a tout ce qu'il faut pour faire du Turris (et par extension, d'un routeur sous OpenWRT) un client VPN qui va fournir un réseau exploitant ce VPN.

Et l'IPv6 ? C'est vrai, je n'ai pas parlé d'IPv6 ici. Tout d'abord parce qu'il m'a moins embêté qu'IPv4 (pas besoin de redéfinir les routes par défaut dans des scripts par exemple), ensuite parce que j'ai des bouts de configuration IPv6 dont je ne pas convaincu qu'ils soient nécessaires. Je vous les donne quand même :

Dans /etc/config/network :

config route6
    option interface 'wan'
    option target '2001:913:0:2000::131'  # IP du serveur vpn.ldn-fai.net
    option gateway 'fe80::a3e:5dff:fe74:b40a' # adresse link-local de la route IPv6 par défaut de mon Turris

config route6
    option interface 'vpn'
    option target '::/0'
    option gateway 'fe80::a3e:5dff:fe74:b40a'
    # Oui, c'est la même qu'au dessus. On pourrait croire que ça ne fonctionne pas, mais si.
    # Et je ne vois pas trace d'une IP orange lors d'un traceroute6.
    # Donc vraiment, je ne sais pas si c'est nécessaire

Pour proposer de l'IPv6 en DHCP à votre réseau local, mettez ceci dans /etc/config/network :

config interface 'lan'
    option ifname 'eth0 eth2'
    option force_link '1'
    option type 'bridge'
    option proto 'static'
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'
    option ip6prefix '2001:DB8:42::/48' # Range IPv6 fourni par LDN
    option ip6assign '64' # Je réduis à un /64 pour mon réseau local
    option ip6hint 'beef' # Je choisis 2001:DB8:42:beef::/64 pour mon réseau local

Pourquoi créer un bridge entre eth0 et eth2 ? Bon sang, je ne sais plus… mais ça fonctionne donc bon.

Bonus : si les hôtes de votre réseau local ne peuvent pas se connecter les uns aux autres, j'avais déjà écrit un article avec la solution 🙂

Pour le Turris, j'ai fait ainsi, dans /etc/config/network, d'après ce post :

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0 1 2 3 5'

config switch_vlan
    option device 'switch0'
    option vlan '2'
    option ports '4 6'

6 réflexions au sujet de “Utiliser un Turris Omnia comme client VPN”

  1. Bonjour,

    après six mois d’utilisation, êtes-vous toujours content de votre Turris Omnia ? J’hésite à sauter le pas, recommandez-vous une boutique (physique / en ligne) pour le commander ?

    Merci d’avance,

    • Ah oui, toujours content ! Je n’ai pas encore trop eu le temps de jouer plus avant avec (j’ai juste testé un conteneur LXC dedans, ça fonctionne nickel).

      Pour l’acheter, j’avais eu un flyer avec 15% de réduction au FOSDEM l’année dernière, valable chez https://www.alzashop.com/, et tout s’est bien passé, mais sinon y a la liste des revendeurs sur https://omnia.turris.cz/en/#buy, je pense qu’on peut leur faire confiance.

      • Super ! Merci pour la réponse rapide et les détails, je vais regarder ça de plus près.

        P.S. je n’ai pas reçu de mail de notification pour votre réponse, est-ce normal ?

        • > je n’ai pas reçu de mail de notification pour votre réponse, est-ce normal ?

          Aucune idée, je n’ai rien configuré à ce propos sur mon blog en tout cas…

  2. Bonjour,
    Question de débutant : je déménage de la province vers Paris, ce qui m’amène à abandonner mon ADSL FDN « propre » pour un abonnement fibre de base chez un gros opérateur (B.), FDN n’ayant pas la possibilité de distribuer la fibre dans Paris. Naturellement je vais conserver un accès VPN chez eux. Naturellement je ne rêve que de remplacer la Box de B. par un routeur Turris (y en a-t-il seulement d’autres?)

    Mais, je ne suis pas un grand pro, à peine un linuxien vraiment « end-user ».
    J’ai deux questions de base :
    – je note que le Turris possède directement une interface fibre. J’imagine que virer l’adaptateur optique de la Box n’est pas aussi simple qu’un bête débranchement / rebranchement ; y a-t-il quelque part des explications simples sur le paramétrage associé à l’opérateur?
    – par ailleurs en lisant peut-être trop rapidement la doc Turris Omnia, je vois des tas de détails sur la possibilité de créer un serveur VPN, mais rien sur le simple fait de vouloir traverser mon gros opérateur B. en VPN pour « atterrir » chez FDN -bref juste paramétrer un client VPN au niveau du routeur. J’imagine que c’est possible facilement?

    Merci!

Les commentaires sont fermés.