Підтримка 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-адресами.

Що це дає практично

  1. Можна використовувати IPv6 у Listen та VirtualHost:

    Listen [::]:80
    <VirtualHost [::]:80>
        ServerName example.com
        DocumentRoot /var/www/html
    </VirtualHost>
  2. IPv4 і IPv6 можуть співіснувати: Apache можна одночасно слухати на 0.0.0.0:80 (IPv4) і [::]:80 (IPv6). Якщо вказати лише [::]:80, Apache зазвичай також прийматиме IPv4-підключення через механізм IPv4-mapped IPv6 addresses, якщо це підтримується ядром (а в Ubuntu — так).

  3. Потрібна відповідна мережева конфігурація:

    • Сервер повинен мати 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