iptables a externí proxy

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:

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -p tcp --dport 80 -j SNAT --to $EXTIP:3128

č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

Předem děkuji za rady.

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
    ???

Poslední možnost je imho správně.

Pokud si chces hrat s iptables, asi neni od veci se trochu porozhlednou po nejakem navodu jak to vlastne funguje.
Napr. na linuxexpresu: http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-linuxovy-firewall-zaklady-iptables-3 je tam i primo priklad na to co chces.

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.

Zdravim

Pokud jsem spravne pochopil o co se ti jedna, melo by ti stacit PREROUTING a FORWARD:

$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j DNAT --to-destination $PROXYIP:3128 
$IPTABLES -A FORWARD -d $PROXYIP -p tcp --dport 3128 -j ACCEPT

Pripadne i forward zpet:

$IPTABLES -A FORWARD -s $PROXYIP -p tcp --sport 3128 -j ACCEPT

Pokud ti to stale nevali, pridej si logovani a posli vystup (i s pripadnym popisem co ktera IP je) - mel bys ho najit ve /var/log/messages.

$IPTABLES -A FORWARD -j LOG

kuku.mp3

Presne tak je to spravne a je to i v odkazanem clanku. Takze bud je jine zadani, nebo delas neco spatne.