포트 전달 후 공개적으로 Apache 가상 호스트에 연결할 수 없음

포트 전달 후 공개적으로 Apache 가상 호스트에 연결할 수 없음

웹, 이메일 및 VPS 서버를 호스팅하기 위해 새 서버에 Proxmox를 설치하기로 결정했습니다. 이렇게 하면 각 서버 유형에 대해 여러 VM을 설정할 수 있습니다.

나는 Apache 웹 서버로 Debian 9를 사용했습니다. 그리고 복사기 플러그인을 사용하여 가져온 WordPress 사이트를 이미 가져오는 데 성공했는데 문제 없이 작동했습니다. PHPMyAdmin의 WP_Options 테이블을 사이트 URL로 HTTP 대신 https로 편집한 다음 Apache 가상 호스트를 다음과 같이 설정했습니다(mydomain.com.conf).

<VirtualHost *:80>
    ServerName mydomain.com
    ServerAdmin root@localhost
    Redirect "/" "https:// mydomain.com"
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin root@localhost
    DocumentRoot /var/www/mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem

    <Directory /var/www/mydomain.com>
        AllowOverride All
        DirectoryIndex index.php
        Require all granted
    </Directory>

</VirtualHost>

다음과 같이 Windows 호스트 파일에 규칙을 설정하여 내 웹 사이트에 로컬로 액세스할 수 있습니다.

192.168.10.104      mydomain.com

또한 웹 서버가 새 IP 주소를 얻는 것을 방지하기 위해 고정 IP를 설정했습니다. 저는 /etc/network/interfaces에서 그렇게 했습니다.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug ens18
iface ens18 inet static
address 192.168.10.104
netmask 255.255.255.0
gateway 192.168.10.1

# This is an autoconfigured IPv6 interface
iface ens18 inet6 auto

내 [공용 IP 주소][1]에 대한 가상 호스트를 만들었다는 점을 지적하고 싶습니다.

충돌을 피하기 위해 UFW 방화벽을 비활성화하고 Fail2ban을 제거했습니다. 일단 지금으로는.

제가 보기에는 DNS, 네임서버 및 포트 전달이 올바르게 설정되어 있습니다. 그러나 나는 틀릴 수 있습니다.

[내 도메인 등록기관 NS 구성][2]

[DigitalOcean의 내 DNS 구성][3]

[내 포트포워딩 구성][4]

[UpTrends][5]를 사용하여 내 웹사이트에 접속하려고 하면 "TCP 연결 실패" 메시지가 나타납니다. 웹 사이트의 로컬 관점에서 SSL 인증에도 문제가 없습니다.

어떤 충고?

답변1

마지막으로!

해결 방법은 서버를 다시 시작하는 것 외에도 라우터를 다시 시작하는 것(10초 동안 전원 연결이 끊긴 상태)이었습니다.

때때로 문제는 쉽지만 예상치 못한 방법으로 해결될 수 있습니다. :)

답변2

DNS 구성이 정확하며 방문하면 http://example.compublicip:80에 성공적으로 연결되고 HTTP 리디렉션이 제공됩니다.

그러나 publicip:443(예: https://example.com)에 연결하면 ICMP "호스트에 연결할 수 없음"이 반환됩니다. 이 경우 라우터(Proxmox 호스트이든 전용 라우터이든 관계없이 공용 IP 주소를 가진 장치)에서 와야 합니다. 문제) 또는 웹 서버 자체에서.

ICMP 오류는 지연과 함께 발생하므로아마도라우터에서 전송되며 :443에 대한 포트 전달 규칙이 잘못된 IP 주소(사용되지 않는 IP 주소, 즉 ARP 응답 시간 초과)를 가리킨다는 것을 나타냅니다.

(방화벽 블록인 경우 연결 시도는 RST 또는 ICMP 오류를 즉시 반환하거나 아무 것도 반환하지 않습니다.)

설정이바라보다그렇군요. tcpdump무엇인지 살펴보는 데 사용하세요실제로사고. Proxmox 호스트(웹 VM에 연결된 인터페이스)에서 실행하면 tcpdump -e -n -i <interface> "arp or port 443"포트 전달 규칙이 도달하려고 하는 실제 IP 주소가 표시됩니다.


일반적으로 동일하게 적용됩니다. 그냥 끄는 것만으로는 충분하지 않습니다. 당신은 또한 볼 필요가현재의방화벽 규칙(실제 방화벽은 iptables 또는 nft) 즉, 현재 상태가 요청된 상태와 일치하는지 확인합니다. iptables-save, iptables-legacy-save, 으로 확인할 때까지 ufw를 비활성화하면 방화벽이 완전히 비어 있다는 것을 확실히 알 수 없습니다 nft list ruleset.

관련 정보