Ubuntu上的iptables端口redirect

我有一个运行在8100上的Apache服务器。当在浏览器中打开http:// localhost:8100时 ,我们将看到该站点正确运行。

现在我想指示所有的请求在80到8100,这样的网站可以访问没有端口号。 我不熟悉iptables,所以我在网上search解决scheme。 这是我尝试过的方法之一:

 user @ ubuntu:〜$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 user @ ubuntu:〜$ sudo iptables -A INPUT -p tcp --dport 8100 -j ACCEPT
 user @ ubuntu:〜$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8100

这不起作用。 该网站在8100上运行,但不在80上。如果使用“iptables -t nat -L -n -v”打印出规则,这就是我所看到的:

 user @ ubuntu:〜$ sudo iptables -t nat -L -n -v
链PREROUTING(策略接受14个数据包,2142字节)
  pkts字节目标人选退出源目的地         
     0 0 REDIRECT tcp  -  * * 0.0.0.0/0 0.0.0.0/0           
 tcp dpt:80个redir端口8100 

链接INPUT(策略接受14个数据包,2142字节)
  pkts字节目标人选退出源目的地         

链OUTPUT(策略ACCEPT 177个数据包,13171字节)
  pkts字节目标人选退出源目的地         

链POSTROUTING(策略接受177个数据包,13171字节)
  pkts字节目标人选退出源目的地 

操作系统是VMware上的Ubuntu。 我认为这应该是一个简单的任务,但我一直在努力了几个小时没有成功。 :(我错过了什么?

试试:sudo iptables -t nat -A PREROUTING -p tcp –dport 80 -j DNAT – 到127.0.0.1:8100

“PREROUTING”链只适用于从networking接收的stream量。 如果你想redirect本地生成的stream量,你需要使用“OUTPUT”链。

你可能也想在目标IP地址上进行一些匹配。