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

Ни для кого не секрет что IPv4 адресов в свободной раздаче больше нет и не будет и эта фраза скорее всего вызовет много холивара, но все таки — будущее за протоколом IPv6.
На сегодняшний день не очень большое количество интернет провайдеров (имеется ввиду провайдеры домашнего интернета, а не транзитники) поддерживают полноценную работу с IPv6, но я думаю попробовать работу с новым протоколом уже хочется.

Для этого у нас есть постоянный публичный IPv4 адрес, интернет центр Zyxel Keenetic Ultra с последней версией операционной системы NDMS:v2.02, которая уже поддерживает Dual Stack и IPv6 туннельный брокер. В интернете существует множество туннельных брокеров как платные, так и бесплатные, список приводить не буду что бы не сочли за рекламу.
Кому интересно как это настраивается добро пожаловать под кат

В KB Zyxel есть Инструкция для веб интерфейса роутера по настройке 6in4 туннеля, но по ней 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
На этом все, строго не судите первая статья на хабре.
Поделиться публикацией

Комментарии 14

    0
    Есть две крохотных проблемы. Первая — нет возможности уведомить брокера о смене внешнего IP адреса, что может омрачить радость. Вторая — те кто за провайдерским NAT могут утешится поедая кактус.
      0
      Спасибо поправил, совершенно вылетело из головы про публичный адрес. Что касается смены у брокера, у меня это делается в личном кабинете одного из украинских брокеров которым я пользуюсь, да пусть вручную но сделать это возможно.
        0
        Обьясните пожалуйста какие проблемы могут быть при нахождении за NAT.
        0
        «mtu: 1480»
        Это он автоматом определился? Я на всякий случай писал его руками (в моём случае 1440: 20 на 6to4, 40 на l2tp). И ещё надо было специально его занизить у брокера — иначе проблемы (да, бага роутера, мб уже поправили).
        P.S. стоит добавить test-ipv6.com — добрая проверка.
          0
          Добавил спасибо, по части MTU, он определился автоматом, а брокер у себя не дает его настроить.
          0
          *offtop
          Расскажите, пожалуйста, про вторую версию прошивки. Я её пробовал ставить с год назад на свой Giga и имел такие баги:
          — периодически роутер просто уходил в себя вплоть до ребута и перепрошивки (кажется, это они просто обязаны были заметить и починить за это время)
          — если настроен проброс порта на внешний интерфейс (192.168.0.123:1234 -> 7.7.7.7:2345) и из внутренней сети попробовать на этот внешний интерфейс пойти, то роутер трафик пускал напрямую на свой внутренний интерфейс (т.е. 192.168.0.1:2345).
          Вы что-нибудь из этого наблюдали?
            0
            Год назад она была еще в альфе для гиков. Сейчас — уже полноценный, допиленный релиз. Попробуйте. Наверняка, все ошибки уже были исправлены
              +1
              Если стоит NDMS v1, все работает и новой функциональности не нужно, то лучше на ней и оставаться. На v2 периодически всплывают разные баги то с одним, то с другим. Стабильной я бы ее не назвал.
              Например, осенью, роутер стал перезагружаться вплоть до нескольких раз в час. Способствовал этому запущенный transmission, хотя и без него мог уйти в ребут. Судя по обсуждению на форуме, триггером были некие пакеты прилетавшие с wan.
                0
                Ясно, спасибо. Хотел потестить IPv6, но видимо обойдусь.
              +1
              1) Читал в отзывах про данные тормоза, но у себя пока не заметил, там люди писали что процессор загружается в 100%, у меня выше 15% процессор не поднимался ни разу по периодическим наблюдениям (жаль нету snmp, что бы снимать постоянно данные). Гонял я через него разный трафик, все работает ровно вроде.
              2) Сейчас у меня проброшено RDP, 3389 UPD порт, такого не наблюдается.
                0
                Прошу прощения за вопрос, лишь косвенно относящийся к теме, но есть ли хоть какая то возможность приделать OpenVPN client к роутеру Keenetic 4G, а точнее в родную прошивку версии 2.
                  0
                  В списке приложений его нет. Keenetic`и весьма подробно обсуждаются в форумах ixbt.com
                    0
                    Агу, так и есть, вот только там единственное решение — это поставить прошивку версии 1, над которой потом ещё надо значительно медитировать, после чего не трогать вовсе. В общем решения нет, что собственно и вынудило меня задать вопрос тут.
                  0
                  Все сделал по инструкции, работает, спасибо. Но только по проводу, если подключаюсь по Wi-Fi — тишина. Причем в логе на роутере сыплются ошибки:

                  C [Feb 5 15:54:35] ndm: Ip6::Util::NetlinkTools: system failed [0xcffd0033]

                  Если подключаю провод и выключаю на компьютере Wi-Fi, ошибки прекращаются.

                  У меня Mac OS 10.9, в обоих случаях настройки ipv6 auto. Пытаюсь понять в роутере проблема, либо в Маке. Проверить не на чем, есть виртуальная Windows 7 (parallels, мостовая сеть), в ней ipv6 не появляется в обоих случаях.
                  Выдача sudo tcpdump -n -i en0 -v ip6 в обоих случаях идентичная,

                  16:16:05.974672 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 8) fe80::ee43:f6ff:fed9:a8d0 >ff02::2: [icmp6 sum ok] ICMP6, router solicitation, length 8
                  16:16:05.976893 IP6 (hlim 255, next-header ICMPv6 (58) payload length: 80) fe80::ee43:f6ff:fed9:a8d0 >ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 80

                  hop limit 64, Flags [other stateful], pref medium, router lifetime 1800s, reachable time 0s, retrans time 0s

                  prefix info option (3), length 32 (4): 2001:470:xxxx:21a::/64, Flags [onlink, auto], valid time 4294967287s, pref. time 4294967287s
                  unknown option (24), length 24 (3):
                  0x0000: 4000 ffff ffff 2001 0470 xxxx 021a 0000
                  0x0010: 0000 0000 0000


                  После этого на проводном соединении процесс обмена продолжается и на интерфейс добавляется адрес, а на беспроводном в логе роутера появляется ошибка и дальше по кругу router solicitation/advertisement и ошибка.

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое