Table des matières

Infrastructure de SamesWireless

Présentation par Fernando Alves le 09.10.2010

La configuration de SamesWireless est simple :

Toutes les antennes du réseau sont réglées en mode pont transparent (WDS) avec IP privées (192.168.x.x/24). Tout le réseau est entièrement composé de techno M5 ou M2 de Ubiquiti. Avec ce mode c'est comme si chaque modem/routeur des adhérents était relié par un câble Ethernet à la passerelle (niveau 2).

Ensuite tout se règle sur la passerelle :

Avec cette configuration les adhérents ont l'impression d'avoir une connexion ADSL 8Mbits, il faut dire aussi que aujourd'hui nous n'avons pas de gros téléchargeur qui télécharge 24h/24h.

Le coût : aujourd'hui pour adhérer à SamesWireless, c'est 100 euros de droit d'entrée et ensuite 15euros/mois pour le service internet. À ce jour SamesWireless a un petit déficit de 1000euros qui devrait être comblé dans l'année.

FAQ suite à cette présentation

Q : Quelles sont les contraintes lors du déploiement d'un réseau Wifi (hors déclaration éventuelle auprès de l'ARCEP) ? Faut-il des autorisations particulières en mairie par exemple ?
R : Non aucune, il faut juste respecter la PIRE 0,1w en 2.4Ghz et 1w en 5Ghz

Q : Parmi les contraintes éventuelles, y a-t-il eu des réticences des habitants de la commune lorsque vous avez déployé votre réseau Wifi ?
R : Nos antenne sont installées sur les toits des adhérents (domaine privé), personne ne peut rien dire (droit a l'antenne). J'ai aussi fait un peu de pédagogie auprès des habitants : émetteur GSM 100W, WIMAX 20W à 50W, téléphone portable 2W, WIFI de 0,1W à 1W même puissance que le Wifi d'une BOX ADSL.

Q : Au jour d'aujourd'hui, ça donne quoi SamesWireless en chiffres (nombre d'adhérents à l'asso, superficie couverte, …) ?
R : Ponts les plus long, de 3 à 4km. 44 adhérents, 6 adhérents sont passé à la VoIP dont moi même (1,20euros/mois chez OVH). Nous couvrons le village de Sames et ceux qui sont en limite périphérique.

Q : L'énorme charge que vous avez rencontrée est liée au fait que vous couvriez une zone blanche (avec donc un grand nombre de demandes) ou y a-t-il d'autres facteurs ?
R : Oui, c'est surtout parce que nous couvrons une zone blanche mais le coût aussi (15euros/mois). Certains déçus du satellite viennent chez nous avant la fin de leurs engagements.

Q : Avez-vous rencontré de grosse difficultés techniques lors du déploiement du réseau, notamment entre Guiche et Sames ?
R : Oui les arbres et les collines :-)

Q : Est-ce légal ?
R : OUI

Q : Et au sujet de la gestion des membres, vous avez opté pour quelles solutions ? Les créations de lignes sont-elles automatisées ?
R : L'ouverture d'une ligne WIFI n'est pas très automatisée. Aujourd'hui je dois modifier plusieurs scripts sur la passerelle pour ajouter un adhérent.

Q : Quand un nouvel adhérent demande un accès, faites-vous la demande à FDN à la main ?
R : Ce sont des lignes ADSL partagées à plusieurs. Aujourd'hui 2 lignes ADSL (10M) a 43 adhérents, une 3ème est en cours de construction.

Q : Par curiosité, comment le load-balancing est-il mis en œuvre ?
R : Aujourd’hui j’ai la moitié des adhérents sur la 1ère ligne et l’autre moitié sur la 2ème. Côté FDN Domi essaye de mettre en place MLPPP, en espérant que ça marchera.

Présentation infrastructure

Schéma de la passerelle

gateway2.jpg

Infos: Les IPs données dans ces exemples ne correspondent pas aux IPs réellement utilisées sur notre réseau.

Aujourd'hui FDN nous livre un bloc de 128 IP publiques (80.68.167.128/25) découpées en 4 blocs de 32 IPs (un /27 par connexion ppp).
ppp0 –> 80.68.167.128/27
ppp1 –> 80.68.167.160/27
ppp2 –> 80.68.167.192/27
ppp3 –> 80.68.167.224/27

Si l'on veut utiliser la même interface physique pour monter plusieurs connexions ppp il faut utiliser les vlan, car lors de la négociation pppoe avec le serveur, le serveur n'accepte qu'une connexion ppp par adresse MAC.
Pour cela Il faut avoir installé le paquet vlan (voir vconfig) pour pouvoir utiliser les vlan sur une debian.

http://www.linux-france.org/prj/inetdoc/cours/routage.inter-vlan/routage.inter-vlan.typical.html

configuration du fichier interface

alix:/# cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1 eth2
iface lo inet loopback

iface eth0 inet static
    post-up iptables-restore </etc/iptables.up.rules
    address 192.168.2.1
    netmask 255.255.255.0
    broadcast 192.168.2.255
    network 192.168.2.0

auto eth0.101
iface eth0.101 inet static
        address 192.168.101.2
        netmask 255.255.255.0
        broadcast 192.168.101.255
        network 192.168.101.0
        hwaddress ether 00:0d:b9:1d:3f:d7

auto eth0.102
iface eth0.102 inet static
        address 192.168.102.2
        netmask 255.255.255.0
        broadcast 192.168.102.255
        network 192.168.102.0
        hwaddress ether 00:0d:b9:1d:3f:d8

auto eth0.103
iface eth0.103 inet static
        address 192.168.103.2
        netmask 255.255.255.0
        broadcast 192.168.103.255
        network 192.168.103.0
        hwaddress ether 00:0d:b9:1d:3f:d9

auto eth0.104
iface eth0.104 inet static
        address 192.168.104.2
        netmask 255.255.255.0
        broadcast 192.168.104.255
        network 192.168.104.0
        hwaddress ether 00:0d:b9:1d:3f:da

# LAN Private Network
iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        broadcast 192.168.1.255
        network 192.168.1.0

# LAN Publique Network
iface eth2 inet static
        address 80.68.167.129
        netmask 255.255.255.128
        broadcast 80.68.167.255
        network 80.68.167.128

Définition de 4 tables iproute, une par connexion ppp (WAN1,WAN2,WAN3 et WAN4)

alix:/# cat /etc/iproute2/rt_tables

#
# reserved values
#
255     local
254     main
253     default
0       unspec

201 WAN1
202 WAN2
203 WAN3
204 WAN4

script de routage lancé au boot

alix:/# cat /etc/init.d/routing

#!/bin/sh

PATH=/sbin:/bin:/usr/bin

do_stop () {
        ip route flush cache
}

do_start () {
        ip route flush table WAN1
        ip route flush table WAN2
        ip route flush table WAN3
        ip route flush table WAN4

        # Table WAN1
        ip route add 127.0.0.0/8 dev lo table WAN1
        ip route add 80.68.167.128/25 dev eth2 proto kernel scope link src 80.68.167.129 table WAN1
        ip route add 192.168.101.0/24 dev eth0.101 proto kernel scope link src 192.168.101.2 table WAN1
        ip route add 192.168.102.0/24 dev eth0.102 proto kernel scope link src 192.168.102.2 table WAN1
        ip route add 192.168.103.0/24 dev eth0.103 proto kernel scope link src 192.168.103.2 table WAN1
        ip route add 192.168.104.0/24 dev eth0.104 proto kernel scope link src 192.168.104.2 table WAN1
        ip route add 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 table WAN1

        # Table WAN2
        ip route add 127.0.0.0/8 dev lo table WAN2
        ip route add 80.68.167.128/25 dev eth2 proto kernel scope link src 80.68.167.129 table WAN2
        ip route add 192.168.101.0/24 dev eth0.101 proto kernel scope link src 192.168.101.2 table WAN2
        ip route add 192.168.102.0/24 dev eth0.102 proto kernel scope link src 192.168.102.2 table WAN2
        ip route add 192.168.103.0/24 dev eth0.103 proto kernel scope link src 192.168.103.2 table WAN2
        ip route add 192.168.104.0/24 dev eth0.104 proto kernel scope link src 192.168.104.2 table WAN2
        ip route add 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 table WAN2

        # Table WAN3
        ip route add 127.0.0.0/8 dev lo table WAN3
        ip route add 80.68.167.128/25 dev eth2 proto kernel scope link src 80.68.167.129 table WAN3
        ip route add 192.168.101.0/24 dev eth0.101 proto kernel scope link src 192.168.101.2 table WAN3
        ip route add 192.168.102.0/24 dev eth0.102 proto kernel scope link src 192.168.102.2 table WAN3
        ip route add 192.168.103.0/24 dev eth0.103 proto kernel scope link src 192.168.103.2 table WAN3
        ip route add 192.168.104.0/24 dev eth0.104 proto kernel scope link src 192.168.104.2 table WAN3
        ip route add 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 table WAN3

        # Table WAN4
        ip route add 127.0.0.0/8 dev lo table WAN4
        ip route add 80.68.167.128/25 dev eth2 proto kernel scope link src 80.68.167.129 table WAN4
        ip route add 192.168.101.0/24 dev eth0.101 proto kernel scope link src 192.168.101.2 table WAN4
        ip route add 192.168.102.0/24 dev eth0.102 proto kernel scope link src 192.168.102.2 table WAN4
        ip route add 192.168.103.0/24 dev eth0.103 proto kernel scope link src 192.168.103.2 table WAN4
        ip route add 192.168.104.0/24 dev eth0.104 proto kernel scope link src 192.168.104.2 table WAN4
        ip route add 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.1 table WAN4

        ip route add 127.0.0.0/8 dev lo

        # DEMARRAGE des connexions PPPOE
        pon dsl-provider1
        pon dsl-provider2
        pon dsl-provider3
        pon dsl-provider4
}

case "$1" in
  start)
    do_start
    exit 0
    ;;
  restart|reload|force-reload)
    echo "Error: argument '$1' not supported">&2
    exit 3
    ;;
  stop)
    do_stop
    exit 0
    ;;
  *)
    echo "Usage: $0 start|stop">&2
    exit 3
    ;;
esac

configuration des fichiers dsl-provider1, 2 , 3 et 4

alix:~# cat /etc/ppp/peers/dsl-provider1

noipdefault
defaultroute

hide-password
lcp-echo-interval 15
lcp-echo-failure 5

connect /bin/true
noauth
persist
mtu 1462

noaccomp

default-asyncmap

plugin rp-pppoe.so eth0.101
user "sameswireless.line1@fdn.nerim"''

script de routage lors du montage d'une connexion ppp

alix:~# cat /etc/ppp/ip-up.d/routing''

#!/bin/sh

PATH=/sbin:/bin

WAN=WAN1
NETW=80.68.167.128
MAXUP0=700
MAXUP1=600

if [ "$PPP_LOCAL" = 80.70.120.108 ]; then
WAN=WAN1
NETW=80.68.167.128
elif [ "$PPP_LOCAL" = 80.70.120.135 ]; then
WAN=WAN2
NETW=80.68.167.160
elif [ "$PPP_LOCAL" = 80.70.120.179 ]; then
WAN=WAN3
NETW=80.68.167.192
elif [ "$PPP_LOCAL" = 80.70.120.218 ]; then
WAN=WAN4
NETW=80.68.167.224
fi

ip route add $PPP_REMOTE dev $PPP_IFACE proto kernel scope link src $PPP_LOCAL table $WAN
ip route add default dev $PPP_IFACE scope link table $WAN

tc qdisc del dev $PPP_IFACE root handle 1: htb

tc qdisc add dev $PPP_IFACE root handle 1: htb default 100
tc class add dev $PPP_IFACE parent 1: classid 1:1 htb rate 100000Kbit ceil 100000Kbit burst 1023975b cburst 126575b prio 0 quantum 60000
tc class add dev $PPP_IFACE parent 1:1 classid 1:2 htb rate 800kbit ceil 800kbit burst 6Kb cburst 2224b quantum 60000

tc class add dev $PPP_IFACE parent 1:2 classid 1:10  htb rate 500kbit ceil ${MAXUP0}kbit burst 48Kb prio 1 quantum 60000
tc qdisc add dev $PPP_IFACE parent 1:10 handle 10: sfq perturb 10

tc class add dev $PPP_IFACE parent 1:2 classid 1:3  htb rate 200kbit ceil ${MAXUP0}kbit burst 24Kb prio 2 quantum 60000

tc class add dev $PPP_IFACE parent 1:3 classid 1:100  htb rate 100kbit ceil ${MAXUP1}kbit burst 24Kb prio 3 quantum 60000
tc qdisc add dev $PPP_IFACE parent 1:100 handle 100: sfq perturb 10

tc qdisc del dev $PPP_IFACE ingress
tc qdisc add dev $PPP_IFACE handle ffff: ingress
tc filter replace dev $PPP_IFACE parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 10000kbit burst 500k drop flowid :1

tc filter add dev $PPP_IFACE parent 1:0 protocol ip prio 1 handle 0x01/0xF fw flowid 1:10

ip rule del from 80.68.167.128/27 table $WAN
ip rule del from 80.68.167.160/27 table $WAN
ip rule del from 80.68.167.192/27 table $WAN
ip rule del from 80.68.167.224/27 table $WAN

ip rule add from $NETW/27 table $WAN