为什么我的新 iptables 规则会搞砸出站流量?

为什么我的新 iptables 规则会搞砸出站流量?

我最近在端口 80 上设置了 Tomcat,使用Werner Puschitz 提供的说明。本质上,我必须执行这两个 iptables 命令:

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080

我实现了与 Tomcat 相关的目标,但它搞砸了一些其他的事情;例如,当我尝试运行“yum update yum”时,出现以下错误:

http://mirror.stanford.edu/yum/pub/centos/5.5/addons/x86_64/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (111, 'Connection refused')>
Trying other mirror.
http://mirrors.adams.net/centos/5.5/addons/x86_64/repodata/repomd.xml: [Errno 4] IOError: <urlopen error (111, 'Connection refused')>
etc...

WGET 以类似的方式失败。

我知道 iptables 规则是罪魁祸首,因为删除它们可以解决 YUM 和 WGET 的问题。那么,为什么这些规则会搞砸 YUM 和 WGET?我猜是 OUTPUT 规则,对吧?它实际上起什么作用,为什么有必要这样做?这种令人讨厌的副作用可以避免吗?

答案1

如果您在服务器上运行 Tomcat,则需要将入站流量重定向到端口 8080,而不是出站流量。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-ports 8080

第二条规则重定向从运行 Tomcat 的本地节点生成的端口 80 上的传入请求,如链接中所述。仅当您想从服务器内部访问端口 80 上的 tomcat 时才需要它。

相关内容