Openwrt, Openvpn et Firewall…
Les dernières versions d’Openwrt (développement) intègrent un système de configuration plus homogène. L’ensemble de la configuration des services est placée dans le répertoire /etc/config, au même titre que le paramétrage des interfaces réseaux et wifi. La syntaxe diffère un peu de ce que nous pouvions avoir vu jusque là et mérite que nous y regardions de plus près.
La suite de l’article va présenter la configuration d’un client Openvpn et la mise en place de quelques règles de firewall entre le lan, Internet et ce vpn.
Openvpn
L’installation ne pose pas de problème particulier, il faut quand même penser que l’outil de gestion des paquets est maintenant opkg et non plus ipkg !
opkg install openvpn
Comme précisé en introduction, le fichier de configuration est maintenant /etc/config/openvpn.
Le fichier founit par le paquet contient deux exemples de configurations bien commentés (serveur ou client). L’exemple ci-dessous concerne un client.
package openvpn
config openvpn linet.jopa
# Activer le VPN
option enable 1
# Mode Client
option client 1
# Type d'interface (tap ou tun)
option dev tun
# Protocole (tcp ou udp)
option proto udp
# Adresse et port du serveur
# Plusieurs lignes possible pour effectuer du load balancing
# XX.XX.XX.XX est à remplacer par l'IP publique du serveur VPN
list remote "XX.XX.XX.XX 1194"
# Définition de la liaison point à point
# N'est pas utilse si un pool d'adresses est defini sur le serveur
option ifconfig "10.8.1.1 10.8.1.2"
# Essayer de résoudre l'adresse du serveur indéfiniment
option resolv_retry infinite
# Inutile d'attacher un port specifique au client
option nobind 1
# Essayer de conserver certains états au redémarrage
option persist_key 1
option persist_tun 1
# Chemin des clés et certificats SSL/TLS
option ca /etc/openvpn/ca.crt
option cert /etc/openvpn/linet.jopa.crt
option key /etc/openvpn/linet.jopa.key
# Activer le compression lzo
option comp_lzo 1
# Niveaux de Logs
option verb 3 |
La configuration du client VPN est terminée…
Pour complément d’informations, vous trouverez ci-dessous la configuration du serveur VPN correspondant. (Openvpn sur serveur Debian Etch). Le site « Coagul » propose un tutoriel complet sur la mise en place d’une architecture Openvpn (SSL/TLS).
# Serveur OpenVPN - Liaison avec Fonera/Openwrt Maison # Protocole / Interface / Port proto udp dev tun port 1194 # Certificats ca ca.crt cert vpnserver.crt key vpnserver.key dh dh2048.pem # Serveur (SSL/TLS) tls-server # Configuration statique des adresses Ptp ifconfig 10.8.1.2 10.8.1.1 # Adresse publique locale à utiliser local XX.XX.XX.XX # Keepalive keepalive 10 90 # Compression LZO comp-lzo # Utilisateur et groupe du démon openvpn user nobody group nogroup # Conserver l'état des clés et de l'interface au redémarrage persist-key persist-tun # Fichier de status status openvpnlinet-status.log # Création d'une route sur le serveur route 192.168.7.0 255.255.255.0 # Ajout de routes sur le client push "route 192.168.70.0 255.255.255.0" push "route 192.168.72.0 255.255.255.0" |
Firewall
Nous disposons maintenant d’un routeur/firewall OpenWrt à trois pattes :
- LAN : bridge entre l’interface ethernet connectée au réseau privé et l’interface wifi,
- WAN : Interface ethernet publique,
- VPN : Interface virtuelle pour le vpn.
Il nous faut avant tout déclarer l’interface tun0 dans la configuration réseau pour pouvoir ensuite l’affecter à une zone du firewall. Celle-ci sera déclarée sur un réseau que nous appellerons arbitrairement « vpn« .
/etc/config/network
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'type' 'bridge'
option 'proto' 'static'
option 'ipaddr' '192.168.7.253'
option 'netmask' '255.255.255.0'
option 'ifname' 'eth0.0'
option 'dns' '192.168.7.2'
config 'interface' 'wan'
option 'ifname' 'eth0.1'
option 'proto' 'dhcp'
config 'interface' 'vpn'
option 'ifname' 'tun0'
option 'network' 'vpn'
option 'proto' 'none' |
Définition de la politique par défaut
Nous pouvons dès à présent attaquer la configuration du Firewall. Pour une utilisation à domicile, nous allons opter pour une politique assez ouverte (pas trop quand même !).
Seul le trafic du lan vers le routeur et du routeur vers Internet est ouvert.
Si nous avions appliqué une politique plus sévère, nous aurions tout vérouillé à ce stade, pour gérer ensuite les autorisations au cas par cas en fonction du type flux.
/etc/config/firewall
config 'defaults'
option 'syn_flood' '1'
option 'input' 'REJECT'
option 'output' 'REJECT'
option 'forward' 'REJECT'
config 'zone'
option 'name' 'lan'
option 'input' 'ACCEPT'
option 'output' 'REJECT'
option 'forward' 'REJECT'
config 'zone'
option 'name' 'vpn'
option 'input' 'REJECT'
option 'output' 'REJECT'
option 'forward' 'REJECT'
config 'zone'
option 'name' 'wan'
option 'input' 'REJECT'
option 'forward' 'REJECT'
option 'output' 'ACCEPT
option 'masq' '1'
La dernière option (masq) permet biensûr d’activer le masquerading pour internet.
Quelques ouvertures
Au delà de ce paramétrage par défaut, nous avons besoins d’être un peu plus permissifs, histoire de rendre la connexion internet utilisable !
Comme nous somme à la maison, nous allons nous permettre d’ouvrir le trafic provenant du lan et à destination du vpn ou d’Internet.
config 'forwarding'
option 'src' 'lan'
option 'dest' 'wan'
config 'forwarding'
option 'src' 'lan'
option 'dest' 'vpn' |
Nous allons ensuite autoriser ssh et le ping depuis le vpn vers le lan… Puis soyons fous, nous allons aussi permettre le ping du routeur depuis Internet.
config 'rule'
option '_name' 'Ssh depuis VPN'
option 'src' 'vpn'
option 'dest' 'lan'
option 'proto' 'tcp'
option 'dest_port' '22'
option 'target' 'ACCEPT'
config 'rule'
option '_name' 'Ping depuis VPN'
option 'src' 'vpn'
option 'dest' 'lan'
option 'proto' 'icmp'
option 'target' 'ACCEPT'
config 'rule'
option '_name' 'Ping depuis Internet'
option 'src' 'wan'
option 'proto' 'icmp'
option 'target' 'ACCEPT' |
Pour finir, nous pouvons rendre accessible depuis Internet le serveur web d’une machine située sur le Lan. ( Ceci est un exemple, dans la pratique, une dmz ne serait pas du luxe !).
config 'redirect'
option '_name' 'Http vers web perso'
option 'src' 'wan'
option 'proto' 'tcp'
option 'src_dport' '22'
option 'dest_ip' '192.168.7.2'
option 'dest_port' '22' |
Laissez votre message après le bip...Biiiiip
Commentaires
Bonjour,
Tu peux regarder la config utilisée dans le wds pour la partie cliente… C’est similaire :
http://www.jopa.fr/index.php/2.....-kamikaze/
En gros, au niveau de /etc/config/wireless, ça doit avoir à peut prêt cette tête là :
config wifi-device wifi0
option type atheros
option disabled 0
option channel 11
option diversity 0
option txantenna 1
option rxantenna 1
option distance 3000
config wifi-iface
option device wifi0
option network lan
option mode sta
option wds 1
option ssid Ton ssid
option encryption psk (pour du wpa)
option key Ta clef clef wpa
Dans /etc/config/network, la config est la même qu’en ethernet, seul le nom de l’interface change… Par exemple pour un client dhcp :
config interface lan (ou wan ou ce que tu veux du moment que c’est le même réseau que l’option network définie plus haut)
option ifname ath0
option proto dhcp
Pratique : la commande « wifi » permet de prendre en compte les paramètres sans redémarrer tout le réseau.
Attention à la route par défaut aussi… Si une route par défaut est définie pour ton interface ethernet, il faut la supprimer.







Bonjour,
J’utilise une Fonera 2100 flashée avec Kamikaze 8.09 et je veux la paramètrer en mode client afin que le router se connecte sur ma box en wifi. J’arrive parfaitement à me connecter en Ethernet mais pas en wifi alors que la fonera est bien reconnue et appairée avec la box.
Auriez-vous une idée de piste à creuser ?
Merci d’avance