Підтримка IPv6 в Apache
Що скажеш про підтримку IPv6 в Apache?
# apachectl -V
Server version: Apache/2.4.58 (Ubuntu)
Server built: 2025-04-03T14:36:49
Server's Module Magic Number: 20120211:129
Server loaded: APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Compiled using: APR 1.7.2, APR-UTIL 1.6.3, PCRE 10.42 2022-12-11
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_PROC_PTHREAD_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
У тебе зібрана версія Apache повністю підтримує IPv6.
Ключові моменти з виводу apachectl -V
:
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
Це означає, що APR (Apache Portable Runtime), на якому базується Apache, було зібрано з підтримкою IPv6. А це необхідна умова для роботи Apache з IPv6-адресами.
Що це дає практично
Можна використовувати IPv6 у
Listen
таVirtualHost
:Listen [::]:80 <VirtualHost [::]:80> ServerName example.com DocumentRoot /var/www/html </VirtualHost>
IPv4 і IPv6 можуть співіснувати: Apache можна одночасно слухати на
0.0.0.0:80
(IPv4) і[::]:80
(IPv6). Якщо вказати лише[::]:80
, Apache зазвичай також прийматиме IPv4-підключення через механізм IPv4-mapped IPv6 addresses, якщо це підтримується ядром (а в Ubuntu — так).Потрібна відповідна мережева конфігурація:
Сервер повинен мати IPv6-адресу.
DNS повинен мати AAAA-запис для домену.
Фаєрвол (наприклад, UFW або iptables) повинен дозволяти вхідні підключення на потрібний порт по IPv6 (
tcp6
).
Як перевірити, що Apache слухає IPv6
ss -ltnp | grep apache
або:
netstat -tulpen | grep apache2
Ти побачиш щось на кшталт:
tcp6 0 0 :::80 :::* LISTEN 1234/apache2
Це значить, що Apache слухає всі IPv6-інтерфейси на порті 80.
Підсумок: твій Apache зібраний із підтримкою IPv6, і ти можеш спокійно налаштовувати його для роботи як з IPv4, так і з IPv6 — треба лише врахувати налаштування Listen
, VirtualHost
, DNS, та фаєрвол.
Last updated