端口被阻止(Hetzner 云服务器)

您好,

我正在尝试在 Hetzner 的云服务器上安装 Discourse,但在运行 ./discourse-setup 时,我收到一条消息,提示端口被阻止(domain.de 显然不是真实域名):

WARNING: Port 443 of computer does not appear to be accessible using hostname:  discourse.domain.de.
WARNING: Connection to http://discourse.domain.de (port 80) also fails.

正如设置工具建议的那样,我现在想检查 discourse.domain.de 是否解析到云服务器的 IP 地址。当我运行 dig discourse.domain.de 时,我得到以下输出:

; <<>> DiG 9.16.1-Ubuntu <<>> discourse.domain.de
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28839
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;discourse.domain.de.	IN	A

;; ANSWER SECTION:
discourse.domain.de. 4134	IN	A	XXX.XXX.XXX.XXX (correct ip address)

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Apr 24 10:14:44 UTC 2022
;; MSG SIZE  rcvd: 70

这对我来说似乎很好。
接下来建议的是可能是防火墙问题。我的防火墙有以下开放端口:


所以我认为防火墙不是上述消息的原因。是否有可能有其他东西阻止了端口?我读到 Apache 可能会导致此类问题,但它并未安装在云服务器上。
我尝试了 telnet discourse.domain.de 443 来查看端口是否打开,我得到了

telnet: Unable to connect to remote host: Network is unreachable

有人知道如何解决这个问题吗?
谢谢!

EDIT:即使防火墙已停用,情况也是如此。

您是否已使用外部服务查找了 DNS?

例如,不是通过您的云主机提供商路由的服务?

2 个赞

我以前没做过,谢谢你的提示。它显示了正确的 IPv4 地址。

您收到该消息是因为那些端口确实被 Hetzner 阻止了。

5 个赞

虽然有点离题,但你知道为什么 Hetzner 会阻止如此重要但又微不足道的端口吗?

好的,谢谢。我会联系Hetzner的支持部门。

1 个赞

为避免滥用。https://docs.hetzner.com/cloud/servers/faq/

不幸的是,电子邮件垃圾邮件发送者和诈骗者喜欢使用云托管提供商。我们 Hetzner 自然希望阻止这种情况发生。因此,我们默认阻止所有云服务器上的端口 25 和 465。这是云托管行业中非常普遍的做法,因为它能防止滥用。在我们向新客户解除这些邮件端口的阻止之前,我们希望与他们建立信任。一旦您与我们合作了一个月并支付了第一张发票,您就可以创建一个限制请求来解除这些端口的阻止,以用于有效的用例。在您的请求中,您可以告诉我们有关您用例的详细信息。我们根据具体情况做出决定。

作为替代方案,您还可以使用端口 587 通过外部邮件发送服务发送电子邮件。端口 587 未被阻止,无需发送限制请求即可使用。

3 个赞

这是一个常见的解决方案,也是自托管邮件服务器几乎不可能的原因之一。

但是 OP 的问题是端口 80 和 443。还是我错过了什么?

3 个赞

你说得对。我把两个不同的问题搞混了。抱歉造成了困扰。

2 个赞

我搜索了论坛,看看是否有人遇到过类似的问题,并找到了这个,但不幸的是,它并不是一个“真正的解决方案”:

手动配置 app.yml 是否对您来说是一个可行的选项?

1 个赞

我还是不明白,但在 Digital Ocean 上必须设置防火墙。干净的安装没有任何开放的端口(SSH 除外,但那是另一回事)。我不知道 Hetzner 是如何工作的。如果 VPS 处于关闭端口之后,那么 app.yml 中的内容就无关紧要了。

或者我又遗漏了什么?

手动配置app.yml也是我解决问题的办法。谢谢!\n我也发现了这个帖子,但我想我没有仔细阅读…… :see_no_evil:

1 个赞

我在 Hetzner 上托管了三个论坛,从未遇到过这个问题 :thinking:

那么 Hetzner 在刚启动 VPS 时就会为 Web 服务器打开端口吗?或者他们默认安装 nginx 或 apache?

这……很奇怪。

1 个赞

我想是的。当我启动一个VPS(Ubuntu 20)时,nginx默认没有安装:是discourse-setup安装的。
我多年来在Hetzner VPS上安装了无数次Discourse,没有任何问题(最后一次是在二月)。
这就是为什么我对这个话题感到困惑。


编辑:出于某些原因,我的大脑把docker和nginx搞混了 :sweat_smile:

1 个赞

这不完全正确。它不会将nginx安装在操作系统上,但Discourse的docker容器中包含了它。

这与我的经验不符。默认的Ubuntu LTS不包含防火墙,所有端口都是开放的。

1 个赞

有两种选择:使用 Digital Ocean 的防火墙,或者在创建 VPS 后安装 UFW(或其他类似工具)。我的任何安装都不使用他们的防火墙,因此在通过 UFW 打开端口之前,所有端口都是关闭的。

无论如何——现在我知道 Nginx 是何时、何地以及如何安装的。每天都有新东西(当你/我/有人不理解 Docker 如何工作时 :smile:

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.