私のサーバーには複数のサブドメインがあり、どの http クライアントから接続しても (サブドメインに応じて、HTTP 80 または HTTPS 443 のいずれか) タイムアウトが発生します。
例えば :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 は私の Web サイトに 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 が動作することが証明された後にのみ再度有効にすることをお勧めします。