我想用下面的命令在我的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链,这是上述规则正在做的事情。