Portál AbcLinuxu, 12. května 2025 06:23
Pro upresneni:
Potrebuji nektere pakety routovat jinudy nez zbyle. Muj napad tedy byl:
iptables -t mangle -A OUTPUT [popis-paketu] -j ROUTE --gw jinam
Jenze navic potrebuji zaridit, aby zdrojova adresa paketu byla ta patrici onomu sitovemu rozhrani kde sidli jinam
. Defaultne se ovsem pouzije adresa patrici druhemu sitovemu rozhrani, kam se routuje vsechno ostatni...
nat
v POSTROUTING
pomoci -j SNAT
nebo -j MASQUERADE
vice v manu
--gw
použít i --oif
?
OUTPUT
v tabulce MANGLE
, už je o směrování rozhodnuto.
mangle.OUTPUT
, a pakety jsou sice směrovány správně (tj. označkované jdou jinudy než neoznačkované), ale všem zůstává původní zdrojová adresa (jako by označkované nebyly). Použití SNAT
sice problém zdrojové adresy řeší, ale moc uspokojivé řešení to není, lepší by byl Fast NAT, kdyby fungoval. Také by bylo dobré zjistit, co všechno ze zvolené položky směrovací tabulky se ještě při tom "druhém průchodu" ignoruje.
src
té položky, a to i když jsem ho zadal explicitně při jejím přidávání pomocí 'ip route add
'. Paket sice odešel přes druhou gateway, ale se zdrojovou adresou odpovídající té původní. To se u průchozích paketů, značkovaných v mangle.PREROUTING
, neděje.
src primo nemeni zdrojovou ip adresu. Pouze upravuje chovani routingu tak, jako by zdrojova adresa byla src. (Coz je uzitecne prave pro lokalne generovane pakety, ktere nemaji zadnou zdrojovou adresu).
S takovým výkladem nemohu souhlasit, podle dokumentace (i podle mých zkušeností) parametr src
určuje preferovanou zdrojovou adresu, tedy zdrojovou adresu, která se přiřadí, není-li zdrojová adresa předem určena jinak (např. u forwardovaných paketů, paketů patřících do existujícího flow nebo paketů, kde si o konkrétní zdrojovou adresu řekla aplikace). Tento parametr nemůže ovlivnit chování routingu, protože se k němu dostaneme teprve v okamžiku, kdy už routing vybral optimální směrovací položku (takže už není co ovlivňovat).
Delat NAT jsem take zkousel, nicmene to nechtel a nechtel natovat. Predpokladam proto, ze se vzdy aplikovalo pouze jedno pravidlo z iptables...
BTW, nevite nekdo tu banalni vec (ktera je asi tak banalni, ze jsem ji nikde nenasel), jak se aplikuji v iptables pravidla? Je mi jasne, ze vyhovuje-li nejake pravidlo nejakeho chainu, dalsi pravidla uz se v nem netestuji. Co ale jine chainy? A jine tabulky?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.