我有一个简单的 iptables 设置,但不太正确,我很想知道为什么它会这样工作,以及我可以做些什么来让它工作。以下是我的规则:
# redirect 80 to site
sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to 8080
sudo iptables -A INPUT -s 127.0.0.1 -j ACCEPT # local is good
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # stuff from me is good
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT # ssh is good
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # and so is web
sudo iptables -A INPUT -j DROP # culprit?
因此,从 80 到 8080 的端口转发很顺利,直到我添加最后一个 DROP 规则。当我这样做时,请求会超时。我是否需要串联一些东西才能使丢弃和预路由协同工作,或者错误是其他原因?感谢您的帮助。
答案1
有史以来最有用的与 iptables 相关的工具:
http://en.wikipedia.org/wiki/File:Netfilter-packet-flow.svg
看看-t nat -A PREROUTING
在数据包到达 INPUT 链之前会应用什么。因此,使用 ACCEPT--dport 8080
而不是--dport 80
。