Эта статья будет полезна тем, кто хочет испытать IPv6 по протоколу инкапсуляции 6to4, но имеющего динамический IPv4.
Mikrotik IPv6
Первым делом, проверим, есть ли у вас возможность использовать публичный 6to4 шлюз, пингуем его по адресу: 192.88.99.1
Если пинг идет, читаем дальше.
И так, для начала, нужно установить модуль поддержки IPv6 (скачиваем Extra packages для вашего устройства с http://www.mikrotik.com/download). Из архива вытаскиваем ipv6-*.npk и заливаем его на роутер, затем перезапускаем его.
Теперь у вас есть поддержка IPv6, учтите, что правила firewall для неё нужно делать отдельно.
Настройка 6to4
Далее, создаем специальный интерфейс «6to4 Tunnel», в Remote Adress ставим адрес публичного шлюза, в Local Adress наш текущий публичный IPv4 адрес.
Теперь можем проверить, есть ли пинг до чего-нибудь из IPv6 (к примеру ipv6.google.com)
Если пинги есть, то идем далее:
Скрипт автонастройки
##############Script Settings################## :local EXTif "ext" :local TUNif "6to4tun" :local LOCif "local" ############################################### :local EXTipv4 [/ip address get [find interface=$EXTif] address]; :local TUNipv4 [/interface 6to4 get [find name=$TUNif] local-address]; :for i from=( [:len $EXTipv4] - 1) to=0 do={ :if ( [:pick $EXTipv4 $i] = "/") do={ :set $EXTipv4 ([:pick $EXTipv4 0 $i]); } } :global dec2hex do={ :local hex "" :local dec [:tonum $1] :for i from=0 to=4 step=4 do={ :set hex ([:pick "0123456789ABCDEF" (($dec>>$i)&0xf) ((($dec>>$i)&0xf)+1)].$hex) } :return ([:tostr $hex]) } :local 6to4prefix do={ :global dec2hex :local oct :local ipv6 "2002:" :local tmp 0 :local c 0 :local ipv4 $1 :for i from=0 to=( [:len $ipv4] - 1) do={ :if ( [:pick $ipv4 $i] = "." || [:pick $ipv4 $i] = "/") do={ :set oct ([:pick $ipv4 $tmp $i]) :set tmp ($i+1) :set ipv6 ("$ipv6".[$dec2hex $oct]) :if ( c =1 || c =3) do={ :set ipv6 ("$ipv6".":") } :set c (c+1) } } :return ($ipv6) } :if ( $TUNipv4 != $EXTipv4 ) do={ /interface 6to4 set [find name=$TUNif] local-address=$EXTipv4 /ipv6 address remove [find interface=$TUNif] /ipv6 address remove [find interface=$LOCif] :local ipv6new [$6to4prefix ($EXTipv4."/")] :log info ($ipv6new) /ipv6 address add interface=$TUNif advertise=no address=("$ipv6new".":1/48") /ipv6 address add interface=$LOCif advertise=yes address=("$ipv6new".":1/64") }
В скрипте нужно установить переменные, отвечающие за интерфейсы, которые мы настраиваем:
- EXTif — внешний интерфейс
- TUNif — туннельный интерфейс
- LOCif — локальный интерфейс
Запустив скрипт, мы получим сконфигурированный туннель и локальный интерфейс с префиксом /64.
Теперь добавим этот скрипт в планировщик (я запускаю каждые 5 минут), и при смене внешнего IPv4, с небольшой задержкой 6to4 будет перенастроен.
Какие сложности вас ждут?
Клиенты получают IPv6 с помощью SLAAC, и нет возможности задать DNS и шлюз. В Mikrotik есть DHCPv6, но толку от него ещё мало (не доделан он в полной мере).
Для поддержки DNS в самом Mikrotik выставляем известные публичные сервера (к примеру 2620:0:ccc::2 и 2620:0:ccd::2), у клиентов можно настроить link local адрес Mikrotik.
ссылка на оригинал статьи https://habrahabr.ru/post/326076/
Добавить комментарий