Archives du mot-clé LDN

Utili­ser un Turris Omnia comme client VPN

J’ai récem­ment acheté un routeur Turris Omnia. En effet, ayant démé­nagé dans un appar­te­ment dispo­sant de la fibre, je ne pouvais plus avoir de liai­son 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 à Inter­net. Mais mon fidèle Buffalo était trop peu puis­sant pour faire office de client VPN pour une bande passante aussi élevée. D’où le Turris, plus puis­sant (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éces­saires à la connexion VPN four­nis par LDN : ca_server.crt, client.crt, et client.key. Je mets tout ça dans /etc/openvpn.

Puis je rajoute la confi­gu­ra­tion 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 mani­pu­la­tions 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éra­teur est 192.168.2.0/24, je l’ai modi­fié 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 modi­fiées, j’ai modi­fié 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 fire­wall, il faut créer une zone tun et ajou­ter 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'

Norma­le­ment, il y a tout ce qu’il faut pour faire du Turris (et par exten­sion, d’un routeur sous OpenWRT) un client VPN qui va four­nir un réseau exploi­tant 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é­fi­nir les routes par défaut dans des scripts par exemple), ensuite parce que j’ai des bouts de confi­gu­ra­tion IPv6 dont je ne pas convaincu qu’ils soient néces­saires. 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 propo­ser 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 fonc­tionne donc bon.

Bonus : si les hôtes de votre réseau local ne peuvent pas se connec­ter les uns aux autres, j’avais déjà écrit un article avec la solu­tion 🙂

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'
Me soutenir sur Tipeee Me soutenir sur Liberapay

Mise à jour d’OpenWRT sur Buffalo WBMR-HP-G300H

EDIT :

WARNING : il y a un sale bug dans l’IPv6 de Barrier Brea­ker ! Je perds l’IPv6 une fois par jour : https://dev.open­wrt.org/ticket/12888

Ne mettez pas à jour, sauf si vous vous foutez d’IPv6 (et vous ne devriez pas !).

Comme je suis abonné à un vrai FAI qui four­nit du vrai Inter­net bio, sans filtre ni surveillance, fait à la main et roulé sous les aisselles, je n’ai pas de box four­nie par celui-ci (enfin, si, on en prête, des neuf­box ancienne géné­ra­tion mais c’est pas top, ça fait pas d’IPv6).

Du coup, je m’étais payé un modem/routeur Buffalo WBMR-HP-G300H qui a l’im­mense avan­tage d’être compa­tible OpenWRT. OpenWRT est un firm­ware de modem/routeur libre, ce qui veut dire que flasher son routeur avec OpenWRT, c’est aussi jouis­sif que de libé­rer un ordi en mettant une distri­bu­tion GNU/Linux sur un ordi fourni avec Windows. :D

Je ne vais pas détailler l’ins­tal­la­tion d’OpenWRT, mais sa mise à jour, de la version 12.09 (Atti­tude Adjust­ment) vers la dernière version en date, la 14.07 (Barrier Brea­ker).

Mise à jour

Tout d’abord, on va récu­pé­rer l’image kiva­bien et l’en­voyer sur le routeur (partons du prin­cipe que le routeur est acces­sible à l’IP 192.168.1.1) :

wget https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/openwrt-lantiq-xway-WBMR-squashfs.image
scp root@192.168.1.1:/tmp

(voir ici pour libé­rer de la place s’il n’y en a pas assez dans /tmp)

On va aussi récu­pé­rer un fichier néces­saire pour la suite et on se le garde au chaud sur son ordi :

wget https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/packages/base/kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk

On met à jour :

ssh root@192.168.1.1
cd /tmp
sysupgrade openwrt-lantiq-xway-WBMR-squashfs.image

Un petit reboot s’il ne le fait pas tout seul.

Et là, c’est le drame !

Plus d’ADSL !

C’est simple : l’ADSL sur ligne télé­pho­nique clas­sique néces­site l’an­nexe a alors que l’image vient avec l’an­nexe b (ne me deman­dez pas la diffé­rence entre ces deux trucs ni ce que c’est).

On envoie alors le paquet télé­chargé tout à l’heure :

scp kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk root@192.168.1.1:/tmp

On supprime l’an­nexe b et on installe l’an­nexe a :

ssh root@192.168.1.1
cd /tmp
opkg remove kmod-ltq-dsl-firmware-b-ar9
opkg install kmod-ltq-adsl-ar9-fw-a_0.1-1_lantiq.ipk

Ensuite on met à jour /etc/config/network, dans la section config adsl :

config adsl 'dsl'
    option annex 'a'
    option firmware '/lib/firmware/adsl.bin'

On reboot (oui, je suis une feignasse qui ne souvient plus quel service il a redé­marré pour faire fonc­tion­ner le brol). Et là, norma­le­ment, ça fonc­tionne.

M’en­fin ? Où est passé mon IPv6 ?

Barrier Brea­ker simpli­fie la gestion de l’IPv6 en inté­grant tout ce qu’il faut pour que ça fonc­tionne, sans paquet supplé­men­taire. Mais comme ce n’était pas le cas avant, on a une confi­gu­ra­tion qui ne va pas :-(

On commence par virer radvd :

opkg remove radvd

Ou alors, vous pouvez juste l’ar­rê­ter et le désac­ti­ver :

/etc/init.d/radvd stop
/etc/init.d/radvd disable

Ensuite on met à jour /etc/config/network (atten­tion, je ne fais qu’ajou­ter de la config dans les diffé­rentes section, ne suppri­mez pas ce que vous avez déjà) :

config interface 'lan'
    option ip6assign '64'
    option ip6hint '42'

Expli­ca­tion : ip6assign '64' indique que vous assi­gnez un réseau /64 à votre réseau local et ip6hint '42' sera conca­téné à votre bloc d’IPv6.

C’est pas clair, donc voici un exemple : mettons que votre FAI vous four­nisse le bloc 2001:DB8:1337::/48. Avec les options ci-dessus, les machines de votre réseau local piochera dans le bloc 2001:DB8:1337:42::/64.

Ça, norma­le­ment, vous l’avez déjà si vous aviez déjà confi­guré de l’IPv6 avant la mise à jour :

config interface 'wan'
    option ipv6 '1'

Et on ajoute une nouvelle section :

config interface wan6
    option ifname   '@wan'
    option proto    dhcpv6

Main­te­nant on modi­fie /etc/config/dhcp (toujours en ajout dans les sections exis­tantes) :

config dhcp 'lan'
    option interface 'lan'
    option ra 'server'
    option dhcpv6 'server'
    option ra_management '2'

Véri­fiez que cette section a bien été ajou­tée lors de la mise à jour d’OpenWRT :

config odhcpd 'odhcpd'
    option maindhcp '0'
    option leasefile '/tmp/hosts/odhcpd'
    option leasetrigger '/usr/sbin/odhcpd-update'

On s’as­sure que /etc/sysctl.conf contienne bien ces deux lignes :

net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

Et on reboote.

Voilà, norma­le­ment ça devrait rouler tout seul :-)

Et pour finir, une jolie nimage de la nouvelle inter­face web d’OpenWRT qui vient avec Barrier Brea­ker :

Capture d'écran de l'interface web de Barrier Breaker

Sources :

Me soutenir sur Tipeee Me soutenir sur Liberapay