bin j'avais exactement le meme besoin, on est 400 et on avait une seule freebox, et on est passé à 4.
Config :
eth0 : interne, eth1 à 4, 4 freebox
un DHCP (172.20.0.0/255.255.252.0)
Ma solution est donc :
Un script php/mysql pour s'inscrire, ca recupère la MAC, l'utilisateur paye, et ca crée une liste des MAC autorisé avec son numéro de ligne.
iptables marque les paquets (10, 20, 30 ou 40) en fonction de cette liste de MAC,
Puis fait un SNAT.
Et apres je gère le routage dans les differentes tables de routage :
# ip route list table ligne1
82.234.30.0/24 dev eth1 proto kernel scope link src 82.234.30.170
default via 82.234.30.254 dev eth1
# ip route list table ligne2
82.234.30.0/24 dev eth2 proto kernel scope link src 82.234.30.167
default via 82.234.30.254 dev eth2
etc...
Et des règles de routage en fonction de la marque mise par iptables :
# ip rule list
0: from all lookup local
32326: from all fwmark 0x31 lookup ligne4
32327: from all fwmark 0x2b lookup ligne4
32328: from all fwmark 0x2a lookup ligne4
32329: from all fwmark 0x29 lookup ligne4
32330: from all fwmark 0x28 lookup ligne4
32331: from all fwmark 0x27 lookup ligne3
32332: from all fwmark 0x21 lookup ligne3
32333: from all fwmark 0x20 lookup ligne3
32334: from all fwmark 0x1f lookup ligne3
32335: from all fwmark 0x1e lookup ligne3
32336: from all fwmark 0x1d lookup ligne2
32337: from all fwmark 0x17 lookup ligne2
32338: from all fwmark 0x16 lookup ligne2
32339: from all fwmark 0x15 lookup ligne2
32340: from all fwmark 0x14 lookup ligne2
32341: from all fwmark 0x13 lookup ligne1
32342: from all fwmark 0xd lookup ligne1
32343: from all fwmark 0xc lookup ligne1
32344: from all fwmark 0xb lookup ligne1
32345: from all fwmark 0xa lookup ligne1
32766: from all lookup main
32767: from all lookup default
En plus de ca j'ai mis de la QoS, qui priotérise en fonction du port (et c'est super efficace : ping en upload non saturé : 45ms, upload saturé 500ms, saturé + QoS 55-60ms)
Et je choisis les ports sortants ouvert en fonction de la ligne, mais le choix pourais tres bien etre en fonction de la MAC.
J'ai essayé le load balancing mais toutes les 10 minutes MSN se déconnectait, donc je prefère attribuer les utilisateurs statiquement. Et l'usage moyen des lignes est semblablement le meme.
Si vous voulez des morceau de mon script (520 lignes), il suffit de me demander.
# j'ai une solution ;-)
Posté par gemini137 . En réponse au message passerelle résidence étudiante. Évalué à 2.
Config :
eth0 : interne, eth1 à 4, 4 freebox
un DHCP (172.20.0.0/255.255.252.0)
Ma solution est donc :
Un script php/mysql pour s'inscrire, ca recupère la MAC, l'utilisateur paye, et ca crée une liste des MAC autorisé avec son numéro de ligne.
iptables marque les paquets (10, 20, 30 ou 40) en fonction de cette liste de MAC,
Puis fait un SNAT.
Et apres je gère le routage dans les differentes tables de routage :
# ip route list table ligne1
82.234.30.0/24 dev eth1 proto kernel scope link src 82.234.30.170
default via 82.234.30.254 dev eth1
# ip route list table ligne2
82.234.30.0/24 dev eth2 proto kernel scope link src 82.234.30.167
default via 82.234.30.254 dev eth2
etc...
Et des règles de routage en fonction de la marque mise par iptables :
# ip rule list
0: from all lookup local
32326: from all fwmark 0x31 lookup ligne4
32327: from all fwmark 0x2b lookup ligne4
32328: from all fwmark 0x2a lookup ligne4
32329: from all fwmark 0x29 lookup ligne4
32330: from all fwmark 0x28 lookup ligne4
32331: from all fwmark 0x27 lookup ligne3
32332: from all fwmark 0x21 lookup ligne3
32333: from all fwmark 0x20 lookup ligne3
32334: from all fwmark 0x1f lookup ligne3
32335: from all fwmark 0x1e lookup ligne3
32336: from all fwmark 0x1d lookup ligne2
32337: from all fwmark 0x17 lookup ligne2
32338: from all fwmark 0x16 lookup ligne2
32339: from all fwmark 0x15 lookup ligne2
32340: from all fwmark 0x14 lookup ligne2
32341: from all fwmark 0x13 lookup ligne1
32342: from all fwmark 0xd lookup ligne1
32343: from all fwmark 0xc lookup ligne1
32344: from all fwmark 0xb lookup ligne1
32345: from all fwmark 0xa lookup ligne1
32766: from all lookup main
32767: from all lookup default
En plus de ca j'ai mis de la QoS, qui priotérise en fonction du port (et c'est super efficace : ping en upload non saturé : 45ms, upload saturé 500ms, saturé + QoS 55-60ms)
Et je choisis les ports sortants ouvert en fonction de la ligne, mais le choix pourais tres bien etre en fonction de la MAC.
J'ai essayé le load balancing mais toutes les 10 minutes MSN se déconnectait, donc je prefère attribuer les utilisateurs statiquement. Et l'usage moyen des lignes est semblablement le meme.
Si vous voulez des morceau de mon script (520 lignes), il suffit de me demander.