Comme promis, voici la configuration de dd-wrt utilisée pour réaliser mon hotspot. Je ne reviendrai pas sur l'installation et la configuration de base de dd-wrt, leur site est très complet à ce sujet.
Mais avant de commencer, petit rappel des faits.
Je disposais donc d'un routeur Linksys WRT54GL, une petite babiole ma foi fort sympathique sur laquelle il est possible d'installer légalement un firmware alternatif. Initialement, j'avais pris ça pour le fun, et pour avoir un point d'accès wifi un peu plus robuste que cette saloperie de livebox. Mais l'engin s'est avéré trop performant pour la seule machine wifi dont je dispose, et les fonctionnalités sur le papier de dd-wrt me faisaient de l'œil. Ni une, ni deux, je décide de faire d'une pierre deux coups en créant un hotspot wifi ouvert ! Je peux grâce à ça jouer avec des options discrète et tester un peu plus la robustesse de ce routeur.
Maintenant, on peut commencer. On se rend sur l'onglet «Wireless», puis on clique sur le bouton «Add». On rempli les champs, et on valide en cliquant sur «Apply Settings».
On obtient quelque chose comme ça :
On peut maintenant régler les paramètres de sécurité en cliquant sur l'onglet «Wireless Security». Pour notre hotspot ouvert, on désactive toute sécurité.
À ce niveau, on a déjà notre nouveau point d'accès. Il nous reste à régler le dhcp pour attribuer une adresse à nos futurs clients.
Pour cela, on se rend sur l'onglet «Services», puis on entre les informations suivantes dans le champ «Additional DNSMasq Options» :
interface=br1
dhcp-range=br1,192.168.10.100,192.168.10.110,255.255.255.0,1440m
On doit avoir quelque chose comme :
Pause... Vous avez sûrement remarqué le nom de l'interface "br1" dans l'option du DHCP qui ne correspond pas à l'interface virtuelle créée : "wl0.1". Il s'agit en fait d'un bridge afin de faciliter la gestion des deux flux (le wifi perso, et le wifi ouvert).
On se rend donc sur l'onglet «Administration», puis «Commands».
Dans le champ de saisie, on entre ceci :
wanif="`nvram get wan_ifname`"
# On autorise l interface br1 à accéder à Internet:
iptables -I INPUT -i br1 -m state --state NEW -j logaccept
iptables -I FORWARD -i br1 -o $wanif -m state --state NEW -j ACCEPT
# On isole nos deux réseaux physiquement
iptables -I FORWARD -i br0 -o br1 -j logdrop
iptables -I FORWARD -i br1 -o br0 -j logdrop
# On protège notre routeur des accès via br1
iptables -I INPUT -i br1 -p tcp --dport telnet -j REJECT --reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp --dport ssh -j REJECT --reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp --dport www -j REJECT --reject-with tcp-reset
iptables -I INPUT -i br1 -p tcp --dport https -j REJECT --reject-with tcp-reset
Il s'agit donc de règles iptables que l'ont va sauvegarder à l'aide du bouton «Save Firewall».
Maintenant, on crée nos "bridges". Pour cela, dans le champ de saisie, toujours sur la même page, on entre désormais :
# Set some important values:
nvram set dnsmasq_enable=1
if [ "`nvram get dhcpfwd_enable`" = "0" ]; then
nvram set dns_dnsmasq=1
nvram set dhcp_dnsmasq=1
nvram set auth_dnsmasq=1
fi
# Create bridge br1, move the virtual wireless interface to it,
# and setup the interface s IP address:
brctl addbr br1
brctl delif br0 wl0.1
brctl addif br1 wl0.1
ifconfig br1 192.168.10.1 netmask 255.255.255.0
ifconfig br1 up
# Properly setup NAS
killall nas
# Main:
nas -P /tmp/nas.wl0lan.pid -H 34954 -l br0 \
-i "`nvram get wl0_ifname`" -A -m 4 -k "`nvram get wl0_wpa_psk`" \
-s "`nvram get wl0_ssid`" -w 2 \
-g "`nvram get wl0_wpa_gtk_rekey`"
# Virtual interface #1:
nas -P /tmp/nas.wl0.1lan.pid -H 34954 -l br1
Enfin, pour éviter de se faire pourrir l'ensemble de la bande passante par le FruitWifi, on joue avec la qos de dd-wrt. On clique donc sur l'onglet «NAT / QoS», puis «QoS». En face de «Start QoS», on coche "enable". Puis on entre les valeurs souhaitées.
Ça donne ceci :
On a terminé la première étape !