如何解決 Apache 子網域逾時問題?

如何解決 Apache 子網域逾時問題?

我的伺服器上有幾個子網域,當從任何 http 用戶端(無論是在 80 上的 HTTP 中,還是在 443 上的 HTTPS 中,取決於子網域)進行聯繫時,所有子網域都會逾時。

例如 :http://test.yosko.net

當直接從相同伺服器聯繫時,HTTP 請求有效並由 Apache 記錄:

$ wget http://test.yosko.net/
...
2020-08-19 12:34:20 (603 KB/s) - ‘index.html’ saved [6/6]

但是,當從任何其他客戶端完成時,我會超時,並且在 Apache 的 error.log 或 access.log 中找不到任何內容。

起初,我想到了 HTTPS 子網域的 certbot 配置存在問題,但由於 HTTP 子網域也是如此,我認為這是一個更廣泛的問題。由於伺服器上沒有代理或反向代理,我看不到它來自哪裡。

它發生得很突然,幾天前我的情況沒有任何改變,從那時起,在長時間的失敗之間,事情在這裡或那裡工作了幾個小時。

關於如何解決這個問題有什麼想法嗎?

附加資訊:我在 Ubuntu Server 20.04 上使用 Apache 2.4。

編輯1:IPv6問題

按照建議這裡,我測試了上面的鏈接ipv6-test.com它確實超時了。我假設我的 ISP 嘗試使用 IPv6 聯絡我的網站(失敗),而其他人仍然嘗試使用 IPv4(有效)。

但現在我發現我自己也可以嘗試。來自我的客戶:

$ wget -4 http://test.yosko.net/
...
2020-08-20 09:25:53 (151 KB/s) - «index.html» enregistré [6/6]

$ wget -6 http://test.yosko.net/
...
HTTP request sent, awaiting response... Read error (Connection timed out) in headers.

編輯2:當前配置

我目前的/etc/apache2/ports.conf是預設的,監聽所有IP:

Listen 80

它確實適用於 IPv6(請參閱“ tcp6”提及):

$ sudo netstat -lnptu | grep "apache2\W*$"
tcp6       0      0 :::443                  :::*                    LISTEN      89445/apache2       
tcp6       0      0 :::80                   :::*                    LISTEN      89445/apache2

還有我的虛擬主機:

<VirtualHost *:80>

我也嘗試過這個,但問題仍然存在:

<VirtualHost *:80 [::]:80>

答案1

網站 test.yosko.net 解析為 IPv4 和 IPv6 位址:

triss:~> dig test.yosko.net +short
yosko.net.
91.121.170.211
triss:~> dig test.yosko.net +short aaaa
yosko.net.
2001:41d0:1:ebd3::1

但它甚至無法回應 IPv6 上的 ping:

triss:~> ping -6 -c 20 test.yosko.net
PING test.yosko.net(2001:41d0:1:ebd3::1 (2001:41d0:1:ebd3::1)) 56 data bytes

--- test.yosko.net ping statistics ---
20 packets transmitted, 0 received, 100% packet loss, time 493ms

您確定在該主機上正確配置了 IPv6 嗎?如果是 - 防火牆是否到位並阻止它?如果您使用隧道 - 您是否在 IPv4 防火牆中啟用了適當的協定並在隧道介面上設定了正確的 MTU?

同時,我建議刪除該主機名稱的 AAAA 記錄,並且僅在 IPv6 被證明可以工作後才重新啟用它。

相關內容