我想在我的 ubuntu linode 上运行一个简单的 python 网络服务器,使用以下命令(它只是将当前目录放在指定的端口上)
python -m SimpleHTTPServer 8080
我使用端口 8080 以避免使用 sudo 在端口 80 上运行
为了使其可访问,我使用以下命令将端口 80 重定向到端口 8080:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
现在任何计算机都可以访问我的网站 giuliopizzini.com,但 localhost 除外,因为 localhost 会出现套接字错误,连接被拒绝。如果我将 localhost 指向 giuliopizzini.com:8080,它可以正常工作,但重定向会失败。
我已经启用了防火墙,但如果我用它重置
sudo iptables -F
行为完全相同,因此似乎在这里不起作用。
我怎样才能使重定向在本地主机上也能工作?
答案1
您需要添加另一条规则才能使 localhost 重定向正常工作:
sudo iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-port 8080
您需要包含用于连接的目标 IP,例如本地主机或任何接口 IP。
本地生成的流量不会影响PREROUTING
链。它会影响OUTPUT
nat 表中的链,而这正是上述规则所做的。