===== uvod ===== * Tento dokument je hodne stary, chtelo by ho to zrevidovat :) * openwrt ma primo balicek pro multipath routing!!! ==== "jen verejna IP adresa" - routovani na zaklade zdrojove adresy ==== mam router s 2 brany do internetu.. jedna brana ma vetsi bandwidth a druha poskytuje verejnou IP. Chci vyuzit verejnou IP, ale jinak vsechno hnat pres gw s velkym bandwidthem * vytvorim si novou routovaci tabulku s ID 10, tabulka obsahuje jen jednu default routu # ip route add default via 192.168.1.1 dev ath2 table 10 * vytvorim pravidlo, kdy pouzit novou routovaci tabulku * jde o to, ze traffic je presmerovavan na moji DMZ adresu (192.168.1.254), ale odpovedi chodi pres globalni default branu, ktera bezi pres druhou branu. Potrebuji udelat pravidlo, aby prichozim spojenim na moji DMZ adresu bylo odpovidano pres stejnou branu. * Staci vytvorit pravidlo, ktere pakety se zdrojovou adresou odpovidajici moji DMZ IP adrese posle do nove vytvorene tabulky # ip rule add table 10 from 192.168.1.254 # ip rule 0: from all lookup local 32764: from 192.168.1.254 lookup 10 32766: from all lookup main 32767: from all lookup default ---- Odkazy: * http://wiki.webstep.net/czfree/14 * http://www.abclinuxu.cz/poradna/linux/show/301505 mam router s 2 brany do internetu.. jedna brana ma vetsi bandwidth a druha poskytuje verejnou IP. Chci vyuzit verejnou IP, ale jinak vsechno hnat pres gw s velkym bandwidthem tabulka main bude obsahovat normalni routy tabulka 100 bude obsahovat jinou default route # ip route 192.168.1.1 dev ath2 10.10.11.0/25 dev br-lan src 10.10.11.1 192.168.1.0/24 dev ath0 src 192.168.1.47 10.10.15.0/24 dev edge0 src 10.10.15.1 default via 192.168.1.2 dev ath0 # ip route add default via 192.168.1.1 dev ath2 src 192.168.1.254 table 10 # ip route add default via 192.168.1.2 dev ath0 src 192.168.1.47 table 20 # ip rule add table 10 from 192.168.1.254 # ip rule add table 20 from 192.168.1.47 # ip rule 0: from all lookup local 32763: from 192.168.1.47 lookup 20 32764: from 192.168.1.254 lookup 10 32766: from all lookup main 32767: from all lookup default # ip route show table 10 default via 192.168.1.1 dev ath2 src 192.168.1.254 # ip route show table 20 default via 192.168.1.2 dev ath0 src 192.168.1.47 zkracene (plne postacuje): ip route add default via 192.168.1.1 dev ath2 table 10 ip rule add table 10 from 192.168.1.254 ==== (1) Pouzit multipath routing bez equalize: ==== ip route add default scope global \ nexthop via xx.xx.xx.xx nexthop via yy.yy.yy.yy Tohle by predpokladalo, ze mate dve GW -- a pri kazdem novem lookupu aplikace dostava stridave prvni a druhou GW: for i in 1 2 3 ; do ip route get 91.91.91.$i ; done 91.91.91.1 via A dev eth0 src ... cache mtu 1500 advmss 1460 91.91.91.2 via B dev eth0 src ... cache mtu 1500 advmss 1460 91.91.91.3 via A dev eth0 src ... cache mtu 1500 advmss 1460 Muzete mit samozrejme dve rozhrani a udelat: ip route add default scope global \ nexthop dev eth0 \ nexthop dev eth1 A pak to vzdy pujde z te adresy, kterou ma to rozhrani. Funguje to jen tak, ze kdyz otevrete novy stream, dostanete stridave prvni a druhou GW. Ne, ze pulka paketu pujde tam a druha jinudy. ==== (2) Totez s equalize (nutno zapnout v kernelu): ==== ip route add default equalize ... ip route add default equalize \ nexthop via XXX.XXX.253.1 dev eth1 \ nexthop via XXX.XXX.253.1 dev eth0 To by melo rozhazovat kazdy packet, lec to tady v jadre nemam, takze to nezkusim. Jak to udelat s src a jednou sitovkou nevim, bud to zatim nejde, nebo se mi nedari spravne formulovat prikaz pro iproute. ip route add default equalize \ nexthop via 192.168.1.2 dev ath0 \ nexthop via 10.10.11.1 dev br-lan root@OpenWrt:~# ip route show 10.10.11.0/25 dev br-lan proto kernel scope link src 10.10.11.3 192.168.1.0/24 dev ath0 proto kernel scope link src 192.168.1.27 default equalize nexthop via 192.168.1.2 dev ath0 weight 1 nexthop via 10.10.11.1 dev br-lan weight 1 root@OpenWrt:~# for i in 1 2 3 ; do ip route get 91.91.91.$i ; done 91.91.91.1 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.2 via 192.168.1.2 dev ath0 src 192.168.1.27 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.3 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 ip route add default equalize \ nexthop via 192.168.1.2 dev ath0 weight 1 \ nexthop via 10.10.11.1 dev br-lan weight 2 ip route add default scope global \ nexthop via 192.168.1.2 dev ath0 \ nexthop via 10.10.11.1 dev br-lan ip route add default equalize \ nexthop via 10.10.11.1 \ nexthop via 10.10.11.3 ==== rozdil mezi qeui a global scope ==== nevim rozdil mezi equi.. a global scope... chova se to cudne :) optimalizace # Enable fast failover of broken gateways links (this isn't a real failover) echo "10" > /proc/sys/net/ipv4/route/gc_timeout nezpozoroval jsem zmenu :( zjistil jsem, ze linka pres gate je asi 2x rychlejsi nez gate2.. proto zkusim ip route add default equalize \ nexthop via 192.168.1.2 dev ath0 weight 1 \ nexthop via 10.10.11.1 dev br-lan weight 2 root@OpenWrt:~# for i in `seq 1 10` ; do ip route get 91.91.91.$i ; done 91.91.91.1 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.2 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.3 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.4 via 192.168.1.2 dev ath0 src 192.168.1.27 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.5 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.6 via 192.168.1.2 dev ath0 src 192.168.1.27 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.7 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.8 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.9 via 10.10.11.1 dev br-lan src 10.10.11.3 cache mtu 1500 advmss 1460 hoplimit 64 91.91.91.10 via 192.168.1.2 dev ath0 src 192.168.1.27 cache mtu 1500 advmss 1460 hoplimit 64 odpojil jsem antenu z gate.. spadl net... odpojil jsem druhou.l. jelo to.. takze se to routuje jen jednou cestou? :( odpovida to tomu, co psal tracert :( .. hint.... kmod-bonding !!!!!! spojeni interface do jednoho bondig je asi jen proste jedna ip vice rozhrani jedna mac.. napr dve sitovky do switche... dela se virtualni rozhrani na rozdeleni zateze. to by na mono bylo asi idealni. to by stacilo, jenomze bonding chce kernel modul a a v balickach je novy kernel :) lol :) nevim jak predelat na novy kernel :) nebo nevim jak stahnout stare balicky :) vyzkouset na pharaonu udelat mrourouting :) udelat ten test s GET nejdriv na jednu ip a pak na vice :) mel by se tam ukazat rozdil mezi global a eq :) vubec to nejde :) asi mi chybi nejaky kernel modul :) proc z gate2 se chodi na net vyhradne pres ath0 a proc z eth0 se chodi vyhradne pres br-lan? ==== zaver ==== * klicova slova load balancing, multihoming * nexthopy.. nejak nejdou, jeste prostovat na gate2 rozdil mezi global a eq (viz vyse) * odkazy: * http://lartc.org/howto/lartc.rpdb.multiple-links.html * http://mailman.ds9a.nl/pipermail/lartc/2005q4/017482.html - dole neco o natu * prikompilovat si m-route pro pharaona na testy .. chci vedet na co to teda je :) polozka network options - equal cost multipath - * videl jsem hodne skriptu, ktere rezdelovali na zaklade marks :) * flashnout nebo vykoumat jak zavest modul pro bounding :) * proc je masakarada dycky jen na gate? no protoze sice jsou 2 gw, ale default je prave gate.. maskarade preklada podle default gate..? :) ==== HomeGuard x Gate2: - smerovani 2 brany ==== * nakonfigurovat radio na normal branu, nastavit i na eth0 maskaradu iptables -t mangle -N NEW_OUT_CONN iptables -t mangle -A PREROUTING -i br-lan -m state --state NEW -j NEW_OUT_CONN iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 0 iptables -t mangle -A NEW_OUT_CONN -m statistic --mode nth --every 2 --packet 0 -j RETURN iptables -t mangle -A NEW_OUT_CONN -j CONNMARK --set-mark 2 ip route add default via 10.10.11.1 table 1 ip route add default via 192.168.1.2 table 2 ip route show table 1 ip rule add fwmark 2 table 1 ip rule add fwmark 0 table 2 - na tohle to reaguje :) * http://www.linuxquestions.org/questions/linux-networking-3/iptablesmarking-ip-rule-add-fwmark-1-table-200-ip-route-add-via-gw-table-200-500369/ ip route show cache * ze by kvuli natu? - bral by to jak lokalni traffic z output? :) * zjednodusit!!! - proste vsem paketum jeden mark a ten pak zkusit sledovat iptables -t mangle -A PREROUTING -j CONNMARK --set-mark 0 iptables -t mangle -A PREROUTING -m statistic --mode nth --every 2 --packet 0 -j RETURN iptables -t mangle -A PREROUTING -j CONNMARK --set-mark 2