Como deixar pacotes gerados localmente passarem pela cadeia PREROUTING?

0

Eu gostaria de deixar pacotes gerados localmente passarem pela cadeia de PREROUTING porque quero usar

sudo iptables -t mangle -A PREROUTING -p tcp -d somewebsite.com -j TPROXY --on-port 32794

para redirecionar todos os pacotes (gerados por um processo local) rumo a somewesite.com para a porta local 32794.

Muitas pessoas sugeriram isso:

sudo iptables -t nat -A OUTPUT -p tcp -d somewebsite.com -j REDIRECT --to-ports 32794

mas o REDIRECT modificará o cabeçalho do pacote que estou tentando evitar. Eu tenho que usar TPROXY, é o único tipo de alvo que não modifica cabeçalhos de pacotes.

Então, o que devo fazer para deixar pacotes gerados localmente passarem pela cadeia PREROUTING? Talvez usando loopback? Mas não tenho certeza se o loopback altera os cabeçalhos dos pacotes ...

    
por yi-ji 17.09.2018 / 06:14

1 resposta

0

iptables é um conjunto de regras (ou conjunto de regras), que pode ser encontrado dentro de cadeias. Correntes estão dentro das mesas.

No seu caso, você usou o REDIRECT target, mas isso realmente modifica os pacotes para alterar o endereço de destino, o que pode não ser aceitável, e está vinculado à tabela nat na maioria dos casos.

A meta TPROXY fornece funcionalidade semelhante e depende da tabela mangle . Basta adicionar regras como esta ao conjunto de regras iptables:

iptables -t mangle -A PREROUTING -p tcp -d your.ip.address.here --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 32794 --on-ip=127.0.0.1

Nota: Eu também usei a marca, mas isso não deve alterar o cabeçalho TCP.

    
por 17.09.2018 / 13:30