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

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

我正在尝试将 80 上的流量重定向到 8080,将 443 上的流量重定向到 8181。使用前面几行成功了。现在我试图直接限制对 8080 和 8181 的访问,但我不确定如何操作。

我知道有一些问题关于这个问题,虽然我还没有找到任何解决方案。尽管这个问题的答案是可以接受的,但我知道只需使用 iptables 就可以做到这一点。

任何帮助,将不胜感激。

答案1

如果数据包的目标地址是您的机器,则数据包将按照以下方式通过 netfilter 链:PREROUTING->Routing Decision->INPUT。应用于 PREROUTING 链的 DNAT 会更改数据包的目标,但不会使数据包双向通过。因此,它们会通过 dport 8080 或 8181 到达 INPUT 链,而不会到达 80 和 443。

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

答案2

只是根据接口进行限制。

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

答案3

您尝试过这个规则吗?我认为突发限制不会阻止流量,因为最后一行会接受它。

如果您的默认策略是丢弃,您就无法进一步限制访问。您只能允许某些流量 - 例如使用您的规则-。

相关内容