Рубрики
Mikrotik

mikrotik / IPv6 / he / туннельный брокер

Ссылки:

http://www.ipv6.org/ 
http://ru.wikipedia.org/wiki/IPv6
http://www.faqs.org/rfcs/rfcl752.html
https://habr.com/ru/post/253803/
https://habr.com/ru/post/254293/
https://he.net/ - туннельный брокер
https://www.artur.lv/kak-nastroit-ipv6-na-routere-zyxel/ - туннельный брокер

add mikrotik

0. Регистрируемся 
https://tunnelbroker.net/

1. Выбираем exemple config для нашей железки

Пример конфига что дает he.

/interface 6to4 add comment="Hurricane Electric IPv6 Tunnel Broker" disabled=no local-address=YOU_IPV4_ADDRESS mtu=1280 name=sit1 remote-address=HE_IPV4_ADDRESS
/ipv6 route add comment="" disabled=no distance=1 dst-address=2000::/3 gateway=YOU_IPV6_ADDRESS_TUNEL::1 scope=30 target-scope=10
/ipv6 address add address=HE_IPV6_TUNNEL::2/64 advertise=no disabled=no eui-64=no interface=sit1

Пример Mikrotik ipv6 default firewall:

# https://help.mikrotik.com/docs/display/ROS/Building+Your+First+Firewall

Создайте список адресов, из которого вы разрешаете доступ к устройству:
/ipv6 firewall address-list add address=fd12:672e:6f65:8899::/64 list=allowed

Защита роутера:
/ipv6 firewall filter
add action=accept chain=input comment="allow established and related" connection-state=established,related
add chain=input action=accept protocol=icmpv6 comment="accept ICMPv6"
add chain=input action=accept protocol=udp port=33434-33534 comment="defconf: accept UDP traceroute"
add chain=input action=accept protocol=udp dst-port=546 src-address=fe80::/16 comment="accept DHCPv6-Client prefix delegation."
add action=drop chain=input in-interface=sit1 log=yes log-prefix=dropLL_from_public src-address=fe80::/16
add action=accept chain=input comment="allow allowed addresses" src-address-list=allowed
add action=drop chain=input
/ipv6 firewall address-list
add address=fe80::/16 list=allowed
add address=ff02::/16 comment=multicast list=allowed

Защита локальной сети:
/ipv6 firewall filter
add action=accept chain=forward comment=established,related connection-state=established,related
add action=drop chain=forward comment=invalid connection-state=invalid log=yes log-prefix=ipv6,invalid
add action=accept chain=forward comment=icmpv6 in-interface=!sit1 protocol=icmpv6
add action=accept chain=forward comment="local network" in-interface=!sit1 src-address-list=allowed
add action=drop chain=forward log-prefix=IPV6

DNS DHCP OPTIONS

/ipv6 dhcp-server option
add code=23 name=dns-google value="'2001:4860:4860::8888'"
add code=23 name=dns-google2 value="'2001:4860:4860::8844'"

ADDRESESS IPV6

/ipv6 address
add address=IPV6_TUNEL::2 advertise=no interface=sit1
add address=IPV6_NET_NEW::1 interface=bridge-local
add address=fd00::1 advertise=no interface=bridge-local

ND

/ipv6 nd
set [ find default=yes ] advertise-mac-address=no disabled=yes managed-address-configuration=yes other-configuration=yes
add advertise-dns=no interface=bridge-corp other-configuration=yes
/ipv6 nd prefix default
set preferred-lifetime=1h valid-lifetime=2h
/ipv6 settings
set accept-router-advertisements=yes max-neighbor-entries=1024

Альтернативный DNS:

DNS Google	Базовый	2001:4860:4860::8888	
DNS Google	Базовый	2001:4860:4860::8844
DNS Google      Базовый	2a02:6b8::feed:0ff
DNS Google      Базовый 2a02:6b8:0:1:feed::0ff

DNS Яндекс      Безопасный	2a02:6b8::feed:bad
DNS Яндекс      Безопасный	2a02:6b8:0:1::feed:bad
DNS Яндекс      Семейный	2a02:6b8::feed:a11
DNS Яндекс      Семейный	2a02:6b8:0:1::feed:a11

Из книжки:

При использовании IPv6-адреса в URL необходимо заключать адрес в квадратные скобки:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/

Если необходимо указать порт, то он пишется после скобок:
http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/


128bit
32 шестнадцатеричных значения
: - хекстет
0000:0000:0000:0000:0000:0000:0000:0000


IP-адреса будут иметь длину 128 бит (а не 32 как в IPV4). 
При записи в традиционном формате IP-адрес будет выглядеть так:
abcd:0017:2ff:12aa:2222:783:00dd:1234

Очевидно, что такие записи неудобны на практике. 
Ради экономии места адреса IPv6 будут разбиваться символом : 
на группы шестнадцатеричных чисел (не более восьми групп), например, так:
abcd:17:2ff:12aa:2222:783:dd:1234

Чтобы не нужно было писать лишнего, используется символ ::, который является сокращенной формой для нескольких нулевых групп:
abcd:17:0:0:0:0:dd:1234 -> axd:17::dd:1234 
0:0:C:0:0:783:dd:1234 3 ->  ::783:dd:1234

Для localhost существует более компактная запись — ::1.

При отображении адресов IPv4 в формате IPv6 первые шесть групп являются нулевыми. 
Оставшиеся две группы можно записывать не только в шестнадцатеричной но и в более привычной десятичной системе:
Адрес IPv4:  ::110.111.112.113

В рамках перехода на IPv6 в течение нескольких лет будут совместно использоваться IPv4 и IPv6. 
Существуют различные методы, позволяющие передавать пакеты IPv6 по сетям IPv4 и наоборот.

Сокращение записи ipv6:


Правило номер 1:
Первое правила для сокращения записи IPv6-адресов — пропуск всех ведущих 0 в шестнадцатеричной записи. 
Это правило применяется только к ведущим нулям, а НЕ к последующим, иначе адрес будет записан неясно. 
Например, шестнадцатеричное число «ABC» может быть представлено как «0ABC» или «ABC0».

Например:
01AB можно представить как 1AB
09F0 можно представить как 9F0
0A00 можно представить как A00
00AB можно представить как AB
01AB = 1AB
09DF0 = 09DF0
0A00 = A00
00AB = AB


Правило номер 2:
Двойное двоеточие (::) может использоваться в адресе только один раз.
:: Может заменить все единичные не прерывные строки состоящие из нулей
:: Может применятся только один раз

Пример:
2001:0DB8:0000:0000:ABCD:0000:0000:1234
Неправильная запись ipv6 : 2001:0DB8::ABCD::1234
Возможные расширения неоднозначно записанных сжатых адресов:
2001:DB8::ABCD:0:0:0:1234
2001:DB8:0:0:ABCD::1234

Пример:
2001:0DB8:0000:0000:0000:0000:0000:ABCD
2001:DB8::ABCD

Маска сети в ipv6

!!! ipv6 нету маски используется \ вместо этого длина префикса
Провайдеры выдают сеть /48
Длина префикса от 0 - до 128
Стандартная длина префикса /64 (Можно использовать другой но windows хочет /64)

Существует три типа IPv6–адресов:

# Unicast (индивидуальный) – Служит для определения интерфейса на устройстве под управлением протокола IPv6
одноадресная рассылка (unicast) - один пк на другой 

# Multicast (Групповой) – Используется для отправки пакетов по нескольким адресам назначения 
(Заменил собой Broadcast адрес, имеется IPv6- адрес для всех узлов, который дает аналогичный результат.)
многоадресная рассылка (multicast) - на группу пк (iptv)

# Anycast (Произвольный) – Любой индивидуальный адрес, который может быть назначен нескольким устройствам. 
Пакет, отправляемый на адрес произвольной рассылки, направляется к ближайшему устройству с этим адресом.
адрес любого узла из группы (anycast) - любой адрес из группы 
Примечание. Протокол IPv6  не содержит адресов широковещательной рассылки (broadcast)


IPV6 отличие от IPV4

1. В IPv6 нету Broadcast ARP
Broadcast частично заменили Multicast адреса и адреса Link Local. 
ARP протокол заменен протоколом NDP;

2. В IPv6 нет технологии NAT, которая есть в IPv4. 
Смело спорьте с тем: кто скажет обратное. Экономия адресов в IPv6 не используется, адресов хватит на всех. 
Уровень безопасности, который обеспечивает NAT в технологии IPv4, заменен адресами Unique Local, 
но нельзя забывать, что безопасность должны обеспечивать межсетевые экраны - это их функция. 
Название Nat64 которое можете встретить в литературе про IPv6, идет речь о совместном использовании технологии IPv6, IPv4.

3. Благодаря Link Local адресам сетевые устройства могут общаться в пределах одного локального канала и только в пределах его.

4. Появилась фича которая называется: «проверка уникальности IPv6 адреса». 
Используется в DHCPV6, полный процесс будет описан чуть ниже. 
Суть ее в том, что после назначения ip-адреса устройству он посылает icmp запрос, destination выбирает данный ему адрес, 
если приходит ответ — то его адрес не уникален и нужно получать новый IPv6 адрес.

5. Появились адреса anycast. 
В сети могут существовать несколько хостов с абсолютно идентичными IPv6-адресами. 
Вариант использования я выявил один, в случае, когда находятся три балансировщика около сервера. 
Им дается один и тот же адрес, который называется anycast. 

6. Вендоры, такие как Cisco или Juniper, полностью готовы к переходу на IPv6, дело остается за операторами связи и ИТ-компаниями.

Область действия IPV6 адресов:

Область действия IPV6 адресов:
Глобальные (global unicast address)
- Действуют в интернет
- распределяются IANA

Локальные (unique local address)
- Не маршрутизируются в интернет
- Можно использовать без обращения в IANA
- Документ RFC4193

Локальные канал связи (link-local address)
- Не маршрутизируются

Локальные адреса площадки (site local address)
- Не используются и исключены из стандарта (RFC 3879)

Начальные цифры адресов IPv6:

Глобальные: 2 или 3
Локальный: FD
Локальный канал связи: FE80
Групповой: FF

Специальные адреса IPv6:

::/128 - текущий хост
::/0 - маршрут по умолчанию
::1/128 - обратная петля (loopback)

Зарезервированные адреса многоадресной рассылки(multicast):

Multicast - ff00::/8 - адреса групповой рассылки
FF02::1 - все устройства
FF02::2 - все маршрутизаторы
FF02::1:2 - все DHCPv6 серверы
FF02::1:FFxx:xxxx/104 - solicited-node multicast, группа узлов, у которых совпадают последние 24 бита (xx:xxxx) из unicast адреса
FF02::5 - группа маршрутизаторов с протоколом OSPFv3
FF02::6 - группа маршрутизаторов с протоколом OSPFv3

%eth0 - интерфейс eth0
ping6 ff02::1%eth0

ipv6 SLAAC \ NDP \ Neighbor Discovery \ Router Discovery

128
0. Префикс IPv6 = 64бит (Эту часть отдает DHCPv6)
1. Идентификатор интерфейса = 64бит \ (ff:fe в середину MAC) (Эта часть генерируется клиентом при EUI-64)



Neighbor Discovery
(знаю адрес IPv6 соседа, но не знаю канальный: как найти?)
Neighbor Solicitation (NS) - запрос канального адреса (LLA или ::(DAD) -> SNMA)
Neighbor Advertisement (NA) - ответ на такой запрос (LLA -> LLA или FF02::1(DAD))
тут же работают механизмы Duplicate Address Detection (DAD) и Neighbor UnreachabilityDetection (NUD)

Router Discovery
(хочу получить информацию о роутерах)
Router Solicitation (RS) - запрос информации о роутерах (:: -> FF02::2)
Router Advertisement (RA) - оповещение по расписанию о настройках IPv6 и ответ, если был принудительный запрос (LLA -> FF02::1)

ND - udp port 547,546


Как получить адрес ipv6?

На роутере настроить radvd и SLAAC!

Включить интерфейс
Генерируется Link-Local Address и рассылается сообщение Neighbor
Solicitation на адрес Solicited-node Multicast для Duplicate Address Detection (адрес в состоянии tentative);
Рассылается сообщение Router Solicitation на адрес ff02::2;
Роутер отвечает на Link-Local Address, что есть такие-то доступные префиксы и настройки;
Генерируется Global Unicast Address на основе полученного префикса и
рассылается сообщение Neighbor Solicitation на адрес Solicited-node Multicast
для Duplicate Address Detection (адрес в состоянии tentative)
Применяются настройки полученные от роутера
Если Duplicate Address Detection отрабатывает успешно, то адреса переходят в состояние preferred.

Для чего нужен DHCPv6?

Что бы раздавать опции!
DHCPv6 нужен, т.к. в SLAAC ограничен набор предлагаемых опций.
Если вы хотите, к примеру, загрузку по сети или передавать опции NTP, то вам нужен полноценный сервер DHCPv6.
Варианты:
stateless DHCPv6 = SLAAC (сеть, префикс и шлюз) + DHCPv6 (опции);
stateful DHCPv6 (клиент принципиально не слушает RA от роутера и обращается к серверу DHCPv6).

radvd
Если сообщения RA рассылаются, то:
Autonomous = off (не назначаем адрес из префиксов RA)
Managed = on (запрашиваем адрес у сервера DHCPv6)
OtherConfig = on (получаем опции у сервера DHCPv6)
Если RA не рассылаются, то клиент всегда может самостоятельно обратиться к серверу DHCPv6 по FF02::1:2
Помним, что клиент отправляет сообщение с порта 546/UDP серверу на порт 547/UDP.
В идеальном случае, DHCPv6 сервер ещё добавляет соответствующие записи в зону DNS.