Недавно написал топик про поддержку IPv6 в Windows 7/Vista/XP (это тут). Захотелось сделать поддержку IPv6 на своём сервере, где хостируются сайты, в итоге вот что получилось.
Сервер у меня под FreeBSD, использовал HE.net для получения IPv6 адреса на сервере, вот конфиг настройки этого туннеля в /etc/rc.conf:
Теперь встал вопрос о поддержки веб-сервера, адресации IPv6. У меня используется связка nginx + apache 2.2, вот выдержка server в конфиге nginx:
Как видите, была добавлена строка listen [::]:80 default;. Это даст возможность вашему nginx слушать все IPv6 адреса.
По умолчанию такую запись можно добавить в одну секцию server. Подразумевается, наверное, то что в IPv6 каждый сайт будет на своём IPv6 адресе.
Для того, чтобы на каждом server {} был свой IPv6 адрес, нужно добавить listen [2001:470:1f04:***::3]:80. Естественно, цеплять такие адреса надо alias для вашего основного интерфейса.
Затем вам необходимо внести запись в ДНС ваших доменов, которые хостируются.
Запись я внёс такую:
Т.к. у меня все домены на одном сервере и я особо не заморачивался с выдачей каждому сайту IPv6, сделал просто:
IPv6 Network -----------> IPv6 ServerIP ---------> проксирование на 127.0.0.1 IPv4 (где крутится Apache с обычными настройками для IPv4).
Итого, прописав это, я получил доступность всех моих доменов из сети IPv6.
К каждому домену в ServerAlias апача прописал поддомен ipv6.имя_домера.ru. Ну и создал символьные ссылки для домена в своей конструкции (см root /usr/local/www/static/$host;). В этой папке у меня символьные ссылки для всех доменов и поддоменов на моём сервере.
P.S. Скорей бы многие хостинг провайдеры и хостинг панели стали поддерживать IPv6 из коробки. Большинство доменов могли бы работать и там и там, тогда и переход на IPv6 будет не столь болезненным.
P.S. Появился трафик IPv6 на сайтах, наверное, из-за добавление в каталоги сайтов, которые поддерживают IPv6.
Сервер у меня под FreeBSD, использовал HE.net для получения IPv6 адреса на сервере, вот конфиг настройки этого туннеля в /etc/rc.conf:
ipv6_gateway_enable="YES" ipv6_enable="YES" gif_interfaces="gif0" gifconfig_gif0="ВАШ_IP_СЕРВЕРА 72.52.104.74" ipv6_ifconfig_gif0="2001:470:1f04:***::2" #Выданный вам IPv6 ipv6_defaultrouter="2001:470:1f04:***::1" #Это адрес сервера HE.net в IPv6.
Теперь встал вопрос о поддержки веб-сервера, адресации IPv6. У меня используется связка nginx + apache 2.2, вот выдержка server в конфиге nginx:
server { listen 80 default; listen [::]:80 default; server_name _; location /nginx_status { stub_status on; access_log off; allow all; } location / { proxy_pass http://127.0.0.1:81; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_send_lowat 12000; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar|tar.gz|zip|ico|swf|rss)$ { root /usr/local/www/static/$host; access_log off; expires off; } }
Как видите, была добавлена строка listen [::]:80 default;. Это даст возможность вашему nginx слушать все IPv6 адреса.
По умолчанию такую запись можно добавить в одну секцию server. Подразумевается, наверное, то что в IPv6 каждый сайт будет на своём IPv6 адресе.
Для того, чтобы на каждом server {} был свой IPv6 адрес, нужно добавить listen [2001:470:1f04:***::3]:80. Естественно, цеплять такие адреса надо alias для вашего основного интерфейса.
Затем вам необходимо внести запись в ДНС ваших доменов, которые хостируются.
Запись я внёс такую:
* IN AAAA 2001:470:1f04:***::2
Т.к. у меня все домены на одном сервере и я особо не заморачивался с выдачей каждому сайту IPv6, сделал просто:
IPv6 Network -----------> IPv6 ServerIP ---------> проксирование на 127.0.0.1 IPv4 (где крутится Apache с обычными настройками для IPv4).
Итого, прописав это, я получил доступность всех моих доменов из сети IPv6.
К каждому домену в ServerAlias апача прописал поддомен ipv6.имя_домера.ru. Ну и создал символьные ссылки для домена в своей конструкции (см root /usr/local/www/static/$host;). В этой папке у меня символьные ссылки для всех доменов и поддоменов на моём сервере.
P.S. Скорей бы многие хостинг провайдеры и хостинг панели стали поддерживать IPv6 из коробки. Большинство доменов могли бы работать и там и там, тогда и переход на IPv6 будет не столь болезненным.
P.S. Появился трафик IPv6 на сайтах, наверное, из-за добавление в каталоги сайтов, которые поддерживают IPv6.
