当我使用 NodeJS v10 监听端口 80 时,所有其他机器都可以访问该端口,但机器本身却无法访问。这非常奇怪,环回和 eth0 IP 地址也是如此。但是,它可以像网络上的其他机器一样访问自己的端口 90。
我使用了一个简单的 hello world 应用程序来验证 NodeJS 脚本没有错误。
这也发生在 NodeJS 12.13.0 中,所以我根本不认为 Node 是问题所在。
iptables -L
说政策接受,一切都是空的。
netstat -tulpn
除了我正在测试的端口之外,没有列出任何端口 80。
答案1
我在 中找到了这一行/etc/rc.local
。
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
发现问题!
这个答案说明了为什么该规则没有出现在iptables -L
:https://serverfault.com/a/685948/32875。
有 5 个表 (filter、nat、mangle、raw、security)。您可以调用
iptables -L -t table
每个表。
答案2
可能是因为如果您想使用端口 80,您需要 sudo 权限才能打开它。