当同一台服务器具有 PREROUTING IP 转发时,无法从该服务器进行 curl

当同一台服务器具有 PREROUTING IP 转发时,无法从该服务器进行 curl

我有一个 Ubuntu 网络服务器,它使用iptablesPREROUTING 将端口转发808000

因此,Web 进程侦听端口8000。现在我想从同一台服务器向在其上运行的 Web 应用程序发送 curl。但这会引发连接被拒绝

$ curl http://my.webite.com/on/same/server
curl: (7) Failed connect to my.webite.com:80; Connection refused

curl-ing 在端口上8000工作(但必须在端口 80 上工作)。

我还确保该 Web 服务器监听所有接口(不仅仅是物理接口):

$ netstat -ntl | grep LISTEN
...
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN
...

我的应用程序的域名(my.webite.com)也解析为物理接口IP。

为什么我得到连接被拒绝

答案1

PREROUTING 链不适用于本地(环回)流量。您需要在 OUTPUT 链中添加重定向规则,才能使其在本地系统上发挥作用。

例如:

iptables -t nat -A OUTPUT -i lo -p tcp --dport 80 -j REDIRECT --to-port 8000

相关内容