Como fazer encaminhamento de porta com duas interfaces usando iptables?

Como fazer encaminhamento de porta com duas interfaces usando iptables?

Eu tenho uma caixa Debian com duas interfaces wan e lan (192.168.0.1). Em lan:80 tenho um site que deve ser acessado pela rede local. Também preciso que este site seja acessado de wan:777. Estas são as minhas regras do iptables:

iptables -A INPUT -i $LAN -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

No entanto, isso não funciona. Funciona apenas se eu remover -i $LANo INPUT. Quero dizer desta forma:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A FORWARD -p tcp -d 192.168.0.1 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Porém, é um mau caminho, porque o site agora também está em wan:80 e não é isso que eu quero. Qual é o meu erro?

Responder1

Eu recebi uma resposta emFórum Linux Russo:

iptables -t mangle -A PREROUTING -i $WAN -p tcp --dport 777 -j MARK --set-mark 0x1234
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 777 -j DNAT --to-destination 192.168.0.1:80
iptables -A INPUT -m mark --mark 0x1234 -j ACCEPT

informação relacionada