我有一个运行在Tomcat上部署的Web应用程序的服务器,坐在testingnetworking中。 我们正在运行SuSE 11 sp1,并对传入的请求有一些redirect规则。 例如,我们不在Tomcat的server.xml文件中绑定端口80,而是在端口9600上侦听,并在SuSEfirewall2中有一个configuration行,将端口80redirect到9640.这是因为Tomcat不以root身份运行,也不能开放80端口。
我的Web应用程序需要能够向端口80发出请求,因为这是它在部署时将使用的端口。 我可以添加什么规则,以便本地请求被iptablesredirect?
我试着看看这个问题: 如何使用iptables在本地计算机上将一个端口redirect到另一个端口? 但那里的build议似乎没有帮助我。
我尝试在eth0上运行tcpdump,然后连接到我的本地IP地址(不是127.0.0.1,但实际的地址),但我没有看到任何活动。 如果我从外部机器连接,我确实看到活动。 然后,我跑了tcmpdump对,再次试图连接,这次我看到活动。 所以这使我相信,任何请求我自己的IP地址本地没有得到处理的iptables。
仅供参考,他是我的NATperformance在:
Chain PREROUTING (policy ACCEPT) target prot opt source destination REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 9640 REDIRECT tcp -- anywhere anywhere tcp dpt:xfer redir ports 9640 REDIRECT tcp -- anywhere anywhere tcp dpt:https redir ports 8443 Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
首先想说的是我不相信Tomcat充当无驱动的用户不能绑定80端口。 可能你有这个用户的不充足的权利。 怎么样redirect:你的表格输出是不完整的。 你能提供iptables -nvL -t nat的输出吗? 我的意思是在这里你可以通过接口拒绝规则,你的输出不会显示这个。 怎么样来自本地terminal的请求:只要想想路由的select依赖于路由表,哪个接口发送数据包也取决于路由表。 所以如果你的应用只绑定lo接口,你会得到从“lo”到“lo”的内部stream量,