PREROUTING distingue entre pacotes INPUT e FORWARD

5

Gostaria de fazer uma regra iptables REDIRECT na cadeia NAT PREROUTING , para redirecionar as conexões para a porta 80 para ir para 8080. Mas eu gostaria de fazer isso apenas para pacotes de entrada (destinados a isso máquina), pacotes não encaminhados (destinados, por exemplo, à Internet).

Existe uma maneira, nas regras da cadeia PREROUTING , de distinguir pacotes que são destinados a esta máquina, versus pacotes que estão sendo encaminhados, e lidar com eles diferentemente?

Seria ideal fazer isso de uma forma que não exija que interfaces específicas ou endereços IP sejam enumerados nas regras, porque isso é menos flexível (por exemplo, se as interfaces ou os endereços IP mudarem, é mais complicado precisar para atualizar as regras do iptables).

    
por Craig McQueen 04.09.2015 / 07:12

2 respostas

1

Acabei de encontrar o % móduloaddrtype , que parece ser capaz de diferenciar pacotes de entrada, dependendo se o endereço de destino é um endereço local ou não. Então, isso pode ser usado para distinguir entre pacotes de entrada e de encaminhamento.

Por exemplo algo como:

iptables -A PREROUTING -t nat -p tcp --dport 80 -m addrtype --dst-type LOCAL -j REDIRECT --to-port 8080
    
por 23.01.2017 / 07:39
3

Acho que você está fadado a ter que listar manualmente todos os seus endereços IP "locais". Com base na minha leitura do diagrama de fluxo de pacotes do netfilter , não há diferenciação de entrada / encaminhamento de pacotes até após todas as cadeias PREROUTING - o que faz sentido, porque a cadeia é, afinal, chamada PRE ROUTING ...

    
por 04.09.2015 / 07:27

Tags