AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 989338
Accepted
Arlen Beiler
Arlen Beiler
Asked: 2019-10-25 14:18:16 +0800 CST2019-10-25 14:18:16 +0800 CST 2019-10-25 14:18:16 +0800 CST

无法从同一台机器上的 eth0 地址访问 Ubuntu 服务器

  • 772

我有一个 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 方面,我不认为。

ubuntu-16.04
  • 2 2 个回答
  • 1089 Views

2 个回答

  • Voted
  1. Enicli
    2019-10-25T14:59:54+08:002019-10-25T14:59:54+08:00

    我没有代表发表评论要求澄清,所以我只想对答案进行抨击。您正在谈论您的节点应用程序正在侦听的 IP 地址,但是我从来没有在我的任何节点应用程序中配置它。我猜你的代码看起来像这样:

    var http = require('http');
    http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write('Hello World!');
      res.end();
    }).listen(8080, 0.0.0.0);
    

    此处的端口和 ip 都是可选的,因此如果您想在端口 80 上监听,那么只需将它们都丢弃即可。如果您正在侦听不同的端口,请放弃 IP 并让 Node 解决。

    您在 81 上提到了 Apache 服务器,我假设您正在尝试直接连接到 Node,并且您没有通过 Apache 访问 Node。

    如果以上内容不能帮助从您的节点应用程序发布相关代码,则cat /etc/hosts和sudo netstat -tulpn. 如果您要通过 Apache,那么还要发布相关的 Apache 配置(即 中的虚拟主机条目/etc/apache2/sites-enabled/)。

    • 1
  2. Best Answer
    Arlen Beiler
    2019-10-31T09:05:03+08:002019-10-31T09:05:03+08:00

    我在/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给每个人。

    • 0

相关问题

  • Ubuntu 服务器 16 LTS 没有 USB 2.0

  • 在 ubuntu 16.04 上创建守护进程

  • 分析docker容器的内存和cpu峰值

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve