Sim, isso é chamado NAT Loopback
e exige que você SNAT seus pacotes gerados localmente para o seu IP externo. Isso fará com que seus pacotes retornem e passem pela cadeia de PREROUTING.
Eu gostaria de manipular automaticamente os pacotes na cadeia OUTPUT da tabela NAT (que são gerados localmente) como se viessem de fora (via PREROUTING).
É possível usar um "forward all to PREROUTING" como fallback / last rule na cadeia OUTPUT?
Por exemplo, dado o seguinte encaminhamento de NAT:
iptables -t nat -A PREROUTING -p TCP -d $EXT.IP.ADD.RESS \
--dport 80 -j DNAT --to-destination $INT.IP.ADD.RESS:80
Eu tenho que configurar uma regra de saída correspondente:
iptables -t nat -A OUTPUT -p TCP -d $EXT.IP.ADD.RESS \
--dport 80 -j DNAT --to-destination $INT.IP.ADD.RESS:80
Ao registrar esses pacotes (via iptables -t nat -A OUTPUT -p TCP -d $EXT.IP.ADD.RESS -j LOG
), eles se parecem com:
IN= OUT=lo SRC=$EXT.IP.ADD.RESS DST=$EXT.IP.ADD.RESS LEN=60 \
TOS=0x00 PREC=0x00 TTL=64 ID=22348 DF PROTO=TCP SPT=59425 \
DPT=25 WINDOW=32792 RES=0x00 SYN URGP=0
Eu tentei algo como o seguinte, mas não funcionou:
iptables -t nat -A OUTPUT -p TCP -d $EXT.IP.ADD.RESS -j DNAT \
--to $EXT.IP.ADD.RESS
Estou usando a macro / bloco a seguir agora para cada mapeamento de uma porta para uma máquina interna:
iptables -t nat -A PREROUTING -p TCP -d $EXT.IP.ADD.RESS --dport 25 \
-j DNAT --to-destination 10.122.1.25:25
iptables -t nat -A OUTPUT -p TCP -d $EXT.IP.ADD.RESS --dport 25 \
-j DNAT --to-destination 10.122.1.25:25
iptables -t nat -A POSTROUTING -p TCP -s 10.122.1.25 -d 10.122.1.25 --dport 25 \
-j SNAT --to 10.122.1.1
10.122.1.1 é o firewall e 10.122.1.25 o container (servidor de e-mail).
Acabei de adicionar a última regra ("POSTROUTING") recentemente, o que permite que o contêiner alcance a si mesmo.
O que você pretende realizar com a reinjeção de pacotes gerados localmente (não encaminhamento) para PREROUTING? Se você não gostar da redundância que tem lá, você pode criar uma nova cadeia definida pelo usuário, colocar a regra lá e chamar essa cadeia de PREROUTING e OUTPUT.