Debian Squeeze Route táblák útvonalválasztás
Ha egyetlen internet vonalunk van, akkor teljesen egyszerű dolgunk van. Viszont ha 2 vagy több internet vonallal rendelkezünk máris ránk szakad egy csomó probléma. Lehet terhelés elosztást csinálni(load balancing), de ez igazán csak két fix ip-s internet vonal esetén jó. Mi abban a szerencsétlen esetben járunk, hogy a két internet vonalunkból csak az egyik fix ip-s. A kliensek nagy részének nincs szüksége a fix-ip-re. Azt szeretnénk elérni, hogy megmondhassuk a klienseknek, hogy melyik mehetnek |
|
Amikor bekötöttük a két internet vonalat szerverbe, a nagy öröm gyorsan elfog fogyni, amikor rájövünk, hogy nincs is internetünk gyakorlatilag a szerveren. A probléma az útvonalválasztásnál keresendő. Ha kiadjuk a route -n parancsot akkor furcsa dolgot fogunk találni. A flags oszlopban ha figyeljük két olyan sorunk van amiben UG paraméter szerepel. Ez azt takarja csak, hogy két átjárónk van a szerverben, magyarul a két internet vonal átjárója. A szerencsétlen kliensek és a szerver se tudja, így eldönteni, hogy merre is menjenek a csomagok. Azt a trükköt fogjuk elkövetni, hogy létrehozunk egy új táblát és ha az új internetvonalunkat akarjuk használni, akkor erre az új táblára küldjük az csomagokat. Ha nem küldjük oda, akkor pedig minden megy a régi netünkre alapértelmezetten. Persze a szerveren is a régi net marad alapértelmezetten. Így máris lehet két gateway-ünk. Egyik a fő route táblában, a másik pedig az általunk létrehozottban. Első lépésben az /etc/iproute2/rt_tables fájlt egészítsük ki mondjuk ezzel a sorral: 3 ujnet A hármas lesz az azonosítója az új internetvonalunknak. Azt kell tudni, hogy minden újraindítás vagy /etct/init.d/networking restart parancs után ez a tábla felülíródik. Mi azt fogjuk elkövetni, hogy létrehozunk egy fájlt amit berakunk az /etc/network/if-up.d mappába. Így ha egy hálókártyánk feléled, utána lefut a script és a mi új beállításaink lesznek érvényesek. Gyűjtsünk össze információkat, az internet vonalainkról. réginet ujnet Az ne zavarjon meg senkit se, hogy most két routernek írtam fel az információit, írhattam volna hasra ütésszerűen két netes ip címet is, akár 195.143.232.32 csak ez volt a teszt rendszerünkben a példa és ezt másoltam le. Tessék figyelni a netmask-ra, mert ezen könnyen el lehet csúszni sokszor a szolgáltató ad /27-et vagy /28-at is akár nem mindig ilyen szép /24 van! Hozzuk létre a fájlt, az alábbi tartalommal. Először törüljük a route táblából az új net vonalunk, viszont a régit békén hagyjuk. Legyen eth4 az új internet vonalunk! #!/bin/bash Hozzuk létre az ujnet táblánkat, adjuk hozzá a másik két hálókártyánkat, állítsuk be a gateway-nek az új netünket és adjuk meg azonosítónak a 3-ast(a következő bekezdés is még az előző fájlba kerül bele). # ujnet tabla letrehozasa: Miután ezekkel megvagyunk szükség lesz módosítani a tűzfalunkat is. Vegyük fel az új netvonalunkat a tűzfalunk elején: IF_UJNET="eth4" Csak az internetet szeretnénk biztosítani rajta a klienseinknek, így nem kell túl sok helyen bővíteni. Tiltsuk a dhcp-t kifele: Blokkoljuk az internet felől jövő kéréseket: Az alábbi sorokat mi nem a tűzfal fájlunkba, hanem a "route táblás" fájlunk végére tettük. Abból a megfontolásból, mert a route táblát módosítani csak, akkor van szükség, ha két netvonalunk van, ha nincs, akkor nem kell lefuttatni se. Így ha megszűnik az egyik netvonalunk, akkor csak ezt a fájlt kell eltüntetni. Így célszerű együtt kezelni őket, viszont ugye ez a fájl mindig lefut ha hálókártyákkal módosítás történt (restart vagy ifup, ifdown). Ez a szabály jelöli meg a csomagokat a 3-as azonosítóval, hogy az útvonalválasztáskor a 3-as azonosítóval rendelkező ujnet táblára érkezzenek az adatcsomagok. #rendszergazda halozat Innentől már készen is vagyunk és már csak a proxy-t kell beállítani, hogy minden szép és jó legyen. Viszont előfordulhat az az eset, hogy kiakarjuk kerülni a proxy-t, ezt a 80-as porton tehetjük meg, akkor ezeket írjuk be a tűzfalba: $IPTABLES -t nat -A PREROUTING -p tcp -s 10.0.130.0/16 --dport 80 -j ACCEPT Egyéb érdekes információk: Az útvonalkeresés a route táblákon úgy néz ki, hogy az ip rule list mentén fut végig az útvonal keresés, majd ha a route táblákban talál egyezést akkor vége, különben fut tovább a többi táblán. Ha megszeretnénk nézni a rule list tartalmát: ip rule list Fő route tábla tartalma: route -n vagy: ip route list ujnet tábla lekérdezése: ip route list table ujnet Adsl-nél ppp0 interfészen nincs default gateway. Helyette 0.0.0.0 értékek szerepelnek és így néz ki: Destination Gateway Genmask Flags Metric Ref Use Iface Tesztelni egyébként, hogy melyik net vonalat használja aktuálisan a szerver egyszerűen a traceroute www.google.com kiadásával is ellenőrizhetjük. Lehet a másik irányba befelé és traceroute-olni ezen az oldalon: [link] Sose tudja az ember a netmaskokat, én legalábbis mindig elfelejtem őket, így jól jön a puska: Netmask Netmask (binary) CIDR Notes Olvasnivalók: Linux Advanced Routing & Traffic Control HOWTO(lartc.org Egyetlen céges hálózat két ADSL kijárattal load balancing (ppp és eth) és tap0 <--> eth0 <--> internet forwarding |
2013.02.24. |