Client OpenVPN faisant office de passerelle sous OpenWrt

Rédigé par Nicolas Sulek Aucun commentaire
Classé dans : Réseau, Services réseaux Mots clés : OpenWrt, OpenVPN
Voici comment utiliser un client OpenVPN, installé sur un routeur sous OpenWrt, pour relayer l'ensemble du trafic des stations situées derrière lui au travers du VPN.

Schéma réseau

réseau OpenVPN-OpenWrt

Installation du client

Tout d'abord, il faut installer le client OpenVPN fourni avec Open Wrt :
opkg update; opkg install openvpn-openssl 

Paramétrage du client OpenVPN

Il faut créer un fichier /etc/config/openvpn contenant les informations nécessaires pour se connecter à notre serveur OpenVPN (notamment les certificats) :
config openvpn 'myvpn'
	option enabled '1'
	option dev 'tun'
	option proto 'udp'
	option log '/tmp/openvpn.log'
	option verb '3'
	option ca '/etc/openvpn/ca.crt'
	option cert '/etc/openvpn/client.crt'
	option key '/etc/openvpn/client.key'
	option comp_lzo 'yes'
	option port '1194'
	option client '1'
	option remote_cert_tls 'server'
	option remote 'adresse_serveur 1194'

Paramétrage du réseau

Il faut créer l'interface vpn0 qui utilisera le périphérique tun0 créé par OpenVPN.
  uci set network.vpn0=interface
  uci set network.vpn0.ifname=tun0
  uci set network.vpn0.proto=none
 
  uci commit network; /etc/init.d/network reload

Paramétrage du pare-feu

On va créer une nouvelle zone dans le pare-feu dans laquelle sera l'interface vpn0, qui acceptera à peu près tout (trafic entrant, sortant, transféré) et fera du masquage des adresse IP internes.
  uci add firewall  zone
  uci set firewall.@zone[-1].name=vpn
  uci set firewall.@zone[-1].input=ACCEPT
  uci set firewall.@zone[-1].forward=ACCEPT
  uci set firewall.@zone[-1].output=ACCEPT
  uci set firewall.@zone[-1].network=vpn0
  uci set firewall.@zone[-1].masq=1
  uci set firewall.@zone[-1].mtu_fix=1
uci commit firewall; /etc/init.d/firewall reload

Configuration du serveur OpenVPN

Pour que le serveur puisse faire la correspondance entre notre réseau interne et les paquets extérieurs, il faut lui donner quelques informations. Dans /etc/openvpn/server.conf, ajouter
client-config-dir ccd
route reseau_interne masque_reseau_interne
Dans le répertoire /etc/openvpn/ccd, il faut créer un fichier portant le nom du client tel que défini dans les certificats et indiquer :
iroute reseau_interne masque_reseau_interne

Les commentaires sont fermés.