Как настроить виртуальный хост Apache для работы с ipv6?

10

У меня есть сервер с 1 адресом ipv4 и несколькими адресами ipv6. Один домен перенаправлен на ipv4. Запись, которую я установил в apache ports.conf, выглядит так:

Listen ip.v4.address:80
NameVirtualHost ip.v4.address:80

и файл виртуального хоста:

<VirtualHost ip.v4.address:80>
DocumentRoot /var/www/first/
ServerName first.domain
ServerAlias www.first.domain
ErrorLog ...
CustomLog ...
</VirtualHost>

И все работает отлично.

Теперь я хочу создать новый виртуальный хост для второго домена со вторым IP. Я перенаправил второй домен на запись AAAA ipv6, добавив в ports.conf:

Listen [ip.v6.address]:80
NameVirtualHost [ip.v6.address]:80

создайте новый файл virtualhost:

<VirtualHost [ip.v6.address]:80>
DocumentRoot /var/www/second/
ServerName second.domain
ServerAlias www.second.domain
ErrorLog ...
CustomLog ...
</VirtualHost>

и перезапустите Apache. Не было ошибок при запуске сервера, но это не работает. Когда я ввожу второй домен в браузере, сервер не найден. Когда я вхожу на [ip.v6.address]сайт появляется.

Любая помощь?

sheldy
источник
Спасибо за помощь всем. IPv6 правильный и мне нужны два разных сайта. Я связался с провайдером своего домена, где я установил эту запись AAAA. Они сказали, что это может занять 24 часа, и, возможно, в этом проблема. Когда я установил запись A, эффект был почти мгновенным, и я подумал, что AAAA работает так же.
Шелди
Было бы неплохо, если бы вы отметили свой любимый ответ как таковой, чтобы люди, которые пытались помочь вам, получили за это какую-то награду ;-)
Сандер Штеффанн

Ответы:

12

Ваша конфигурация apache выглядит правильно, но немного сложнее, чем нужно, если вы хотите, чтобы один сайт был доступен как по IPv4, так и по IPv6 (двойной стек).

Вместо

<VirtualHost ip.v4.address:80>
...
</VirtualHost>

<VirtualHost [ip.v6.address]:80>
...
</VirtualHost>

ты можешь сделать

<VirtualHost ip.v4.address:80 [ip.v6.address]:80>
...
</VirtualHost>

Таким образом, отдельные виртуальные хосты прослушивают оба IP-адреса. Это намного проще в обслуживании!

Если вы действительно хотите другой сайт на IPv6, то, конечно, ваша конфигурация верна.

Сандер Штеффанн
источник
2
Или, может быть, <VirtualHost *: 80>?
Коос ван ден Хаут
2
Это, конечно, может сработать, но, поскольку он явно указал IP-адреса в своем примере, я так и сделал. Если вы действительно не заботитесь об IP-адресе и просто хотите все сделать с помощью заголовка Host: тогда ваше решение намного проще. Остерегайтесь сайтов SSL / TLS. Вы должны убедиться, что индикация имени сервера (TLS / SNI) работает для вашей базы пользователей.
Сандер Штеффанн
4

Это похоже на ошибку разрешения имени IPv6, а не на ошибку Apache. Убедитесь, что имя правильно соответствует адресу.

user9517
источник
3

Соответствует ли имя правильному адресу IPv6? Кажется, это проблема в разрешении домена.

Мартин Веймелка
источник