Idiomes

Inici de sessió d'usuari


Com ajuntar dues ADSL


Doncs resulta que és una cosa ben senzilla.

A Tona ja fa una setmana que a les tardes s'utilitzen dues ADSL en paralel per contrarrestar la falta d'ample de banda que es rep per part de Telefònica.

Ho he instal·lat en un fedora 3 i no ha calgut modificar cap modul del kernel.

El procediment utilitza el iproute2 que per defecte ja porta el kernel 2.4

Necessitem una ethernet per cada ADSL amb la seva subxarxa corresponent.

Nomenclatura:

eth0  -> primer interficie connectat a la ADSL1
192.168.1.1  -> IP associada a eth0
192.168.1.2  -> IP del router ADSL1
192.168.1.0/24  -> subxarxa on hi ha ADSL1

eth1  -> primer interficie connectat a la ADSL2
192.168.2.1  -> IP associada a eth1
192.168.2.2  -> IP del router ADSL2
192.168.2.0/24  -> subxarxa on hi ha ADSL2

Primer:
Crear dues taules de rutes adicionals al fitxer /etc/iproute2/rt_tables.
Es tant senzill com obrir el fitxer amb un editor de text i afegir-hi les dues linies següents:
200 ADSL1
201 ADSL2

Segon:
Assignem cada subxarxa a la taula i interficie corresponent.
Des del prompt del sistema:
# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1 table ADSL1
# ip route add default via 192.168.1.2 table ADSL1
# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1 table ADSL2
# ip route add default via 192.168.2.2 table ADSL2

Tercer:
Ara cal assegurar que el servidor contesta per la mateixa interfície que s'ha fet la petició.
# ip route add 192.168.1.0/24 dev eth0 src 192.168.1.1
# ip route add 192.168.2.0/24 dev eth1 src 192.168.2.1

Quart:
Només cal crear la ruta per defecte balancejada.
# ip route add default scope global netxhop via 192.168.1.2 dev eth0 weight 1 nexthop via 192.168.2.2 dev eth1 weight 1

i ja està.

Podeu trobar un manual molt complert i clar de com funciona iproute2 a la següent URL:
http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Adv-Routing-HOWTO.html

Es un manual molt complert, per aconseguir això només m'he hagut de llegir les primeres 13 pàgines de 94 que en té i és fins el capítol 4 de 20 que en té, poc a poc m'aniré llegint els altres, però promet molt.

Quim

Comentaris

Opcions de visualització de comentaris

Selecciona la vostra manera preferida de visualitzar els comentaris i feu clic en "Desa la configuració" per activar els canvis.

molt bona feina

... i molt interessant el document que cites !

Ostres...

Això potser ho hauriem de posar a Gurb, que tenim el mateix problema: No poden ampliar el que ara donen...
Aquesta feina l'heu de vendre als padrins dels proxys ;)

iproute2

He trobat aquesta també interessant documentació sobre iproute2 
http://www.policyrouting.org/iproute2.doc.html#ss9.0

(això dóna per a molt !)

ip rule add from $IP1 table T1

I això no ho has fet?

Policy Routing

M'ho estic mirant per fer una cosa semblant a casa, on tinc dos tunels openvpn cap a dues ADSL. Mes que tenir dues sortides per fer-ne servir una quan l'altre estigui "plena" es perque cada una la vull fer servir per coses diferents. Buscant per Internet he trobat alguns manuals sobre "Policy Routing" que explica com fer-ho. Els he trobat molt interessants, de lectura recomenada, sobretot el primer:

http://www.policyrouting.org/PolicyRoutingBook/ONLINE/TOC.html
http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html
http://www.debian-administration.org/articles/379

un dubte

Si això, per exemple, forma part d'un proxy, com queda la tercera ethernet, la que l'enllaça amb la seva xarxa local, etc. (IPs, configs, etc)

Queda igual

Queda igual. Ni cal fer servir el iproute2 per configurar-la. Imaginem que es el eth2, la configuració manual seria:

ifconfig eth2 10.a.b.c netmask 255.255.255.224
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.a.b.d

gràcies

ho has provat ja a la teva instal.lació ?

Fa unes setmanes que estic

Fa unes setmanes que estic fent diverses proves amb el iproute2, amb dues connexions a Internet. Hi ha coses que diuen als "manuals" que a mi no m'acaben de convencer.

Per exemple, el que aqui s'explica, en molts lloc es "ven" com sistema per ajuntar dies ADSL i alhora sistema de "failover" (en cas de que una falli, no passa res). En les proves que he estat fent, funciona perfectament com a sistema per ajuntar dues ADSLs, pero no com a failover.

Si una de les dues ADSLs falla, el iproute2 no ho sap i continua enviant paquets cap a la ADSL caiguda. La carrega entre les dues ADSLs es defineix amb el parametre weight. SI en les dues es posa weight 1, el 50% de les conexions es desvia cap a una ADSL i el 50% restatnt cap a l'altre. En aquest cas, si una falla, el 50% de les connexions fallen.

Per a fer un failover real, t'has d'empescar un sistema afegit que continuament comprovi la connectivitat de les dues ADSLs, i modifiqui la configuració de les rutes en cas que una caigui ...

Sobre el exemple que he posat abans del eth2, si no recordo malament, funciona. Tot i que afegeixis una ruta amb el sistema antic "ip route add ...", el iproute2 el reconeix i el fa seu. Questio de provar-ho. Pero posaria la ma al foc.

Molt bé ...

Per el que comentes tot és coherent amb el 50% - 50% i que no controla el cas de fallo, que a la pràctica pot ser el més necessari.

Algun router Zyxel incorpora mecanisme de control de fallo de l'ADSL i ho fa verificant l'enllaç amb alguna adreça a internet de confiança. En cas de fallo desvia tot el tràfic a un segon gateway alternatiu. Suposo que deu seguir verificant la primera per si ha de tornar.

De moment no estic en situació de poder provar res de tot això, però n'hem parlat amb companys de cara a un parell de futures instal.lacions.

Comprovar ADSL

Com que tinc una ADSL que falla cada 2x3, tinc un script molt simple que el cron crida cada 5 minuts per fer un reboot del router ADSL. Ull, es especific per al router Zyxel 643 que tinc. Simplement fa 2 pings a un servidor DNS de telefònica, en cas de que fallin fa el mateix que faries entrat mitjançant el panell web i clicant sobre el boto de "reset ADSL":
#!/bin/sh

# Cal canviar U_S_E_R i P_A_S_S al que tingueu al router.
# Cal canviar I_P per la que correspongui al vostre router.

ping -c 2 80.58.0.33 >/dev/null || curl -s -d "LineInfoDisplay=Start+to+reset+ADSL%0D%0ALoading+ADSL+modem+F%2FW...&Submit=++Reset+ADSL+Line++" "http://U_S_E_R:P_A_S_S@I_P/Forms/DiagADSL" >/dev/null
  Per fer-ho amb un sistema que tingui les dues ADSLs ajuntades es més complex. Has de fer policy routing per "forçar" que el ping surti per la ADSL que vols comprovar, i alterar les taules del iproute2 en consequència. Aqui no valen formules màgiques, no puc posar un exemple genèric, es específic per a cada cas.

No entec la teva config.

No entec la teva config. Pots explicar-ho millor?