Настраиваем 6in4 на роутерах Zyxel Keenetic

в 17:02, , рубрики: 6in4, ipv6 через ipv4, zyxel keenetic, Сетевые технологии, туннельный брокер, метки: , , ,

Ни для кого не секрет что 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

Источник



https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js