Багато статей є про те як налаштувати IPv6 у RouterOS через тунель-брокера. Але мало де написано про те як налаштувати IPv6 у RouterOS коли підключення відбувається за схемами SLAAC, SLAAC+DHCPv6… Спробуємо виправити цей недолік.
Невелике зауваження, наразі налаштовано та протестовано RouterOS версії 6.36.3. Рік тому була інша версія і синтаксис щодо налаштувань, з того часу, дещо змінився.
Для ND встановлюємо внутрішній інтерфейс. Кажемо про те, що маємо оповіщати в мережу наявні DNS. Опції managed-address-configuration та other-configuration не встановлюємо, звісно якщо не хочемо реалізувати схему відмінну від чистого SLAAC.
Про те, що уявляє з себе функціонал SLAAC, SLAAC+DHCPv6 та DHCPv6 можна прочитати, наприклад, тут.
Так от, наш провайдер надає нам IPv6 за схемою SLAAC+DHCPv6: надає нам /64 на підключенні та делегує якусь мережу, щоб ми могли її вже роздати у себе. Ми будемо у себе реалізовувати лише функціонал SLAAC.
Невелике зауваження, наразі налаштовано та протестовано RouterOS версії 6.36.3. Рік тому була інша версія і синтаксис щодо налаштувань, з того часу, дещо змінився.
Налаштовуємо RouterOS:
/ipv6 nd set [ find default=yes ] advertise-dns=yes interface=bridge-local ra-interval=1m40s-3m20s /ipv6 dhcp-client add add-default-route=yes interface=ether1-gateway pool-name=v6pool request=address,prefix /ipv6 address add eui-64=yes from-pool=v6pool interface=bridge-local /ipv6 address add address=fec0:0:0:ffff::1/10 advertise=no interface=bridge-local /ipv6 address add address=fec0:0:0:ffff::2/10 advertise=no interface=bridge-local /ipv6 address add address=fec0:0:0:ffff::3/10 advertise=no interface=bridge-local
ND
За замовченням ND interface дивиться у all, тобто на всі інтерфейси. Ми ж не хочемо роздавати той сервіс, що отримаємо, назовні, хочемо роздати тільки своїм абонентам, тому вносимо відповідні правки у конфігурацію за замовченням. Так як видалити її не можна то робиться саме встановлення властивостей у наявну конфігурацію. Можна було б зробити її неактивною й додати нову, але, як на мене, наведений шлях більш вірний.Для ND встановлюємо внутрішній інтерфейс. Кажемо про те, що маємо оповіщати в мережу наявні DNS. Опції managed-address-configuration та other-configuration не встановлюємо, звісно якщо не хочемо реалізувати схему відмінну від чистого SLAAC.
DHCPv6 клієнт
Далі, налаштовуємо dhcpv6 клієнта на зовнішньому інтерфейсі. Кажемо, що отримана інформація має використовуватися для встановлення маршруту за замовченням, а також має динамічно організуватися пул префіксів IPv6 які були делеговані нам від провайдера.IPv6 адреса на локальному інтерфейсі
Наступним кроком налаштовуємо внутрішній інтерфейс таким чином щоб він брав адрес з організованого пулу та формував його за eui-64. Хтось захоче інакше, скаже, що це небезпечно, не питання, можна й інакше:/ipv6 address add from-pool=v6pool address=::1/64 interface=bridge-local
Клієнти у локальнїй мережі
Зауваження щодо Windows
Якщо явно не вказати ОС Windows що треба використовувати IPv6-unicast DNS-сервери то за замовченням запити будуть відправлятися до спеціальних site-local адрес fec0:0:0:ffff::1, fec0:0:0:ffff::2 та fec0:0:0:ffff::3. Також DNS можна вказати вручну, використовуючи netsh.Підтримка fec0:0:0:ffff::1, fec0:0:0:ffff::2 та fec0:0:0:ffff::3
Підтримку адрес fec0:0:0:ffff::1, fec0:0:0:ffff::2 та fec0:0:0:ffff::3 можна організувати на Mikrotik, наприклад, так як наведено вище:/ipv6 address add address=fec0:0:0:ffff::1/10 advertise=no interface=bridge-local /ipv6 address add address=fec0:0:0:ffff::2/10 advertise=no interface=bridge-local /ipv6 address add address=fec0:0:0:ffff::3/10 advertise=no interface=bridge-local
Статичне встановлення DNS серверів
Також DNS-сервери для IPv6 можна встановити статично. Наприклад 6-to-4:та/або публічні google DNS:netsh interface ipv6 add dnsservers 10 index=1 2001:4860:4860::6464 netsh interface ipv6 add dnsservers 10 index=2 2001:4860:4860::64
або ж адреси які надає провайдер.netsh interface ipv6 add dnsservers 10 index=3 2001:4860:4860::8888 netsh interface ipv6 add dnsservers 10 index=4 2001:4860:4860::8844
Disabling RFC 4941 IPv6 Privacy Extensions in Windows
За замовченням Windows періодично генерить нову IPv6 адресу у разі чого деякі ресурси у мережі починають лаятись на те, що у користувача змінилася адреса і припиняють коректно працювати. Лікується це просто і не потребує перезавантаження:Але знов-таки eui-64…netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent netsh interface ipv6 set privacy randomizeidentifiers=disabled store=persistent
Зауваження щодо Linux
З Linux також все просто. Кажемо:І у налаштуваннях мережі кажемо, що для IPv6 налаштування мають отримуватися автоматично. Не забудьте про hop_limit! Чомусь у Debian-і за замовченням він був встановлений у 0, від чого, коли робився ping6, отримували повідомлення: "Time exceeded: Hop limit".sysctl net.ipv6.conf.eth0.accept_ra=1 sysctl net.ipv6.conf.eth0.autoconf-1 sysctl net.ipv6.conf.eth0.hop_limit=64