View previous topic :: View next topic |
Author |
Message |
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Thu Oct 28, 2010 4:32 pm Post subject: [RESEAU] répartition charge 2 adsl (resolu/contourné) |
|
|
Bonjour à tous.
Voila j'ai monté POUR TEST (avant qu'on me déboite la tronche) un petit serveur debian brut de base de pomme avant de valider et de passer sous gentoo ..
ouaips le P2 il aime pas trop les compilos ^^
Bref, j'ai 3 interfaces :
eth2 = lan 192.168.1.1
eth0 = wan free ip fixe en mode modem
eth1 = idem
Je souhaite faire une répartition de charge entre mes 2 connections adsl chez free
J'ai honteusement effectué un superbe copier/coller légèrement adapté de ce que j'ai pu glaner par çi par la mais bon cela ne semble pas fonctionner (tu m'étonnes Simone ...)
Code: |
#!/bin/bash
echo 1 >| /proc/sys/net/ipv4/ip_forward
echo 0 >| /proc/sys/net/ipv4/conf/all/rp_filter
# flush all iptables entries
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P OUTPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
# initialise chains that will do the work and log the packets
iptables -t mangle -N CONNMARK1
iptables -t mangle -A CONNMARK1 -j MARK --set-mark 1
iptables -t mangle -A CONNMARK1 -j CONNMARK --save-mark
iptables -t mangle -A CONNMARK1 -j LOG --log-prefix 'iptables-mark1: ' --log-level info
iptables -t mangle -N CONNMARK2
iptables -t mangle -A CONNMARK2 -j MARK --set-mark 2
iptables -t mangle -A CONNMARK2 -j CONNMARK --save-mark
iptables -t mangle -A CONNMARK2 -j LOG --log-prefix 'iptables-mark2: ' --log-level info
iptables -t mangle -N RESTOREMARK
iptables -t mangle -A RESTOREMARK -j CONNMARK --restore-mark
iptables -t mangle -A RESTOREMARK -j LOG --log-prefix 'restore-mark: ' --log-level info
iptables -t nat -N SNAT1
iptables -t nat -A SNAT1 -j LOG --log-prefix 'snat-to-ipfree1: ' --log-level info
iptables -t nat -A SNAT1 -j SNAT --to-source ipfree1
iptables -t nat -N SNAT2
iptables -t nat -A SNAT2 -j LOG --log-prefix 'snat-to-ipfree2: ' --log-level info
iptables -t nat -A SNAT2 -j SNAT --to-source ipfree2
# restore the fwmark on packets that belong to an existing connection
iptables -t mangle -A PREROUTING -i eth2 -p tcp \
-m state --state ESTABLISHED,RELATED -j RESTOREMARK
# if the mark is zero it means the packet does not belong to an existing connection
iptables -t mangle -A PREROUTING -p tcp -m state --state NEW \
-m statistic --mode nth --every 2 --packet 0 -j CONNMARK1
iptables -t mangle -A PREROUTING -p tcp -m state --state NEW \
-m statistic --mode nth --every 2 --packet 1 -j CONNMARK2
iptables -t nat -A POSTROUTING -o eth0 -j SNAT1
iptables -t nat -A POSTROUTING -o eth1 -j SNAT2
if ! cat /etc/iproute2/rt_tables | grep -q '^251'
then
echo '251 rt_link1' >> /etc/iproute2/rt_tables
fi
if ! cat /etc/iproute2/rt_tables | grep -q '^252'
then
echo '252 rt_link2' >> /etc/iproute2/rt_tables
fi
ip route flush table rt_link1 2>/dev/null
ip route add table rt_link1 default dev eth0
ip route flush table rt_link2 2>/dev/null
ip route add table rt_link2 default dev eth1
ip rule del from all fwmark 0x1 lookup rt_link1 2>/dev/null
ip rule del from all fwmark 0x2 lookup rt_link2 2>/dev/null
ip rule del from all fwmark 0x2 2>/dev/null
ip rule del from all fwmark 0x1 2>/dev/null
ip rule add fwmark 1 table rt_link1
ip rule add fwmark 2 table rt_link2
ip route flush cache
|
Pour résumer (reboot routeur entre chaques tests) :
dhclient eth0 et lance le script = routeur OK (navigation et tout le bastringue), clients KO (pas de navigation mais ping/traceroute/dns ok)
dhclient eth1 et lance le script = routeur OK (""), clients KO ("")
dhclient eth0 eth1 et lance le script = routeur OK (""), clients KO ("")
script lancé (avec bien sur 2 messages RTNETLINK answers: Network is down) et dhclient eth0 = routeur OK et clients OK
idem si je lance eth1 ou les 2 en même temps ...
Any idea ?
Last edited by dapsaille on Sat Oct 30, 2010 10:40 am; edited 2 times in total |
|
Back to top |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Thu Oct 28, 2010 7:35 pm Post subject: |
|
|
résolu = pfsense |
|
Back to top |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Sat Oct 30, 2010 7:04 am Post subject: |
|
|
Bon, c'est pas vraiment "résolu", mais plutôt contourné! Bref, du coup je me permets deux trois commentaires:
- Tu fais, semble t'il, un RESTOREMARK avant de faire CONNMARK1 ou 2, du coup tu ne 'restore's rien du tout
- pourquoi tu te restreins à tcp? J'ignore si ce qui suit en est la cause, mais sache que l'état (state) d'un paquet (ESTABLISHED,NEW ou RELATED) n'est pas du tout lié au handshake tcp, au sens iptables/netfilter la notion de connexion établie par exemple, existe également pour UDP qui pourtant est un protocole non-connecté!
- Et enfin, tes liens free, ce sont des liens PPPoE? ou un truc du genre? j'demande car les routes par défaut que tu ajoutes dans tes tables rt-link1 et 2 ne sont pas très jolies dans le cas contraire! il faut au moins un NEXT HOP (ip r a default via a.b.c.d t rt-link1) il me semble!
- Lorsque tu ajoutes des règles iproutes, il faut absoluement que tu ajoutes une priorité, sinon, à un moment donné, tu vas te prendre la tête car ça ne fonctionne pas comme tu le crois, simplement parce-que tes règles ne sont pas dans l'ordre que tu croyais/voulais (attention la priorité/préférence est supposée être unique, malheureusement ip accepte quand même deux (ou plus)priorités égales pour des règles différentes (bouh!)
- Maintenant que j'y pense, si tu ne te restreins pas à tcp pour faire le 'load-balancing', tu peux avoir des résultats assez funky, notamment pour un traceroute! (donc, ne prends pas mal mes remarques hein! Elles peuvent toujours servir à d'autres, toussa toussa...)
_________________ The End of the Internet! |
|
Back to top |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Sat Oct 30, 2010 10:39 am Post subject: |
|
|
Houlaaa loin de moi l'idée de prendre mal de l'aide, bien au contraire
J'ai juste préféré pour le moment poser un pfsense "plug and play" et brainless car peu de temps à accorder à cet outil pour le moment.
Rapport au script en lui-même c'est un copier coller sans comprendre les 3 quarts de ce qu'il y a dedans je l'avoue.
Les liens free ne sont pas pppoe mais de type bridge dhcp ou routeur dhcp donc il est en effet probable que les tables ne soient pas adaptées.
Je met sous le coude toutes tes remarques et les transposerai probablement sur un autre serveur de test une fois un peu plus de temps de dispo |
|
Back to top |
|
|
JujuBickoille n00b
Joined: 20 Apr 2010 Posts: 15
|
Posted: Thu Jan 06, 2011 10:17 pm Post subject: |
|
|
Salut,
J'ai tenté de faire un multiwan de la façon que tu essaie... et franchement, j'ai trouvé le résultat moyen ( notament, des decos sur certains jeux du frangin....
Je te conseil le patch de Julian Anastasov que tu trouvera ici : http://www.ssi.bg/~ja/
Question iptables, tu n'a plus rien à faire ( enfin, dans mon cas j'ai de la QoS )... et c'est parti !
Chez moi ca tourne avec son patch depuis une 15aine de jour, pour le moment ça marche bien. Je compte d'ici quelques temps faire un petit tuto avec amour de mon bousin. |
|
Back to top |
|
|
JujuBickoille n00b
Joined: 20 Apr 2010 Posts: 15
|
Posted: Thu Jan 06, 2011 10:18 pm Post subject: |
|
|
Salut,
J'ai tenté de faire un multiwan de la façon que tu essaie... et franchement, j'ai trouvé le résultat moyen ( notament, des decos sur certains jeux du frangin....
Je te conseil le patch de Julian Anastasov que tu trouvera ici : http://www.ssi.bg/~ja/
Question iptables, tu n'a plus rien à faire ( enfin, dans mon cas j'ai de la QoS )... et c'est parti !
Chez moi ca tourne avec son patch depuis une 15aine de jour, pour le moment ça marche bien. Je compte d'ici quelques temps faire un petit tuto avec amour de mon bousin. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|