Настройка ipv6 для CentOS 7

Настройка 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

Добавить комментарий