Notice: Undefined index: style in /home/admins/lab3w/web_sites/wwweball.com/www2/wiki/page.php on line 60
wWwEBALL.com - WIKI - OLSR-Gateway

Accès Rapide : Navigation Sécurisée | M'identifier | M'inscrire | Rechercher | Imprimer | Webmail 

Wiki wWwEBALL - OLSR-Gateway

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 :

  • Une carte PCI eth0 qui est branché sur la Freebox ayant comme IP une IP Internet.
  • Une carte wlan0 qui émet des ondes WIFI actuellement en mode Master à comme IP 10.92.120.17 et comme masque 255.0.0.0

Installation

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

Configuration :

Le Firewall

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

Le fichier /etc/olsrd.conf

001 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

Activer la carte Wi-Fi en mode ad-hoc

001 iwconfig wlan0 essid wiFi.wWwEBALL.com mode ad-hoc 

Lancement d'olsrd

Essayer :

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.

Pour l'instant les testes sont :

Plugin Http Info

La page /routes

Les nodes OLSR :

  • Depuis un poste windows ;

    • sans olsr.exe de lancé sur ce poste
      • sur ce poste : je navigue
      • sur l'interface Web de la node "AP" : je ne vois pas ce poste sur la page /nodes.

    • avec olsr.exe de lancé sur ce poste
  • Depuis un poste linux ;
    • pas testé !
    • la configuration doit être la même mis à part le fait, que nous ayons sûrement qu'une seule carte WiFi.

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

Les routes pour internet (ça vous l'savez sûrement déjà !)...

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.

  • Par exemple, j'ai des deconnexions, bcp de deconnexions :(


Reculer d'une page


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.

GNU Free Documentation License 1.2

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 !