連接埠轉送後無法公開存取 Apache 虛擬主機

連接埠轉送後無法公開存取 Apache 虛擬主機

我決定在我的新伺服器上安裝 Proxmox 來託管 Web、電子郵件和 VPS 伺服器。這樣,我可以為每種伺服器類型設定多個虛擬機器。

我的 apache Web 伺服器使用 Debian 9。我還已經成功匯入了使用複製器外掛程式匯入的 WordPress 網站,而且效果完美。我將 PHPMyAdmin 中的 WP_Options 表編輯為 https 而不是 HTTP 作為網站 URL,然後我像這樣設定 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 以避免 Web 伺服器取得新的 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.com成功連接到 publicip:80 並提供 HTTP 重新導向。

但是,連接到 publicip:443 (即https://example.com)會返回 ICMP“主機無法訪問”,在這種情況下,該訊息必須來自您的路由器(具有公共 IP 位址的設備,無論是 Proxmox 主機還是專用路由器)事) ,或來自網頁伺服器本身。

由於 ICMP 錯誤帶有延遲,因此最有可能的來自路由器,表示 :443 的連接埠轉送規則指向錯誤的 IP 位址(未使用的 IP 位址,即 ARP 應答逾時)。

(如果是防火牆阻止,連線嘗試將立即傳回 RST 或 ICMP 錯誤,或不傳回任何內容。)

如果設定對了,用來tcpdump看看是什麼實際上正在發生。在 Proxmox 主機(在面向 Web VM 的介面上)上執行tcpdump -e -n -i <interface> "arp or port 443"將顯示連接埠轉送規則嘗試到達的實際 IP 位址。


這同樣適用於一般情況;僅僅將其關閉是不夠的。您還需要查看目前的防火牆規則(實際的防火牆是 iptables 或 nft);即檢查目前狀態是否與請求的狀態相符。在您檢查iptables-save, iptables-legacy-save,之前,您不確定停用 ufw 是否會使防火牆完全清空nft list ruleset

相關內容