У меня есть 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 $LAN
fron 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