documentation:openvpn

La configuration FDN du VPN est finalement relativement simple. On a un fichier serveur.conf

# en option, addresse sur laquelle écouter
#local 80.67.169.57

port 1194

# On veut aussi de l'ipv6
proto tcp6-server

dev tun
tun-ipv6
push tun-ipv6
ca /etc/ssl/private/star.fdn.fr.chain
cert /etc/ssl/private/star.fdn.fr.crt
key /etc/ssl/private/star.fdn.fr.key

# à générer avec openssl dhparam -out dh2048.pem 2048
dh dh2048.pem

# le serveur piochera 179.1 pour lui.
server 80.67.179.0 255.255.255.0 nopool
ifconfig-ipv6 2001:910:1301::1/64 2001:910:1301::1
# Tout le monde est dans le même subnet
topology subnet

# C'est là qu'openvpn trouvera la configuration remontée du Radius
client-config-dir ccd

# pour les clients qui sauraient le prendre en compte
push "dhcp-option DNS 80.67.169.12"
push "dhcp-option DNS 80.67.169.40"

# détecter la perte de connexion de la même façons des deux côtés
ping 5
ping-exit 60
push "ping 5"
push "ping-restart 60"

persist-key
persist-tun

# De quoi regarder l'état des connexions
status /var/log/openvpn-status.log 1

# le client s'authentifiera juste par le plugin radius
client-cert-not-required
username-as-common-name
plugin /usr/lib/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf

# des scripts pour modifier le routage
script-security 2
client-connect /etc/openvpn/client-connect
client-disconnect /etc/openvpn/client-disconnect
learn-addresse /etc/openvpn/client-learen-address

# De quoi tuer une connexion avec
# socat /var/run/openvpn.management.serveur EXEC:"echo kill foo@vpn.fdn.fr"
management-client-user root
management /var/run/openvpn.management.serveur unix

Ensuite on a la configuration radius

NAS-Identifier=vpn
Service-Type=5
Framed-Protocol=1
NAS-Port-Type=5
NAS-IP-Address=80.67.169.57
OpenVPNConfig=/etc/openvpn/serveur.conf

VPN option "--server NETWORK NETMASK"
subnet=255.255.252.0
p2p6=2001:910:1301::1

overwriteccfiles=true

server
{
    acctport=1813
    authport=1812
    name=80.67.169.9
    retry=1
    wait=1
    sharedsecret=lepasswd
}

À noter que le subnet n'est pas le même que dans la conf openvpn. C'est celui-ci qui sera réellement poussé vers le client en fait. Dans le cas de FDN, on met les ADSL et les VPN dans le même /22. On a donné 179 à openvpn juste pour qu'il utilise 179.1 comme IP de passerelle.

Le plugin radius fera du coup l'authentification, et l'autorisation va remonter les infos d'adresses IP et de routes (cf la vidéo afférente). Ça sera du coup écrit dans le fichier ccd, Framed-IP-Address va produire un ifconfig-push 80.67.179.7 255.255.252.0 par exemple.

Enfin, puisqu'on veut que bird route les /32 et /128 un par un pour pouvoir avoir plusieurs serveurs, on utilise les scripts:

client-connect

[ -z "$ifconfig_pool_remote_ip" ] || ip route add $ifconfig_pool_remote_ip/32 dev $dev proto static
[ -z "$ifconfig_ipv6_pool_remote_ip" ] || ip route add $ifconfig_ipv6_pool_remote_ip/128 dev $dev proto static
  • documentation/openvpn.1396736789.txt.gz
  • Dernière modification: 2014/04/06 00:26
  • de sthibaul