Как сделать переадресацию портов с двумя интерфейсами с помощью iptables?

Как сделать переадресацию портов с двумя интерфейсами с помощью iptables?

У меня есть Debian Box с двумя интерфейсами wan и lan(192.168.0.1). На lan:80 у меня есть сайт, к которому нужно получить доступ из локальной сети. Также мне нужно, чтобы к этому сайту можно было получить доступ из wan:777. Вот мои правила 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

Однако это не работает. Работает только если я уберу -i $LANfron INPUT. Я имею в виду так:

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

Однако это плохой способ, потому что сайт теперь также на wan:80, а это не то, что мне нужно. В чем моя ошибка?

решение1

Я получил ответ наРусский Linux-форум:

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

Связанный контент