Привет всем! Хочу поделиться опытом использования IPv6 на моем роутере R450G. Прошу простить любые технические неточности, так как я относительно нов в Mikrotik и использовании IPv6.
Недавно я зарегистрировал аккаунт на — сайте, предлагающем бесплатные 6to4 туннели. Сервис предоставляется Hurricane Electric, который заявляет о себе как о крупнейшем провайдере IPv6 трафика. Разумеется, цель бесплатного предложения — привлечь платных клиентов. Но, по крайней мере, это стандартизированный механизм, который не требует каких-то obscure программ типа . Всего несколько кликов — и у вас рабочий 6to4 туннель со своим собственным /64 или /48 (маршрутизируемым!!!) префиксом IPv6 сети. На сайте также есть несколько базовых команд для настройки 6to4 туннеля на платформе Mikrotik:
/interface 6to4 add comment="Hurricane Electric IPv6 Tunnel Broker" disabled=no local-address=78.53.216.104 mtu=1280 name=sixbone remote-address=216.66.80.30
/ipv6 route add comment="" disabled=no distance=1 dst-address=2000::/3 gateway=2001:470:1f0a:9bc::1 scope=30 target-scope=10
/ipv6 address add address=2001:470:1f0a:9bc::2/64 advertise=yes disabled=no eui-64=no interface=sixbone
Эти команды дадут вам рабочий туннель. Однако вы не сможете использовать его сразу с любого компьютера, подключенного к вашему Mikrotik роутеру. Вместо этого вам нужно будет сначала объявить маршрутизируемый префикс IPv6 сети на ссылке, к которой подключен ваш ПК. Вот код, который поможет:
/ipv6 address add address=2001:470:9909:1:20c:42ff:fe52:941/64 advertise=yes comment="" disabled=no eui-64=yes interface=ether2-local
Теперь вы сможете просматривать часть интернета с поддержкой IPv6. По крайней мере, пока ваш публичный IPv4 адрес не изменится, как это происходит в моем случае из-за принудительного отключения от моего ADSL провайдера. Проблема в том, что обе конечные точки 6to4 туннеля должны знать свой собственный публичный IP-адрес, а также адрес удаленного сайта. Поэтому вам нужно будет обновлять локальную конфигурацию на Mikrotik роутере, а также на удаленном сайте каждый раз, когда ваш публичный IPv4 адрес меняется. К счастью, tunnelbroker.com предлагает API на основе HTTP для уведомления удаленного сайта об изменении вашего публичного IPv4 адреса. Используйте формат:
>
Где:
$IPV4ADDR = Новый IPv4 Endpoint (AUTO для использования IP-адреса запрашивающего клиента)
$MD5PASS = MD5 хеш вашего пароля
$USERID = User ID с главной страницы tunnelbroker (не ваше имя пользователя)
$GTUNID = Глобальный ID туннеля со страницы tunnel_details
Это выглядит просто идеально для автоматизации. Поскольку веб-страница не требует HTTPS, инструмент fetch операционной системы Mikrotik справляется с задачей. Чтобы IPv6 работал после каждого переподключения ADSL, я написал небольшой скрипт, частично основанный на скрипте обновления DynDNS, который я нашел в вики.
# 6in4 туннельный конечный пункт обновления скрипта
# для использования с tunnelbroker.com (Hurricane Electric)
# от r@n
# Определить переменные пользователя
# Изменить на IPv4 интерфейс, который должен использоваться в качестве конечного пункта туннеля
:global pubinterface "Alice"
# User ID для tunnelbroker.com (НЕ ИМЯ ПОЛЬЗОВАТЕЛЯ!!!)
:global userid "?????????????????"
# Пароль для tunnelbroker.com как MD5 хеш
# Обратите внимание: Используйте генератор, который не добавляет перенос строки к вашему паролю!
# Этот работает для меня:
:global md5passwd "????????????????"
# Глобально уникальный ID для вашего туннеля в платформе tunnelbroker.com
:global gtunnelid "?????"
# НЕ ИЗМЕНЯЙТЕ ЭТОТ СКРИПТ НИЖЕ ЭТОЙ СТРОКИ!!!
# Получить текущий IP-адрес на этом интерфейсе.
:global pubip [ /ip address get [/ip address find interface=$pubinterface ] address ]
# Обрезать публичный IP (предполагает, что маска подсети больше 9 бит)
:local tmp ([:len $pubip] - 3)
:set pubip [pick $pubip 0 $tmp]
# Запомнить последний публичный IP (устанавливается в конце этого скрипта, но остается в памяти)
:global lastheip
:if ([ :typeof $lastheip ] = nil ) do={ :global lastheip "0" }
:if ($pubip != $lastheip) do={
:log info "HE: Обновление 6in4 туннеля ..."
# Обновить локальный конечный пункт IP-адреса на удаленном сайте
:global host "ipv4.tunnelbroker.net"
:global url "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$pubip&pass=$md5passwd&user_id=$userid&tunnel_id=$gtun nelid"
/tool fetch url=$url host=$host
# Обновить локальный конечный пункт IP-адреса в локальной конфигурации
/interface 6to4 set sixbone disabled=yes
/interface 6to4 set sixbone disabled=no local-address=[:toip $pubip]
# Объявить IPv6 еще раз
:local tmp2 [/ipv6 address find address="2001:470:9909:1:20c:42ff:fe52:941/64"]
/ipv6 address set $tmp2 advertise=no
/ipv6 address set $tmp2 advertise=yes
# Обновить маршрут по умолчанию
/ipv6 route remove [/ipv6 route find dst-address="2000::/3"]
/ipv6 route add comment="" disabled=no distance=1 dst-address=2000::/3 gateway=2001:470:1f0a:9bc::1 scope=30 target-scope=10
:log info "Обновление конечного пункта туннеля завершено. $url"
:set lastheip $pubip
} else={
:log info "HE: Обновление туннеля не требуется."
}
Собрать этот скрипт заняло у меня около 3 часов, но он действительно работает!!! И да, я знаю, что он не очень красивый. Есть две вещи, которые меня особенно раздражают: 1.) Мне приходится объявлять свой маршрутизируемый префикс IPv6 сети снова, отключая и снова включая его на интерфейсе, подключенном к моему ПК. В противном случае моя машина с Windows 7 не заметит публичные IPv6 адреса на этой ссылке (автоматическое обнаружение). 2.) Мне приходится удалять и повторно добавлять маршрут IPv6 по умолчанию. Без этого хака я не смогу добраться до каких-либо IPv6 адресов, кроме моего маршрутизатора Mikrotik. Есть ли у кого-нибудь какие-нибудь идеи, что я могу делать не так? Мне также было бы интересно узнать о вашем опыте работы с "новым" интернет-протоколом. Есть ли у кого-нибудь здесь, кто управляет более крупной сетью IPv6?
Привет с Германии,
Rabbit@Net
Теперь IPv6 готов (в каком-то смысле)
Недавно я зарегистрировал аккаунт на — сайте, предлагающем бесплатные 6to4 туннели. Сервис предоставляется Hurricane Electric, который заявляет о себе как о крупнейшем провайдере IPv6 трафика. Разумеется, цель бесплатного предложения — привлечь платных клиентов. Но, по крайней мере, это стандартизированный механизм, который не требует каких-то obscure программ типа . Всего несколько кликов — и у вас рабочий 6to4 туннель со своим собственным /64 или /48 (маршрутизируемым!!!) префиксом IPv6 сети. На сайте также есть несколько базовых команд для настройки 6to4 туннеля на платформе Mikrotik:
/interface 6to4 add comment="Hurricane Electric IPv6 Tunnel Broker" disabled=no local-address=78.53.216.104 mtu=1280 name=sixbone remote-address=216.66.80.30
/ipv6 route add comment="" disabled=no distance=1 dst-address=2000::/3 gateway=2001:470:1f0a:9bc::1 scope=30 target-scope=10
/ipv6 address add address=2001:470:1f0a:9bc::2/64 advertise=yes disabled=no eui-64=no interface=sixbone
Эти команды дадут вам рабочий туннель. Однако вы не сможете использовать его сразу с любого компьютера, подключенного к вашему Mikrotik роутеру. Вместо этого вам нужно будет сначала объявить маршрутизируемый префикс IPv6 сети на ссылке, к которой подключен ваш ПК. Вот код, который поможет:
/ipv6 address add address=2001:470:9909:1:20c:42ff:fe52:941/64 advertise=yes comment="" disabled=no eui-64=yes interface=ether2-local
Теперь вы сможете просматривать часть интернета с поддержкой IPv6. По крайней мере, пока ваш публичный IPv4 адрес не изменится, как это происходит в моем случае из-за принудительного отключения от моего ADSL провайдера. Проблема в том, что обе конечные точки 6to4 туннеля должны знать свой собственный публичный IP-адрес, а также адрес удаленного сайта. Поэтому вам нужно будет обновлять локальную конфигурацию на Mikrotik роутере, а также на удаленном сайте каждый раз, когда ваш публичный IPv4 адрес меняется. К счастью, tunnelbroker.com предлагает API на основе HTTP для уведомления удаленного сайта об изменении вашего публичного IPv4 адреса. Используйте формат:
>
Где:
$IPV4ADDR = Новый IPv4 Endpoint (AUTO для использования IP-адреса запрашивающего клиента)
$MD5PASS = MD5 хеш вашего пароля
$USERID = User ID с главной страницы tunnelbroker (не ваше имя пользователя)
$GTUNID = Глобальный ID туннеля со страницы tunnel_details
Это выглядит просто идеально для автоматизации. Поскольку веб-страница не требует HTTPS, инструмент fetch операционной системы Mikrotik справляется с задачей. Чтобы IPv6 работал после каждого переподключения ADSL, я написал небольшой скрипт, частично основанный на скрипте обновления DynDNS, который я нашел в вики.
# 6in4 туннельный конечный пункт обновления скрипта
# для использования с tunnelbroker.com (Hurricane Electric)
# от r@n
# Определить переменные пользователя
# Изменить на IPv4 интерфейс, который должен использоваться в качестве конечного пункта туннеля
:global pubinterface "Alice"
# User ID для tunnelbroker.com (НЕ ИМЯ ПОЛЬЗОВАТЕЛЯ!!!)
:global userid "?????????????????"
# Пароль для tunnelbroker.com как MD5 хеш
# Обратите внимание: Используйте генератор, который не добавляет перенос строки к вашему паролю!
# Этот работает для меня:
:global md5passwd "????????????????"
# Глобально уникальный ID для вашего туннеля в платформе tunnelbroker.com
:global gtunnelid "?????"
# НЕ ИЗМЕНЯЙТЕ ЭТОТ СКРИПТ НИЖЕ ЭТОЙ СТРОКИ!!!
# Получить текущий IP-адрес на этом интерфейсе.
:global pubip [ /ip address get [/ip address find interface=$pubinterface ] address ]
# Обрезать публичный IP (предполагает, что маска подсети больше 9 бит)
:local tmp ([:len $pubip] - 3)
:set pubip [pick $pubip 0 $tmp]
# Запомнить последний публичный IP (устанавливается в конце этого скрипта, но остается в памяти)
:global lastheip
:if ([ :typeof $lastheip ] = nil ) do={ :global lastheip "0" }
:if ($pubip != $lastheip) do={
:log info "HE: Обновление 6in4 туннеля ..."
# Обновить локальный конечный пункт IP-адреса на удаленном сайте
:global host "ipv4.tunnelbroker.net"
:global url "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$pubip&pass=$md5passwd&user_id=$userid&tunnel_id=$gtun
/tool fetch url=$url host=$host
# Обновить локальный конечный пункт IP-адреса в локальной конфигурации
/interface 6to4 set sixbone disabled=yes
/interface 6to4 set sixbone disabled=no local-address=[:toip $pubip]
# Объявить IPv6 еще раз
:local tmp2 [/ipv6 address find address="2001:470:9909:1:20c:42ff:fe52:941/64"]
/ipv6 address set $tmp2 advertise=no
/ipv6 address set $tmp2 advertise=yes
# Обновить маршрут по умолчанию
/ipv6 route remove [/ipv6 route find dst-address="2000::/3"]
/ipv6 route add comment="" disabled=no distance=1 dst-address=2000::/3 gateway=2001:470:1f0a:9bc::1 scope=30 target-scope=10
:log info "Обновление конечного пункта туннеля завершено. $url"
:set lastheip $pubip
} else={
:log info "HE: Обновление туннеля не требуется."
}
Собрать этот скрипт заняло у меня около 3 часов, но он действительно работает!!! И да, я знаю, что он не очень красивый. Есть две вещи, которые меня особенно раздражают: 1.) Мне приходится объявлять свой маршрутизируемый префикс IPv6 сети снова, отключая и снова включая его на интерфейсе, подключенном к моему ПК. В противном случае моя машина с Windows 7 не заметит публичные IPv6 адреса на этой ссылке (автоматическое обнаружение). 2.) Мне приходится удалять и повторно добавлять маршрут IPv6 по умолчанию. Без этого хака я не смогу добраться до каких-либо IPv6 адресов, кроме моего маршрутизатора Mikrotik. Есть ли у кого-нибудь какие-нибудь идеи, что я могу делать не так? Мне также было бы интересно узнать о вашем опыте работы с "новым" интернет-протоколом. Есть ли у кого-нибудь здесь, кто управляет более крупной сетью IPv6?
Привет с Германии,
Rabbit@Net
Теперь IPv6 готов (в каком-то смысле)
