我有一个 Ubuntu 16.04 虚拟机,当我运行curl http://192.168.254.42
(eth0 IP 地址)时,它会快速回复连接被拒绝。但是,服务器肯定在监听,0.0.0.0
并且可以被网络上的其他计算机使用浏览器中的相同地址访问。curl http://192.168.254.1
返回我的路由器管理页面的 html。
当然,这通常不会成为阻止程序,但这也意味着连接到服务器的 VPN 客户端无法使用 eth0 IP 地址(网络上的客户端使用)访问服务器本身。我以前从未遇到过这个问题,Google 提出了明显的“在 localhost 上侦听”,而这里并非如此。
我可以从终端 ping eth0 ip 地址(即 ping 自身),它会正确响应。来自 VPN 客户端的跟踪路由看起来也正确。但是访问http://192.168.254.42会立即响应连接被拒绝。
这里是netstat -tulpn
输出。
$ netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 5724/index-lib
$ netstat -tulpn | grep :85
tcp6 0 0 :::85 :::* LISTEN 1212/server.js
$ netstat -tulpn | grep :81
tcp6 0 0 :::81 :::* LISTEN 1515/apache2
将其设置为端口 86 即可。另一个 NodeJS 服务器也在 85 端口上运行,可以正常访问。所以这不是 NodeJS 方面的问题。
旧信息
网络服务器是一个单一的 NodeJS v10.16.3 HTTP 服务器实例,监听0.0.0.0
.
听192.168.254.42
也行不通。
更重要的是,可以正常访问监听 81 端口的 Apache Web 服务。
Chrome 说ERR_CONNECTION_FAILED
,但它几乎立即执行。
没有设置 iptables 规则。
NodeJS 进程正在侦听端口 85,并且可以以相同的方式访问。
这里是netstat -tulpn
输出。
$ netstat -tulpn | grep :80
tcp6 0 0 :::80 :::* LISTEN 5724/index-lib
$ netstat -tulpn | grep :85
tcp6 0 0 :::85 :::* LISTEN 1212/server.js
$ netstat -tulpn | grep :81
tcp6 0 0 :::81 :::* LISTEN 1515/apache2
我用来检查的命令是
$ curl http://192.168.254.42
curl: (7) Failed to connect to 192.168.254.42 port 80: Connection refused
端口 81 和 85 返回预期的 HTML。
将其设置为侦听端口 86 使其可以访问!所以它不在 NodeJS 方面,我不认为。