我有一个不太正确的简单 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 规则。当我这样做时,我会收到请求超时。是否有什么我必须链接才能让 drop 和 prerouting 一起工作,或者是其他错误?谢谢你的帮助。
关于 iptables EVER 最有用的工具:
http://en.wikipedia.org/wiki/File:Netfilter-packet-flow.svg
看到它
-t nat -A PREROUTING
在到达 INPUT 链之前被应用于数据包。所以,接受--dport 8080
而不是--dport 80
。