iptables FORWARD 80到8080,在8080上没有直接访问

iptables -A INPUT -p tcp -m multiport --dports 80,443,8080,8181 -m state --state NEW -m limit --limit 50/minute --limit-burst 200 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports 80,443,8080,8181 -m state --state ESTABLISHED,RELATED -m limit --limit 50/second --limit-burst 50 -j ACCEPT iptables -A PREROUTING -t nat -p tcp --dport 80 -j DNAT --to-destination :8080 iptables -A PREROUTING -t nat -p tcp --dport 443 -j DNAT --to-destination :8181 iptables -A FORWARD -p tcp -m multiport --dports 8080,8181 -j ACCEPT 

我试图redirect到8080和443到8181的stream量。这是通过使用前面的行成功。 现在我试图限制访问8080和8181直接,但我不知道如何。

我知道有关于这个问题的一些问题,但我还没有find任何解决办法。 尽pipe在这个问题上接受的答案,我知道这应该是可能的,只需使用iptables。

任何帮助,将不胜感激。

数据包通过netfilter链像这样:PREROUTING-> Routing Decision-> INPUT如果他们的目标地址是您的机器。 在PREROUTING链中应用的DNAT改变数据包的目的地,但不会使它们双向移动。 所以他们到达input链8080或8181,没有去80和443。

UPD:我终于明白你在做什么了。 试试这个规则
iptables -A INPUT -p tcp -m multiport --dports 8080,8181 -m conntrack ! --ctstate DNAT -j DROP

只是基于界面来限制它。

iptables -A INPUT -p tcp -i eth0 –dport 8080 -j DROP

你有没有尝试这个规则? 我认为突破限制不会阻止交易,因为最后一行会接受。

如果您的默认政策是放弃您不能限制acces甚至更多。 您只能允许一些stream量,例如您的规则。