Eu gostaria de fazer uma REDIRECT
regra de iptables na PREROUTING
cadeia NAT, para redirecionar conexões para a porta 80 para ir para 8080. Mas eu gostaria de fazer isso apenas para pacotes de entrada (destinados a esta máquina), não pacotes encaminhados (destinados a por exemplo, a Internet).
Existe uma maneira, nas regras da PREROUTING
cadeia, de distinguir os pacotes destinados a esta máquina dos pacotes que estão sendo encaminhados e tratá-los de maneira diferente?
O ideal seria fazer isso de uma forma que não exigisse que interfaces ou endereços IP específicos fossem enumerados nas regras, porque isso é menos flexível (por exemplo, se as interfaces ou os endereços IP mudarem, é mais complicado precisar atualizar o iptables as regras).
Acho que você está condenado a listar manualmente todos os seus endereços IP "locais". Com base na minha leitura deste diagrama de fluxo de pacotes do netfilter , não há diferenciação de pacotes de entrada/encaminhamento até depois de todas as cadeias PREROUTING - o que faz sentido, porque a cadeia é, afinal, chamada PRE ROUTING ...
Acabei de encontrar o
addrtype
módulo , que parece ser capaz de diferenciar os pacotes recebidos, dependendo se o endereço de destino é um endereço local ou não. Portanto, isso pode ser usado para distinguir entre pacotes de entrada e de encaminhamento.Ex.: algo como: