为什么我的新iptables规则搞砸了出站stream量?

我最近使用Werner Puschitz提供的指令在端口80上设置了Tomcat。 实质上,我不得不执行这两个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呢? 我猜这是输出规则,对吧? 它究竟做了什么,为什么这是必要的? 这种讨厌的副作用是否可以避免?

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

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

第二条规则redirect从链接中提到的运行Tomcat的本地节点生成的端口80上的传入请求。 只有当你想从服务器端访问端口80上的tomcat时才需要。