Zdravim,
prosím o help ohledně iptables. Konkrétně mi jde o toto: mám router, jehož úkolem je směrovat http požadavky na externí proxy. Již jsem vyzkoušel spoustu pravidel, ale asi jsem zcela nepochopil jak to správně funguje. Poslední nefungující pokus byl:
čili, pokud chce paket s cílovým portem 80 opustit EXTIF zamaskuje se za externí IP routeru na portu 3128.
Na portu 3128 naslouchá externí proxy server, který je výchozí branou pro router. Mým cílem je, aby klienti pod mým routrem mohli do internetu, ale nemusel bych na nich extra nastavovat proxy. Musí se nastavit i pravidlo v opačném směru? Forward mám nastavený:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
S NATem v iptables jsem se nikdy moc neseznamoval, ale nedělá “SNAT” to, že jen přemaskuje odchozí IP? Jestli to dobře chápu, tak tam nejde o žádné přesměrování, ale o změnu “Source IP” v hlavičce paketu. Imho to, o co se snažíš by měl zastat DNAT.
Dík za reakci.
To jsem se právě nikde nedozvěděl. Pokud by to tak bylo, je tedy třeba nejprve forward portu a pak zamaskování?
Asi takhle:
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
tohle by asi platilo jen v případě transparentní proxy na stejném stroji, což já nemám…
případně
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j DNAT --to-destination $EXTIP:3128
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP
?
Nebo má být jako destination použita přímo IP proxy serveru?
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j DNAT --to-destination $PROXYIP:3128
???
Děkuji za odpovědi, myslím, že jsem to už všechno zkoušel, ale stejně mi to nefunguvalo. Třeba jsem někde udělal chybu, tak to zkusím ještě znova a dám vědět, jak jsem dopadl.