Smerovani bez default route - odpovidat na stejne rozhrani ze ktereho prisel dotaz

Martin `MJ' Mares mj na ucw.cz
Sobota Červenec 29 15:56:51 CEST 2006


Zdravím!

> Jak se dá podobného chování dosáhnout na linuxu ?
> Pokud nenastaví default routu, nechodí mu to vůbec. Pokud nastaví 
> default routu na A (resp. B), chodí provoz, který vyvolaly požadavky 
> přicházející přes A (resp. B), ale nevyřizují se požadavky došlé přes 
> druhý router.

To je docela hezký příklad na použití routingu podle zdrojové adresy.
Nechť Vaše sítová rozhraní mají adresy 1.0.0.2/24 (router 1.0.0.1)
a 2.0.0.2/24 (router 2.0.0.1).

Z routovací tabulky `main' (to je ta defaultní, s číslem 254, viz
/etc/iproute2/rt_tables) odstraňte default routu a všechny ostatní
routy tam ponechte, zejména ty automaticky založené interfacové.

Pak si založte tři nové tabulky, řekněme 101, 102 a 199. První dvě
budou popisovat routování do jednotlivých rozhraní pro již navázaná
spojení, třetí default routu pro ještě nenavázaná:

	ip route add table 101 default via 1.0.0.1
	ip route add table 102 default via 2.0.0.1
	ip route add table 199 default via 1.0.0.1	# zde si vyberte

Pak nadefinujte pravidla, která nejdříve projdou tabulku `main', pokud
se v ní routa nenajde, tak rozhodnou podle zdrojové adresy packetu
(u sestavených spojení je známa), a jako poslední použijí tabulku 199:

	ip rule del pref 32766	# odstraní původní pravidlo pro main
	ip rule add pref 10000 lookup main
	ip rule add pref 10001 from 1.0.0.2 lookup 101
	ip rule add pref 10002 from 2.0.0.2 lookup 102
	ip rule add pref 10099 lookup 199

To je vše.

Výběr defaultní routy v tabulce 199 samozřejmě může probíhat podle
složitějších pravidel, případně můžete zkusit použít i multipath přes
oba providery, který Vám takto bude fungovat na úrovni jednotlivých
spojení (což je stejně jediná fungující možnost, pokud jsou cesty
příliš různé).

Jediné, co neumím rozumně zařídit, je rozhodovat u odchozích spojení
o routování podle čísla portu -- tedy pominu-li obzvláště ošklivý hack
používající target ROUTE v iptables.

				Přeji pěkný den
-- 
Martin `MJ' Mares   <mj na ucw.cz>   http://atrey.karlin.mff.cuni.cz/~mj/
Faculty of Math and Physics, Charles University, Prague, Czech Rep., Earth
Don't take life too seriously -- you'll never get out of it alive.


Další informace o konferenci Linux