无法从内部访问我的服务器的公共 IP 或域名

无法从内部访问我的服务器的公共 IP 或域名

假设我有一个域名“my.domain.com”,其 A 记录可解析为我的服务器(运行 Ubuntu 20.04)的公共 IPv4 地址(例如 160.200.200.21)

我已经在服务器上安装了 BigBlueButton,几乎一切正常,只是 BigBlueButton 需要能够从域名或公共 IP 访问自身,但出现失败并出现以下错误:

curl: (28) Failed to connect to  port 443: Connection timed out
# Error: Could not connect to the configured hostname/IP address

因此我做了以下检查:

  • 在远程服务器的 80 和 443 端口上使用netcat -l以确保端口已打开 => 成功

我还运行了以下命令:

~# curl https://my.domain.com 
curl: (28) Failed to connect to my.domain.com port 443: Connection timed out

~# curl my.domain.com 
curl: (28) Failed to connect to my.domain.com port 80: Connection timed out

~# wget https://my.domain.com 
--2023-11-07 20:08:51--  https://my.domain.com/
Resolving my.domain.com (my.domain.com)... 160.200.200.21
Connecting to my.domain.com (my.domain.com)|160.200.200.21|:443... failed: Connection timed out.
Retrying.

curl http://google.com有回应!

另请注意,上述命令在另一台服务器或计算机上也能完美运行

~# netstat -anltp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4082/nginx: master
tcp        0      0 127.0.0.1:52562         127.0.0.1:8021          ESTABLISHED 13903/node
tcp6       0      0 :::80                   :::*                    LISTEN      4082/nginx: master
tcp6       0      0 :::8021                 :::*                    LISTEN      13262/freeswitch
tcp6       0      0 127.0.0.1:8090          :::*                    LISTEN      13076/java
tcp6       0      0 127.0.0.1:32800         127.0.0.1:8021          ESTABLISHED 13745/java
tcp6       0      0 127.0.0.1:8021          127.0.0.1:32800         ESTABLISHED 13262/freeswitch
tcp6       0      0 127.0.0.1:8021          127.0.0.1:52562         ESTABLISHED 13262/freeswitch


~# netstat -anltp | grep :443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      12628/haproxy
tcp6       0      0 :::443                  :::*                    LISTEN      12628/haproxy

此时我不知道该再检查什么或在哪里查找问题。此服务器是虚拟机,由提供商提供,所以我只有 ssh 和 root 访问权限,提供商说它位于防火墙后面,但由于端口显然已打开,我不知道是否可以责怪他们。

所以发生的情况是,尽管相关端口已打开,但 my.domain.com 在服务器外部(在浏览器或 CLI 上)可以完全访问,但在服务器内部却无法访问。

我发现一件很奇怪的事情,也许这些信息会很有用:当我netcat -l 80在我的服务器上执行此操作时,即使 Nginx 在端口 80 上运行时它也能正常工作。netcat -l 443失败说端口正在使用中,我必须先关闭使用它的进程,然后才能运行测试。

答案1

如果您的虚拟机无法通过外部连接访问自身,您可以修改 /etc/hosts,将其中一个网络适配器 IP 地址(甚至是 localhost)映射到计算机的 DNS 名称。这些配置优先于外部 DNS 中的配置。

127.0.0.1 my.domain.com

相关内容