Accès Rapide :
Navigation Sécurisée | M'identifier | M'inscrire | Rechercher |
Imprimer |
Webmail
Cette page récapitule la configuration OLSR que j'ai employé sur une passerelle (gateway) sous Linux debian Sarge. Elle permet d'émettre des ondes Wi-Fi pour que des équipements Wifi puissent s'y connecter et pouvoir naviguer sur Internet.
La configuration est la suivante :
eth0 qui est branché sur la Freebox ayant comme IP une IP Internet.
wlan0 qui émet des ondes WIFI actuellement en mode Master à comme IP 10.92.120.17 et comme masque 255.0.0.0
Editer le fichier source APT et ajouter les dépots OLSR :
001 vi /etc/apt/sources.list
001 # OLSR
002 deb http://www.skyhub.de/debian/ unstable main
003 deb-src http://www.skyhub.de/debian/ unstable main
Télécharger les paquets olsrd et olsrd-plugin.
001 apt-get update
001 apt-get install olsrd olsrd-plugin
001 iptables -A INPUT -p tcp --dport 698 -j ACCEPT
002 iptables -A INPUT -p udp --dport 698 -j ACCEPT
003 iptables -A FORWARD -p tcp --dport 698 -j ACCEPT
004 iptables -A FORWARD -p udp --dport 698 -j ACCEPT
005 iptables -A OUTPUT -p tcp --dport 698 -j ACCEPT
006 iptables -A OUTPUT -p udp --dport 698 -j ACCEPT
/etc/olsrd.conf001 DebugLevel 0
002 IpVersion 4
003 ClearScreen no
004
005 Hna4
006 {
007 # Internet gateway:
008 0.0.0.0 0.0.0.0
009 # more entries can be added:
010 10.0.0.0 255.0.0.0
011 }
012
013 AllowNoInt yes
014
015 IpcConnect
016 {
017 MaxConnections 1
018 Host 127.0.0.1
019 }
020
021 UseHysteresis no
022
023 HystScaling 0.50
024 HystThrHigh 0.80
025 HystThrLow 0.30
026
027 LinkQualityLevel 2
028 LinkQualityWinSize 10
029
030 Pollrate 0.05
031 TcRedundancy 2
032 MprCoverage 1
033
034 # ce plugin active une interface Web acccessible sur le port ci-dessous
035 # les valeur de l'option "Net" sont les réseaux pouvant accéder à cette interface Web
036 LoadPlugin "olsrd_httpinfo.so.0.1"
037 {
038 PlParam "port" "8080"
039 # PlParam "Host" "10.92.120.17"
040 # PlParam "Host" "81.56.54.30"
041 PlParam "Net" "10.0.0.0 255.0.0.0"
042 PlParam "Net" "192.168.0.0 255.255.0.0"
043 PlParam "Net" "0.0.0.0 0.0.0.0"
044 }
045
046 # Permet de déclarer le nom d'hôte de cette machine et..
047 LoadPlugin "olsrd_nameservice.so.0.2"
048 {
049 PlParam "name" "gateway"
050 PlParam "suffix" ".wifi.wwweball.com"
051 PlParam "hosts-file" "/etc/hosts.4wifi"
052 PlParam "resolv-file" "/etc/resolv.conf.4wifi"
053 }
054
055 Interface "wlan0" "eth0"
056 {
057 HelloInterval 2.0
058 HelloValidityTime 6.0
059
060 TcInterval 5.0
061 TcValidityTime 15.0
062
063 MidInterval 5.0
064 MidValidityTime 15.0
065
066 HnaInterval 5.0
067 HnaValidityTime 15.0
068 }
Ligne 38, j'ai configuré le port pour accéder à mon interface Web. Il faut donc configurer à notre firewall que le port 8080 est ouvert en TCP sur cette machine.
001 iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
002 iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT
ad-hoc001 iwconfig wlan0 essid wiFi.wWwEBALL.com mode ad-hoc
olsrdEssayer :
001 /usr/sbin/olsrd -f /etc/olsrd.conf -d 9
Une fois démarré, aller sur l'inferface Web > ex : http://10.92.120.17:8080 et vérifier la configuration.
La page /routes
Les nodes OLSR :
Si tout marche, activer olsrd au boot de la machine
001 vi /etc/default/olsrd
001 # sourced by /etc/init.d/olsrd
002 start_olsrd=yes
et configurer la carte wifi en mode ad-hoc
001 vi /etc/network/interfaces
001 auto wlan0
002 iface wlan0 inet static
003 address 10.92.120.17
004 netmask 255.255.0.0
005 network 10.92.120.0
006 broadcast 10.92.120.255
007 wireless_essid wiFi.wWwEBALL.com
008 wireless_mode Ad-hoc
Attention :
En ligne 2 j'ai ouvert tout les ports d'internet à mes utilisateurs Wi-Fi.
Regarder de la doc sur iptables, si vous souhaitez fermer certains accès aux utilisateurs Wi-Fi.
001 # ouvrir tout le trafic vers internet
002 iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
003 # Cacher les machines derrière le routeur
004 ipatbles -A POSTROUTING -t nat -s 10.92.120.0/24 -j MASQUERADE
Donc voilà, si j'ai rien sauté ça doit marcher
Bien sûr OLSR est un protocole complexe, et dès lors, je n'ai pas encore testé ses subtilités.
Voir la page OLSR pour de plus amples informations.
PS : je viens de tomber la-dessus : WifiDog And Olsr
Le problème :
Si vous choisissiez d'installer seulement une gateway Wifidog, toutes les adresses MAC des clients seront masqués par le routeur OLSR le plus proche.
La solution :
Installez une gateway Wifidog sur tous les noeuds d'OLSR. Permettez l'écoulement de HTTP entre les noeuds d'OLSR avec le script suivant lancé par le cron sur tout le noeuds.
001 #!/bin/sh
002 #
003 # Script to bypass HTTP interception for traffic forwarded by OLSR
004 # bms 9-Aug-2005
005 # Licensed under GPL
006 #
007
008 rm -f /tmp/get_neighbors.awk
009 cat > /tmp/get_neighbors.awk <<__HERE1__
010 BEGIN {
011 while("route -n"|getline) {
012 if (/^[0-9]/) {
013 if (0 < \$5) {
014 if (\$3 == "255.255.255.255 <http://255.255.255.255>") {
015 printf "%s\n", \$1;
016 }
017 }
018 }
019 }
020 }
021 __HERE1__
022
023
024 iptables -t nat -D WiFiDog_Unknown -j OlsrNeighbors 2>&1 >/dev/null
025 iptables -t nat -F OlsrNeighbors 2>&1 >/dev/null
026 iptables -t nat -X OlsrNeighbors 2>&1 >/dev/null
027 iptables -t nat -N OlsrNeighbors
028
029 neighbors=$(awk -f /tmp/get_neighbors.awk)
030
031 for _neighbor in ${neighbors} ; do
032
033 _mac=$(grep "^${_neighbor}" /proc/net/arp | awk '{print $4}')
034 echo ${_mac}
035 iptables -t nat -A OlsrNeighbors -m mac --mac-source ${_mac} -p tcp --dport 80 -j ACCEPT
036
037 done
038
039 iptables -t nat -I WiFiDog_Unknown -j OlsrNeighbors
On m'a conseillé de laisser passer toutes les requetes TCP (au lieu de laisser que le port 80)
Remplacer cette ligne :
001 iptables -t nat -A OlsrNeighbors -m mac --mac-source ${_mac} -p tcp --dport 80 -j ACCEPT
par celle-ci :
001 iptables -t nat -A OlsrNeighbors -m mac --mac-source ${_mac} -p tcp -j ACCEPT
Bon personnellement, j'ai encore quelques soucis, j'aimerais partager ces astuces et ces problèmes avec d'autres. N'hésitez pas à poser sur le forum.
Toutes les contributions à wiki.wwweball.com sont considérées comme publiées sous les termes de la GNU Free Documentation Licence, une licence de documentation libre.
Si vous ne désirez pas que vos écrits soient édités et distribués à volonté, ne les envoyez pas.
De même, merci de ne contribuer qu'en apportant vos propres écrits ou des écrits issus d'une source libre de droits.
N'UTILISEZ PAS DE TRAVAUX SOUS COPYRIGHT SANS AUTORISATION EXPRESSE !