Projet

Général

Profil

APLU » Historique » Version 1

Version 1/4 - Suivant » - Version actuelle
Aymeric APLU, 11/06/2015 21:29
creation - draft


De la config en vrac par rapport à TTN

By APLU

VPN

Tunnel VPN de type TUN via openvpn

Le but de ce VPN est de faire passer IPv6 et IPv4 au sein du même tunnel pour être visible sur internet avec une l'ip de son serveur.

[Serveur] Prerequis

  • sudo
  • openvpn

[Serveur] Configurer sudo

On édite le fichier sudoers avec les info suivantes, ceci sera utilisé dans la suite pour permettre la déclaration de l'IPv6 tunnel côté TTN pour que l'IPv6 puisse être routé.

Cmnd_Alias IPVPN = /bin/ip neigh add *, /bin/ip neigh del *, /bin/ip neigh replace *
nobody ALL = NOPASSWD: IPVPN

TODO: Voir comment rendre ça un peu plus sécurisé

[Serveur] Configuration openvpn - creation certificat

# cd /etc/openvpn
# mkdir easy-rsa
# cp -R /usr/share/easy-rsa/* easy-rsa/

Editer : /etc/openvpn/easy-rsa/vars pour renseigner les infos relatives à la clef. On peut aussi changer la taille des clefs.

  1. cd easy-rsa/
  2. touch keys/index.txt
  3. echo 01 > keys/serial
  4. . ./vars # set environment variables
  5. ./clean-all
  6. ./build-ca
  7. ./build-key-server server
  8. ./build-dh # prends du temps (+15h si on choisi 8192, ~10 minutes pour 2048)

[Serveur] Configuration openvpn - openvpn

Créer un fichier de configuration /etc/openvpn/myvpn.conf (on peut changer le nom)

dev tun
proto udp
port 1194

ca      /etc/openvpn/easy-rsa/keys/ca.crt    # generated keys
cert    /etc/openvpn/easy-rsa/keys/server.crt
key     /etc/openvpn/easy-rsa/keys/server.key  # keep secret
dh      /etc/openvpn/easy-rsa/keys/dh2048.pem

user nobody
group nogroup
server 10.42.42.0 255.255.255.0

tun-ipv6
push tun-ipv6

push "route-ipv6 2000::/3" 
learn-address /etc/openvpn/learn-address

# execution de script
script-security 2

#mssfix 
#fragment 1300

persist-key
persist-tun

keepalive 10 100

status /var/log/openvpn-status.log
log-append /var/log/openvpn
verb 3
client-to-client

push "redirect-gateway def1 bypass-dhcp" 
push "dhcp-option DNS 10.42.42.1" 
push "dhcp-option DNS 91.224.149.254" 

comp-lzo adaptive

server-ipv6 2a01:6600:80XX:YY01::1/64

On adaptera XX:YY en fonction de l'IPv6 fourni par les administrateurs de TTN.

Créer le script /etc/openvpn/learn-address avec le contenu suivant (penser à le rendre executable) :

#!/bin/bash

action="$1" 
addr="$2" 
grep -qE "^2a01:.*" <<< "$addr" 
if [ $? -eq 0 ]
then
case "$action" in 
        add )
                sudo  /bin/ip neigh add proxy "$addr" dev eth0
        ;;
        update )
                sudo /bin/ip neigh replace proxy "$addr" dev eth0
        ;;
        delete)
                sudo /bin/ip neigh del proxy "$addr" dev eth0
        ;;
esac
fi

TODO: S'assurer que $addr contient bien une IPv6.. le script est lancée en nobody les checks ne risque rien, le sudo moins.