31/12/2009

EeeGW : Créer soi-même une passerelle réseau

Faire fonctionner les deux connexions ensemble

Plusieurs choix s’offrent à vous:

  • Vous n’avez qu’un seul lien vers une seule connexion internet. Passez directement à l’étape suivante.
  • Vous avez deux connexions web qui ont le même débit et vous souhaitez partager symétriquement le débit
  • Vous avez deux connexions web qui n’ont pas le même débit et vous souhaitez partager asymétriquement le débit
  • Vous avez deux connexions web qui ont ou pas le même débit : une en tant que connexion principale et l’autre en secours ou pour certaines routes en particulier
  • Personnellement j’utilise cette dernière solution, mais je vais aussi vous expliquer les deux autres possibilités de répartiton.

    Activer IP Forwarding

    Quel que soit les choix que vous ferrez par la suite vous avez besoin d’activer ip_forward dans votre noyau.

    Indispensable pour que votre routeur fonctionne!

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding = 1

    Et rechargez la configuration:

    # sysctl -p

    Distribuer sur deux connexions ayant le même poids

    Imaginons que nous ayons FAI-1 derrière eth1 et FAI-2 derrière eth2. Ce deux connexions sont relativement identiques et nous souhaitons donc simplement distribuer équitablement le traffic et ainsi profiter du débit des deux connexions.

    eth1: net=192.168.1.0/24, IP=192.168.1.130, Gateway=192.168.1.1
    eth2: net=192.168.2.0/24, IP=192.168.2.131, Gateway=192.168.2.1

    ip route add 192.168.1.0 dev eth1 src 192.168.1.130 table fai1
    ip route add default via 192.168.1.1 table fai1

    ip route add 192.168.2.0 dev eth2 src 192.168.2.131 table fai2
    ip route add default via 192.168.2.1 table fai2

    ip route add 192.168.1.0 dev eth1 src 192.168.1.130 ip route add 192.168.2.0 dev eth2 src 192.168.2.131

    ip rule add from 192.168.1.130 table fai1
    ip rule add from 192.168.2.131 table fai2

    ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 1 nexthop via 192.168.2.1 dev eth2 weight 1

    Distribuer sur deux réseaux de poids différents

    Petit schéma explicatif de ce qu’on peut espérer faire avec une passerelle comme eeegw

    (schéma a compléter)

    Un script pour loadbalancer les connexions sur deux wan ayant différents poids : Notre eeegw devient multi lien ou dualwan

    #!/bin/bash

    ##ip rule flush

    ## recupere l'ip du peer
    peer=$(/sbin/ifconfig  ppp0 | /bin/grep "P-t-P" | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1)

    ip route add ${peer} dev ppp0 table uplink1
    #ip route add default via 213.41.185.56 table uplink1

    ip route add 192.168.0.0/24 dev ath0 src 192.168.0.12 table uplink2
    #ip route add default via 192.168.1.1 table uplink2

    ip rule add from 192.168.0.12 table uplink2
    ip rule add from 213.41.185.56 table uplink1

    ip route add default scope global nexthop via 192.168.0.254 dev ath0 weight 1 nexthop via ${peer} weight 3

    Le but du script share_wan.sh est d’enlever les deux routes par defaut engendré par le faite de se connecter en ppp et avec dhcp sur le wifi.
    Ensuite il faut mettre en route par defaut soit le lien ppp soit le lien wifi.
    La dernière ligne sert a donner un poids de 3 à la connexion Nerim et un poid de 1 à la connexion wifi.

    Ainsi on enverra 3 fois plus de packets à Nerim qu’au WiFi.

    /etc/eeegw/share_wan.sh
    #!/bin/bash
    ip route del default dev ppp0  scope link
    ip route del default via 192.168.0.254 dev ath0
    ip route add default scope global nexthop via 192.168.0.254 dev ath0 weight 1 nexthop via ${peer} weight 3

    Routes par defaut / routes statiques

    J’utilise ce système de route static via mon script route_static.sh pour définir via quel FAI je préfère me rendre pour tel ou tel service. C’est très pratique. (Je rappelle que j’utilise le cas numero 4, c’est à dire que ma connexion ppp est ma connexion principale, mais la connexion wifi ne me sert que ne backup au cas ou, et pour des routes particulières).

    /etc/eeegw/route_static.sh
    #!/bin/bash

    ## recupere l'ip du peer PPP
    peer=$(/sbin/ifconfig  ppp0 | /bin/grep "P-t-P" | /usr/bin/cut -d":" -f3 | /usr/bin/cut -d" " -f1)

    # telephone passe par la connexion ppp
    ip route add 81.93.243.132 via ${peer}

    # vpn perso passe par la connexion wifi
    ip route add 81.93.247.160 via ${peer}
    ip route add 193.47.184.2 via ${peer}
    ip route add 94.23.219.37 via 192.168.0.254
  1. Jamesb
    | #1

    Salut.
    Comment est-ce que t’es branché au niveau des câbles (RJ45?) pour le FAI Narim ? Passes-tu par l’ancien modem-routeur ou est-ce que tu te branches à la place de celui-ci ? Est-ce qu’un pc faisant du PPPoP par RJ45 suffit à se passer physiquement et logiciellement d’un routeur ?
    Merci d’avance.

  2. | #2

    Salut.

    J’ai un modem ethernet.
    Ce modem ethernet (qui fonctionne CONNEMENT en mode “bridge” ) ne s’occupe que de faire la modulation ADSL sur ma ligne téléphonique.

    Les identifiants/mdp pour se connecter au FAI sont fait via la eeegw.
    Le modem sert juste à se synchroniser à l’adsl.

    Pour info j’utilise un : Linksys AM200

    En espérant avoir répondu à ta question.

  3. | #3

    Super article !
    Je vais tester et je te spammerais surement si je rencontre un problème 😉

  4. nzo
    | #4

    Il va chauffer beaucoup trop l’eeepc et son alim avec pour du 24/24.

  5. | #5

    @nzo Le CPU ne dépasse jamais les 50° et est stable en étant allumé 24/24
    Je peux te montrer les graph si tu veux car je monitore la T° CPU du eeegw.

    @akiri n’hésites pas.

  6. | #6

    La T° du CPU est désormais disponible dans l’article consacré à Munin.

  1. | #1
  2. | #2