Portál AbcLinuxu, 26. dubna 2024 05:15


Dotaz: opet ip a dva ISP, ted trochu jinak

2.6.2006 13:27 kafi | skóre: 25 | blog: muj_prvni_blog
opet ip a dva ISP, ted trochu jinak
Přečteno: 358×
Odpovědět | Admin
Preji hezky den, dnes jsem rozjel na serveru iproute pro dva ISP. Vsechno jede jak ma. Problem ale vznikl kdyz jsem chtel poslat ping na sit ktera neni ve stejne routovaci tabulce. Muj script pomoci ktereho nahazuju routy:
#!/bin/bash
for int in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "0" > $int;
done
for i in /proc/sys/net/ipv4/conf/*; do
    echo "1" > $i/accept_redirects 2> /dev/null
    echo "1" > $i/accept_source_route 2> /dev/null
done

table_1="route1"
table_2="route2"

ext_net_1="100.100.100.10/29"
ext_if_1="eth1"
ext_ip_1="100.100.100.12"
ext_gw_1="100.100.100.11"

ext_net_2="200.200.200.20/30"
ext_if_2="eth2"
ext_ip_2="200.200.200.22"
ext_gw_2="200.200.200.21"

cmd_ip="/sbin/ip"
cmd_IPT="/usr/sbin/iptables"
jm_chain="rozdel_routy"


$cmd_IPT -D PREROUTING -t mangle -j $jm_chain 2>/dev/null;
$cmd_IPT -A PREROUTING -t mangle -j $jm_chain;

$cmd_IPT -N $jm_chain -t mangle 2>/dev/null;
$cmd_IPT -F $jm_chain -t mangle;

$cmd_IPT -A $jm_chain -t mangle -s 10.10.1.0/24 -j MARK --set-mark 10;
$cmd_IPT -A $jm_chain -t mangle -s 10.10.2.0/24 -j MARK --set-mark 10;

$cmd_IPT -A $jm_chain -t mangle -s 10.10.3.0/24 -j MARK --set-mark 20;
$cmd_IPT -A $jm_chain -t mangle -s 10.10.4.0/24 -j MARK --set-mark 20;

$cmd_ip route flush table $table_1 2>/dev/null;
$cmd_ip route flush table $table_2 2>/dev/null;
$cmd_ip route flush cache;

$cmd_ip rule del table $table_1 2>/dev/null;
$cmd_ip rule del table $table_2 2>/dev/null;

$cmd_ip route add $ext_net_1 dev $ext_if_1 src $ext_ip_1 table $table_1;
$cmd_ip route add default via $ext_gw_1 table $table_1;

$cmd_ip route add $ext_net_2 dev $ext_if_2 src $ext_ip_2 table $table_2;
$cmd_ip route add default via $ext_gw_2 table $table_2;

$cmd_ip rule add fwmark 20 table $table_1 prio 100;
$cmd_ip rule add fwmark 10 table $table_2 prio 101;
Takze kdyz chci pingnout ze sveho PC s IP 10.10.1.4 na jine s IP 10.10.3.x tak to nedojde. Podle mne je to v tom ze prichozi muj paket se omarkuje na hodnotu 10 vleze do routovaci tabulky pro nej urcene a tam se hned posle ven. Jak teda zarucit aby se koukl prvni na local jestli tam nic neni?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.6.2006 14:12 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zdravim, tak jsem tady prolezl forum a nic jsem nenasel. Nenapada mne co bych mnel dal vyhledavat v googlu. Nenapda vas opravdu nekoho cim by to mohlo byt? Na tom serveru nedelam ani preklad site jsou jen routovane.
3.6.2006 14:54 Libor Klepac | skóre: 45 | Mýto
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
vubec jsi nerekl, "kterym smerem" (pres jakou sitovku) lezi ta ip, co zkousis pingnout .... jestli je nekde "vevnitr" ...tzn. asi pres eth0

potom by znela otazka, jestli na ni mas nastavenou routu tak, aby to slo pres eth0

ale to jsem si cele vymyslel ;)
Urine should only be green if you're Mr. Spock.
3.6.2006 17:14 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Pravda to jsem opomnel a omlouvam se. Jedna se o IP ve vnitrni siti na eth0.A jak jem psal nemuzu ji pingnout. Smer je to stale "vevnitr" na lokale. Na jednom rozhrani (eth0) je vice siti. A moje PC je v jine nez IP, kterou chci pingnout. Ta druha IP se routuje pres jineho ISP nez me PC.
3.6.2006 17:15 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Jeste jsem zapomnel. Pokud by na tu sit mnel nastavit routu v tabulce tak jak to provedu?
3.6.2006 18:50 Libor Klepac | skóre: 45 | Mýto
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
no neviim, jaka tam je maska, ani jaka je brana, tak to zase odhadnu
ip route add 10.10.3.0/24 via 10.10.1.1
samozrejme to chce dotvorit podle skutecne topologie site ... jinak viz. tento blog
Urine should only be green if you're Mr. Spock.
5.6.2006 10:07 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Preji krasne podzimni rano :-). Tak podle vasi rady jsem zkusil tedy pridat do routovaci tabulky routu. A vysledek je nasledujici: do MAIN to nejde protoze tam uz existuje. A tak jsem pridal do tabulky route1 a pote do route2 a nic nepomohlo. Pri traceroutu zustane stat na serveru a dal nevi co s tim. Nemate jeste prosim vas nejaky jiny napad?
5.6.2006 14:43 secido | skóre: 27
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Kedysi som tiez skusal podobne zverstva, vsetky tabulky musia byt identicke az na default routy.
5.6.2006 15:36 Michal Buchtík | skóre: 13 | Boršice
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Ja mam neco podobneho, akorat tech routeru je vic a kazda brana je za jinym routerem.

V tabulce main mame vsechny lokalni routy a zadnou default routu.
ip r d default table main
Pak vytvorene dve tabulky (gw1, gw2) ve kterych jsou pouze default routy, kazda k jinemu ISP.
ip r a default via gw.isp1.cz table gw1
ip r a default via gw.isp2.cz table gw2
No a vysledne pravidla by byly zhruba tak:
0:      from all lookup local
50:     from all lookup main
100:    fwmark 20 lookup gw1
101:    fwmark 10 lookup gw2
5.6.2006 21:08 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
A jde vam si pingnout mezi jednotlivimi segmenty site? MOje pravidla vypadaji uplne stejne. Jak ovsem vypliva ze scriptu ktery jsem napsal jako puvodni dotaz.
6.6.2006 10:41 Michal Buchtík | skóre: 13 | Boršice
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Ovsem ze jde, dulezite je rule 50:

musi byt pred pravidly 100 a 101 - tohle v tom vasem skriptu nikde nemuzu najit

Dal nevim jak mate ty podsite zapojene (predpokladam ze na routeru pres eth0) - jsou primo na tomto rozhrani nebo jsou az za dalsimi routery?
6.6.2006 18:45 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Dobry den, tak koukam koukam, na to co jste napsal a skusim premyslet "nahlas". Kdyz paket prijde z nejake site omarkuje se na hodnotu dejme tomu 20. Ted vleze do routovacich tabulek. Podle prioryty jde, u vas, do main a tam zjisti ze cil je nekde jinde tak vleze do dalsi, protoze nenajde default routu, a tam zjisti ze to je spravne.V pripade ze paket je na lokale tak se hned pres main routuje. A proc mne to nenapdalo!!!!???? Sice ted nejsem na siti kde to bezi, ale zitra to testnu a myslim ze ste mne prave nakopl spravnym smerem. Zitra dam vedet jak jsem dopadl. Kazdopadne zatim moc dekuji.
6.6.2006 18:49 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
jeste abych dodal tak moje priorita tabnulky main je defaultni nejakych 32000.A proto si myslim ze to bude ten problem.
7.6.2006 09:23 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takze panove, dnes se mi konecne podarilo rozjet vse k me naproste spokojenost. Vse jede jak ma. trafik se rozdeluje do ethernetu podle markovani. Parada. A vse bylo zavisle na te prioryte tabulky main. Jen jedna zvlastnost se objevila a to ze po smazani defaultni routy tabulky main prestalo vse fungovat. kdyz jsem ji dal spatky tak vse jede jak ma. Ping na lkalni siti jede bez problemu. Pri pokusu jit na internet jde paket tam kam ma. Testoval jsem to tcpdumpem. Tim bych chtel vsem dobrym dusim, ktere mi tady pomohli podekovat. Preji vsem pekny den.
7.6.2006 09:30 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Pardon tak teda s tou defaultni routou je to tak jak jste rikal. Smazat. A ted vse ok. :-)))
7.6.2006 12:34 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Tak moje radost byla predcasna. diky zmeneni prioryty a vyhozeni defaultni routy v main sice vse jede jak ma ale z daneho stroje se nikam nedostanu. Coz je vcelku problem. Stejna vec se resila v teto diskusi. Otazka tedy zni.Copak to nejde udelat tak aby slo uplne vsechno?
7.6.2006 20:07 Michal Buchtík | skóre: 13 | Boršice
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
jde :)

jsou 2 moznosti:

1) markovat take pravidla z toho routeru

2) dat default routu do tabulky default, ktera je standardne s posledni prioritou

Jinak celkove myslim, ze je zbytecne markovat vsechny spojeni. Spis bych markoval jen stroje, ktere chci poslat pres ISP2 a ISP1 bych nechal jako hlavniho. Router bude mit min prace a udrzba taky bude jednodussi.
ip r a default via gw.isp1.cz table default
ip r a default via gw.isp2.cz table gw2
ip r d default table main

ip ru a pref 50 table main
ip ru a pref 101 fwmark 10 table gw2
ip ru d pref 32766

-----------------------
0:      from all lookup local
50:     from all lookup main
101:    fwmark 10 lookup gw2
32767:  from all lookup default
8.6.2006 19:54 kafi | skóre: 25 | blog: muj_prvni_blog
Rozbalit Rozbalit vše Re: opet ip a dva ISP, ted trochu jinak
Krasny podvecer, tak po celodenim testovani je vse ok a jede jak ma. Tim bych chtel podekovat vsem zucastnenym za pomoc. A predevsim panu. Michalu Buchtikovi za skvelou spolupraci a pomoc pri reseni meho problemu. Preracoval jsem ten script do dost mala podoby.
#!/bin/bash

for int in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo "0" > $int;
done

for i in /proc/sys/net/ipv4/conf/*; do
    echo "1" > $i/accept_redirects 2> /dev/null
    echo "1" > $i/accept_source_route 2> /dev/null
done

table_1="route1"

ext_net_1="200.200.200.20/30"
ext_if_1="eth2"
ext_ip_1="200.200.200.22"
ext_gw_1="200.200.200.21"

ext_gw_2="100.100.100.11"

cmd_ip="/sbin/ip"
cmd_IPT="/usr/sbin/iptables"
jm_chain="rozdel_routy"


$cmd_IPT -D PREROUTING -t mangle -j $jm_chain 2>/dev/null;
$cmd_IPT -A PREROUTING -t mangle -j $jm_chain;

$cmd_IPT -N $jm_chain -t mangle 2>/dev/null;
$cmd_IPT -F $jm_chain -t mangle;

$cmd_IPT -A $jm_chain -t mangle -s 10.10.1.0/24 -j MARK --set-mark 10;
$cmd_IPT -A $jm_chain -t mangle -s 10.10.2.0/24 -j MARK --set-mark 10;

echo "Smaz tabulky + cache";
$cmd_ip route flush table $table_1 2>/dev/null;
$cmd_ip route flush cache;

echo "Smaz zapisi v rule";
$cmd_ip rule del table $table_1 2>/dev/null;
$cmd_ip rule del table main 2>/dev/null;
$cmd_ip route del default table main;

echo "Menim priorytu mainu"
$cmd_ip rule add table main prio 50;

echo "Nahod routovani do tabulek";
$cmd_ip route add default via $ext_gw_2 table default;
$cmd_ip route add default via $ext_gw_1 table $table_1;

echo "nahod rule pro mark pakety";
$cmd_ip rule add fwmark 10 table $table_1 prio 100;
Tady je cely script. Kdyby snad nekdo narazil na tuto diskusi se stajnym problemem jako ja tak at to ma jednodussi.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.