포트 차단됨 (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 (정확한 IP 주소)

;; 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가 이러한 문제를 일으킬 수 있다는 것을 읽었으나, 클라우드 서버에는 Apache가 설치되어 있지 않습니다.
포트가 열려 있는지 확인하기 위해 telnet discourse.domain.de 443을 시도했는데 다음과 같은 결과를 얻었습니다.

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

이 문제를 해결하는 방법에 대해 아이디어가 있는 분이 있을까요?
감사합니다!

수정: 방화벽을 비활성화해도 동일한 문제가 발생합니다.

외부 서비스를 사용하여 DNS를 조회해 보셨나요?

즉, 클라우드 호스팅 제공업체를 통해 라우팅되지 않는 서비스를 말하는 것입니다.

전에 그렇게 해본 적이 없는데, 팁을 알려주셔서 감사합니다. 올바른 IPv4 주소가 표시됩니다.

해당 포트가 Hetzner에 의해 차단되고 있기 때문에 그런 메시지가 표시됩니다.

어떤 식으로든 주제에서 약간 벗어난 질문이지만, Hetzner가 이렇게 중요하면서도 자명한 포트들을 차단하는 이유가 무엇인지 아시나요?

네, 감사합니다. Hetzner 고객센터에 연락하겠습니다.

오용(악용)을 방지하기 위해. https://docs.hetzner.com/cloud/servers/faq/

불행히도 이메일 스팸 발송자와 사기꾼들이 클라우드 호스팅 제공업체를 악용하는 경우가 많습니다. Hetzner에서도 이를 방지하고자 합니다. 따라서 모든 클라우드 서버에서 기본적으로 25번 및 465번 포트가 차단되어 있습니다. 이는 오용을 방지하기 위해 클라우드 호스팅 업계에서 매우 일반적인 관행입니다. 우리는 이러한 메일 포트를 해제하기 전에 신규 고객과의 신뢰를 쌓고자 합니다. 가입 후 1개월이 경과하고 첫 번째 청구서가 결제되면, 유효한 사용 사례에 대해 제한 요청을 생성하여 해당 포트를 해제할 수 있습니다. 요청 시 사용 사례에 대한 세부 정보를 알려주시면, 건별로 판단하여 결정하겠습니다.

대안으로, 외부 메일 전송 서비스를 통해 이메일을 보내기 위해 587번 포트를 사용할 수도 있습니다. 587번 포트는 차단되지 않으며, 제한 요청 없이 사용할 수 있습니다.

이것은 일반적인 해결책이며, 셀프호스팅 이메일 서버가 거의 불가능에 가까운 이유 중 하나이기도 합니다.

하지만 OP는 포트 80과 443에서 문제가 있었죠. 제가 놓친 게 있을까요?

맞습니다. 두 가지 다른 문제를 혼동했네요. 혼동을 드려 죄송합니다.

포럼을 검색해 비슷한 문제를 겪은 다른 사람이 있는지 확인해 봤고, 다음 내용을 찾았지만, 엄밀히 말해 '진짜 해결책’은 아닙니다:

app.yml을 수동으로 설정하는 것이 당신에게도 하나의 옵션이 될 수 있을까요?

여전히 혼란스럽지만, Digital Ocean에서는 방화벽을 설정해야 합니다. 클린 설치 상태에서는 어떤 포트도 열려 있지 않습니다(SSH는 열려 있지만, 그것은 별개의 문제입니다). Hetzner가 어떻게 작동하는지는 잘 모르겠습니다. 그리고 VPS가 폐쇄된 포트 뒤에 있다면, app.yml에 무엇을 설정하든 의미가 없습니다.

아니면 제가 또 무언가를 놓치고 있는 건가요?

app.yml를 수동으로 설정하는 것도 저에게는 문제 해결 방법이었습니다. 감사합니다!
이 스레드도 찾았지만, 제가 충분히 꼼꼼히 읽지 못한 것 같네요… :see_no_evil:

저는 Hetzner에서 포럼 3개를 운영 중인데, 이런 문제를 한 번도 겪어본 적이 없어요 :thinking:

즉, Hetzner은 방금 시작된 VPS에서 웹 서버용 포트를 자동으로 열어드린다는 건가요? 아니면 nginx나 apache를 기본적으로 설치해 주는 건가요?

그건 좀… 이상하네요.

그렇다고 생각합니다. VPS(Ubuntu 20)를 시작할 때, nginx가 기본적으로 설치되어 있지 않습니다: discourse-setup이 설치합니다.
저는 수년간 Hetzner VPS에서 Discourse를 여러 번 설치하면서 아무 문제 없이 사용해 왔습니다(마지막은 2월이었습니다).
그래서 이 주제에 대해 당황하고 있습니다.


수정: 어떤 이유에서인지 제 뇌가 docker와 nginx를 혼동했네요 :sweat_smile:

그것은 완전히 사실은 아닙니다. 운영 체제에 nginx를 설치하는 것이 아니라, Discourse docker 컨테이너에 nginx가 포함되어 있습니다.

제 경험상 그렇지 않습니다. 기본 Ubuntu LTS에는 방화벽이 포함되어 있지 않으며 모든 포트가 열려 있습니다.

두 가지 옵션이 있습니다: Digital Ocean의 방화벽을 사용하거나 VPS 생성 후 UFW(또는 유사한 도구)를 설치하는 것입니다. 제 모든 설치 환경에서는 Digital Ocean의 방화벽을 사용하지 않으므로, 제가 UFW로 포트를 열기 전까지는 모든 포트가 닫혀 있습니다.

어쨌든 — 이제 Nginx가 언제, 어디서, 어떻게 설치되는지 알게 되었습니다. 매일 새로운 것을 배우게 되네요 (docker가 어떻게 동작하는지 이해하지 못하면요 :smile: )