Seu problema é que eu entendi mal o que o RETURN
faz. O link pode ajudar.
Atualmente, sua cadeia PROXY funciona da seguinte maneira:
- o tráfego entra na cadeia
PREROUTING
, onde você tem (como uma primeira cláusula?)iptables -t nat -I PREROUTING -p tcp -j PROXY
. - isso diz ao iptables para avaliar seu tráfego em relação à
PROXY
chain - a cadeia
PROXY
diz uma das duas coisas: basicamente, há uma regra com uma açãoRETURN
para o tráfego ou não, eiptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports 1080
se aplica. - se seu tráfego corresponder a uma entrada
RETURN
, o iptables retornará à correntePREROUTING
e avaliará a próxima regra. Parece que não há 'próxima regra' para fazer o que você quer.
O problema é este: iptables -t nat -A PROXY -d 10.0.0.15 -j REDIRECT --to-ports 1088
Você coloca isso na cadeia PROXY
, mas todo o tráfego para o qual você deseja que esse redirecionamento seja aplicado está realmente configurado para RETURN
(ou seja, sair) da sua corrente PROXY
.
O que você precisa no lugar da linha acima é:
iptables -t nat -A PREROUTING -d 10.0.0.15 -j REDIRECT --to-ports 1088
A chave é a cadeia na qual a regra é. Com essa regra em PREROUTING, as regras de RETURN
funcionarão conforme o esperado, forçando o tráfego de correspondência do 'padrão' PROXY
rule iptables -t nat -A PROXY -p tcp -j REDIRECT --to-ports 1080
e de volta para PREROUTING
, onde iptables -t nat -A PREROUTING -d 10.0.0.15 -j REDIRECT --to-ports 1088
pode ser aplicado.