端口80redirect不适用于本地主机

我想用下面的命令在我的ubuntu linode上运行一个简单的python web服务器(它只是把当前的dir放在指定的端口上)

python -m SimpleHTTPServer 8080 

我正在使用端口8080来避免使用sudo在端口80上运行

为了使其可访问,我使用以下命令将端口80redirect到端口8080:

 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 

现在任何电脑可以访问我的网站giuliopizzini.com除了本地主机,它会得到一个套接字错误,连接被拒绝。 如果我指向本地主机到giuliopizzini.com:8080它工作正常,但redirect失败。

我启用了防火墙,但如果我重置它

 sudo iptables -F 

行为完全一样,所以在这里似乎不起作用。

我怎样才能使本地主机上的redirect工作呢?

您需要为localhostredirect添加另一个规则才能工作:

 sudo iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-port 8080 

您需要包含您用于连接的目标IP(如本地主机或任​​何接口IP)。

本地生成的stream量不会打击PREROUTING链。 它击中nat表中的OUTPUT链,这是上述规则正在做的事情。