ip routing nerouting

Pavel Just pavel.just na simac.cz
Středa Září 23 18:24:45 CEST 2026


Jan Kasprzak píše v st 23. 09. 2026 v 18:01 +0200:
> Jan 'yanek' Bortl wrote:
> > Hezký den,
> > 
> > neporadím s dotazem, ale pomůžu možná snadnějším řešením:
> > 
> > ip rule add můžete udělat i na základě zdrojové IP adresy (v tomto případě
> > a.b.c.2 a x.y.z.2), a tím se úplně vyhnout nftables, conntrackům a markování
> > obecně.
> 
> Dokonce ip rule jde udělat i na základě zdrojového síťového rozhraní,
> takže to funguje i pro překrývající se rozsahy adres.
Myslel jste pravidla typu
ip rule add iif eth0 lookup 7 prio 70
ip rule add iif eth1 lookup 8 prio 80 
?
Pokud ano, tak to nefunguje. V main route table mám defaultroute
přes interface eth1. A pokud přijde TCP spojení přes eth0
(na adresu a.b.c.2), odpověď jde podle tabulky main. Jako by
v tu chvíli iif nebylo známé nebo podle main route table.

P.J.
> 
> -Y.
> 
> > Dne 23. 09. 26 v 17:03 Pavel Just napsal(a):
> > > Zdravím.
> > > 
> > > Mám hosta se dvěma rozhraními eth0 a eth1.
> > > Eth0 má adresu a.b.c.2/24, eth1 má x.y.z.2/24.
> > > 
> > > Potřebuji, aby komunikace, která přišla přes rozhraní eth0
> > > se do eth0 zase vrátila a obdobně pro eth1.
> > > Prostě jako dva nezávislí hosti.
> > > 
> > > Vyrobil jsem si dvě routovací tabulky, každá s defaultroute
> > > na bránu v příslušné síti. tedy něco typu
> > > route add default via a.b.c.1 dev eth0 table 7
> > > route add default via x.y.z.1 dev eth1 table 8
> > > 
> > > Pak jsem vytvořil pravidla
> > > ip rule add fwmark 7 table 7 prio 70
> > > ip rule add fwmark 8 table 8 prio 80
> > > 
> > > A k tomu nft ruleset
> > > table inet mangling {
> > > 	chain prerouting {
> > > 		type filter hook prerouting priority mangle; policy accept;
> > > 		iifname "eth0" ct mark set 0x7
> > > 		iifname "eth0" meta mark set 0x7
> > > 		iifname "eth1" ct mark set 0x8
> > > 		iifname "eth1" meta mark set 0x8
> > > 	}
> > > 	chain output {
> > > 		type filter hook output priority mangle; policy accept;
> > > 		ct mark 0x8 meta mark set 0x8
> > > 		ct mark 0x7 meta mark set 0x7
> > > 	}
> > > }
> > > 
> > > Routovací tabulky 70 a 80 se mi neuplatní. Vždy se uplatní až v mém případě tabulka
> > > main.
> > > Když si dám do "chain prerouting" a "chain output" počitadla, která spínají
> > > na ct mark = 7,8  nebo meta mark = 7,8, tak se inkrementují dle očekávání.
> > > Ale ip rule je nevidí. Jádro je verze 6.12.
> > > Co jsem prosím přehlédl ?
> > > 
> > > Pavel Just
> > > 
> > -- 
> > Jan 'yanek' Bortl
> > 
> > _______________________________________________
> > Linux mailing list
> > Linux na linux.cz
> > http://www.linux.cz/mailman/listinfo/linux


Další informace o konferenci Linux