Ни для кого не секрет что IPv4 адресов в свободной раздаче больше нет и не будет и эта фраза скорее всего вызовет много холивара, но все таки — будущее за протоколом IPv6.
На сегодняшний день не очень большое количество интернет провайдеров (имеется ввиду провайдеры домашнего интернета, а не транзитники) поддерживают полноценную работу с IPv6, но я думаю попробовать работу с новым протоколом уже хочется.
Для этого у нас есть постоянный публичный IPv4 адрес, интернет центр Zyxel Keenetic Ultra с последней версией операционной системы NDMS:v2.02, которая уже поддерживает Dual Stack и IPv6 туннельный брокер. В интернете существует множество туннельных брокеров как платные, так и бесплатные, список приводить не буду что бы не сочли за рекламу.
Кому интересно как это настраивается добро пожаловать под кат
В KB Zyxel есть Инструкция для веб интерфейса роутера по настройке 6to4 туннеля, но по ней IPv6 через Wi-Fi у меня не заработал (а именно раздача IPv6 на клиента), через LAN порты я этого не проверял. По причине «бедности» этого самого web интерфейса настройку роутера мы будем проводить через cli.
Итак логинимся по telnet на наш роутер и авторизуемся с теме же учетными данными что и в web конфигураторе роутера. Если ничего не меняли в учетке (tag cli, tag http) то должно пустить.
Попадаем в меню конфигурации и начинаем нашу настройку
В начале идем в конфигурацию параметров системы и разрешаем передачу трафика по протоколу ipv6
(config)> system set net.ipv6.conf.all.forwarding 1
Далее создаем и настраиваем наш туннельный интерфейс
(config)> interface TunnelSixInFour0
(config-if)> description 6in4_tunnel - описание туннеля
(config-if)> ip remote xxx.xxx.xxx.xxx - ipv4 адрес сервера с которым устанавливаем туннель
(config-if)> ipv6 address xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx - ipv6 адрес который выдал туннельный брокер, обычно идет с 64 префиксом, но здесь его указывать не нужно
(config-if)> ipv6 prefix xxxx:xxxx:xxxx::/xx - ipv6 префикс который выдал туннельный брокер и который можно выделить вашим клиентам, обычно /48
(config-if)> ipv6 name-servers auto - автоматическое получение IPv6 адреса DNS-сервера который тоже обычно есть у брокера
(config-if)> ipv6 force-default - маршрут по умолчанию через этот интерфейс выглядит как (::/0 | :: | TunnelSixInFour0)
(config-if)> up - включаем интерфейс
(config-if)> exit - выходим из контекста конфигурации интерфейса.
Вот собственно этот конфиг и делает то, что указано в инструкции в KB, но этого не достаточно для работы IPv6 на клиентах.
Теперь нам нужно повесить IPv6 адрес на интерфейсе который звучит как Home (Это бриджовый интерфейс который совмещает в себе правила на Wi-Fi сети и Lan).
делается это следующим образом
(config)> interface Bridge0
(config-if)> ipv6 address auto
(config-if)> exit
кому интересно вот полный конфиг интерфейса
!
interface Bridge0
name Home
description "Home network (Wired and wireless hosts)"
inherit Switch0/VLAN1
include AccessPoint
include AccessPoint_5G
security-level private
ip address xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
ip dhcp client dns-routes
ip dhcp client name-servers
igmp downstream
ipv6 address auto
up
!
Остались последние штрихи — создание подсети, которую мы получили префиксом от провайдера и прикрепление ее к интерфейсу Bridge0
(config)> ipv6 subnet 6in4_prefix - создаем подсеть
(config-subnet)> bind Home - вешаем ее на наш бриджовый интерфейс
(config-subnet)> number 0 - нумерация по порядку (если не напишете, создастся автоматически)
(config-subnet)> mode slaac - включение slaac, анонс сети который работает через ICMPv6-RA
(config-subnet)> exit
можем добавить сюда еще IPv6 DNS-сервера
(config)> ipv6 name-server xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Посмотрим поднялся ли наш интерфейс
(config)> show interface TunnelSixInFour0
index: 0
type: TunnelSixInFour
description: 6in4_tunnel
state: up
link: up
connected: yes
mtu: 1480
tx-queue: 0
Core::Configurator: done.
Посмотрим ходит ли через него трафик
(config)> show interface TunnelSixInFour0 stat
rxpackets: 6322
rxbytes: 751914
rxerrors: 0
rxdropped: 0
txpackets: 29599
txbytes: 1364490
txerrors: 2
txdropped: 0
Core::Configurator: done.
Примерно такую картину вы можете увидеть если все хорошо.
Также в веб интерфейсе вкладке Системный монитор -> IPv6 должны появится:
IPv6 адрес оконечника вашего туннеля, висящий на интерфейсе TunnelSixInFour0, с действительностью infinite
IPv6 адреса ваших клиентских устройств
Префикс полученный от брокера
Маршрут в интернет
::/0 с шлюзом :: и интерфейсом TunnelSixInFour0
Маршруты вида
xxxx:xxxx:xxxx::/64 с шлюзом :: и интерфейсом Home к вашим клиентским компьютерам
Сохраним конфигурацию через веб интерфейс или cli
(config)> system config-save
Вот собственно настройка завершена и если на клиентском компьютере есть поддержка ipv6 протокола то
ping -6 ipv6.google.com будет удачным. Можно также зайти на test-ipv6.com/, спасибо agmt
Еще конечно можно было бы закрутить гайки ACL, но на данном роутере IPv6 ACL не поддерживаются.
UPD. Уже неделю туннель работает нормально, обрывов не замечено, процессор роутера в загрузке 6%, память 7%, входящего трафика прошло порядка 7 гб (думаю что это Youtube, кстати при просмотре видео тормозов не возникало), единственный нюанс что у меня используется украинский брокер туннеля и яндекс с гуглом определяют мое местонахождение в Киеве, но думаю поменять это у Вас проблем не возникнет.
UPD. Все такие 6in4 а не 6to4, спасибо llivejo
На этом все, строго не судите первая статья на хабре.
Автор: sakutylev