Настройка ipv6 для CentOS 7 (openVZ 7.0.15) (делалась для серверов OVH).
Из документации ovh — https://docs.ovh.com/gb/en/dedicated/network-ipv6/
The default gateway for your IPv6 block (IPv6_GATEWAY) is always xxxx.xxxx.xxxx.xxFF:FF:FF:FF:FF. For example:
-
The IPv6 address of the server is 2607:5300:60:62ac::/64. The IPv6_GATEWAY will therefore be 2607:5300:60:62FF:FF:FF:FF:FF.
-
The IPv6 address of the server is 2001:41D0:1:46e::/64. The IPv6_GATEWAY will therefore be 2001:41D0:1:4FF:FF:FF:FF:FF.
Красным я пометил разницу в ipv6 адреса. Здесь объясняется как будет правильно выглядеть gateway в зависимости от последней ячейки самого адреса. В первом случае там 4 символа, во втором 3.
Редактируем файл /etc/sysconfig/network. Обычно он с одной строчкой «# Created by anaconda». Рабочий конфиг выглядит вот так:
# Created by anaconda
IPV6FORWARDING=yes
На второй машине работает вот такой вариант:
# Created by anaconda
NETWORKING_IPV6=yes
IPV6FORWARDING=yes
IPV6_DEFAULTDEV=br0
IPV6_DEFAULTGW="5678:41d7:a:5fff:ff:ff:ff:ff"
IPV6_AUTOCONF=no
Редактируем файл сетевого интерфейса. В моём случае это /etc/sysconfig/network-scripts/ifcfg-br0. Имеет вот такой вид:
DEVICE="br0" ONBOOT=yes NETBOOT=yes IPV6INIT=yes IPV6ADDR="5678:41d7:a:5f39::1/64" IPV6_DEFAULTGW="5678:41d7:a:5fff:ff:ff:ff:ff" BOOTPROTO=dhcp TYPE="Bridge" DELAY="2" STP="off" UUID="49d6ccd2-4764-46eb-8fb0-24f1e328ccea" ZONE=public (появилась в версии openvz 7.10; а в версии 7.13 уже не увидел)
ZONE=public - это скорее всего относится к фаерволу, правила какой зоны будут применяться к интерфейсу br0.
Далее необходимо выполнить перезагрузку сетевого интерфейса. Если параметры были введены неверно, то связь с сервером по ssh может быть потеряна.
service network restart
На виртуальную машину прописывается ipv6 адрес.
vzctl set <vmid> --save --ipadd 5678:41d7:a:5f39::7
В моём случае, чтобы всё заработало, надо было перезагрузить виртуальную машину.
vzctl restart <vmid>
Проверяем ping с машины/виртуалки и к машине/виртуалке. Для проверки можно пинговать google:
ping6 -n -c 4 ipv6.google.com
Пинг на ipv6.google.com должен проходить в любом случае. Если не работает — то что-то не так, надо искать причину. Это может быть неправильно настроенный gateway или правила фаервола (с фаерволом проверить проще всего, его можно отключить на время тестов).
В контейнерах ( или виртуальных машинах) не будет работать, если не настроен dns и ipv4.
Пинг к хосту, на котором настраивается ipv6 можно проверить со сторонних сервисов, например — https://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php
Моя виртуальная машина Debian GNU/Linux 8.9 (jessie). На ней часть файла сетевого интерфейса(/etc/network/interfaces), отвечающая за ipv6 выглядит вот так:
iface venet0 inet6 static
address ::2
netmask 128
up ip -6 r a default dev venet0
up ip addr add 5678:41d7:a:5f39::7/128 dev venet0
Команды, которые могут помочь в решении проблем с нерабочим ipv6.
sysctl -a | grep ipv6.*disable
Команда фаервола как раз в отношении параметра ZONE=public в конфигурационном файла, о котором я писал выше: firewall-cmd --zone public --add-protocol ipv6-icmp
Выполнение команды:
sysctl net.ipv6.conf.default.forwarding
должно вывести:
net.ipv6.conf.default.forwarding = 1
sysctl -A | grep ipv6
ip -6 route