#Симптом и границы применимости
Сайт доступен по IPv4, но пользователи IPv6 видят тайм-аут, ошибку TLS или другой код HTTP. У Apache могут различаться Listen, доступность адреса и выбранный виртуальный хост для IPv6; запись AAAA сама по себе не подтверждает исправность сервера.
#Возможные причины и как их отличить
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| AAAА указывает не на работающий узелВ DNS мог остаться прежний IPv6 после миграции. | curl -6 не соединяется, curl -4 работает | Сравнить адрес DNS с адресами интерфейсов |
| Apache не слушает внешний IPv6Прослушивание loopback IPv6 не даёт внешнего доступа. | ss показывает только IPv4 либо ::1 | Проверить Listen и VirtualHost |
| Разные правила или сертификаты для IPv6IPv4 и IPv6 могут приходить к разным адресам и настройкам. | TCP соединение есть, а ответ другой | Проверить firewall, ServerName и выбор SSL-VirtualHost |
#Пошаговая диагностика и исправление
- Воспроизведите отдельно IPv4 и IPv6Откройте терминал устройства с реально работающим IPv6. Сравните один URL и его коды по двум семействам адресов; -6 может сообщить Network is unreachable, если у проверяющего нет IPv6 — это ещё не неисправность Apache.
- Дополнительная команда по темеLinux · Терминал (Bash)Команда
curl -4 -Iv --max-time 10 https://example.com/; curl -6 -Iv --max-time 10 https://example.com/
- Сверьте публичную запись AAAAВ локальном терминале получите адреса DNS; сравните IPv6 с адресами, назначенными сетевому интерфейсу, либо с публичным IPv6 балансировщика. Не удаляйте AAAA без оценки клиентов и настроек CDN.
- Нужна утилита dig; если её нет, используйте nslookup или панель DNSLinux · Терминал (Bash)КомандаНужна утилита dig; если её нет, используйте nslookup или панель DNS.
dig +short AAAA example.com; dig +short A example.com
- Проверьте прослушивание сервераПо SSH выполните ss и посмотрите сокеты на 80/443. Затем найдите Listen и VirtualHost с IPv6 в активной конфигурации Apache; порт может фактически слушать внешний Nginx, а Apache — только 127.0.0.1:8080.
- Среда Debian/Ubuntu; учтите обратный проксиLinux · Терминал (Bash)КомандаНужен sudoСреда Debian/Ubuntu; учтите обратный прокси.
sudo ss -lntp | grep -E ":(80|443|8080)\b"; sudo apache2ctl -S
- Отделите сетевой запрет от настройки ApacheЕсли сокет IPv6 слушается, но внешний curl -6 не подключается, проверьте правила провайдера, облачного сетевого экрана и nftables/ip6tables. Просмотрите их без изменения; разрешайте только необходимые порты для правильного интерфейса.
- Только чтение; правила могут управляться облачной панельюLinux · Терминал (Bash)КомандаНужен sudoТолько чтение; правила могут управляться облачной панелью.
sudo nft list ruleset
- Сверьте HTTPS и виртуальный хост IPv6Если подключение работает, но код/сертификат неверный, используйте curl -6 -Iv и сравните ServerName, :443 VirtualHost и SNI. Для проверки сертификата укажите имя сайта, а не только IPv6-адрес. После корректировки проверьте configtest и аккуратно перечитайте Apache.
- Только если конфигурация изменена и имеется рабочая копия; пример DebianLinux · Терминал (Bash)С осторожностьюНужен sudoТолько если конфигурация изменена и имеется рабочая копия; пример Debian.
sudo apache2ctl configtest && sudo systemctl reload apache2Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.
#Как проверить результат
Из внешней сети с IPv6 и IPv4 открывается одинаковый URL с ожидаемым кодом и именем TLS-сертификата; доступ к соседним сайтам остался прежним.
#Если проблема не устранена
Если IPv6 недоступен на самой машине, сначала включение/маршрутизацию обсуждайте с провайдером. Если IPv6 отсутствует у тестовой сети, повторите проверку с независимого IPv6-узла.