Mikrotik 6to4 автоматизация при динамическом IPv4

—

от автора

Эта статья будет полезна тем, кто хочет испытать 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/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *