Dado que você deseja excluir o tráfego de algum NAT para seu proxy, uma regra para isso deve ser colocada antes dos outros. E eu não incluí-lo na sua cadeia definida pelo usuário intercept-nat
, já que a cadeia é logicamente destinada a fazer NAT, não para não fazê-lo.
Simplesmente:
iptables -t nat -A PREROUTING -d w.x.y.z -p tcp --dport 443 -j ACCEPT
em que w.x.y.z é o endereço do servidor websocket.
Além disso, eu modificaria suas regras atuais (embora eu esteja adivinhando algumas coisas aqui):
- Acho que você não precisa especificar os endereços IP de origem na seção de correspondência, já que provavelmente deseja redirecionar todo o tráfego de suas lan (s) internas. Assumirei que
eth0
é a lan externa e eth1
e eth2
os internos.
- Você provavelmente não precisa especificar o endereço IP de destino, economizando alguns ciclos de CPU. Presumo que o tráfego da web não seja direcionado para a máquina proxy, a menos que você tenha um servidor da web em execução nele.
- Se o proxy estiver sendo executado na mesma máquina que o firewall, você também poderá evitar especificar o IP de destino a ser usado no
DNAT
target usando REDIRECT
.
A eliminação da especificação de endereços IP melhora a manutenção, permite a reutilização e mantém as coisas mais simples. Todos juntos seriam:
-A PREROUTING -d w.x.y.z/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING ! -i eth0 -j intercept-nat
-A intercept-nat -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3126 -m comment --comment "intercept-nat"
-A intercept-nat -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127 -m comment --comment "intercept-nat"