Что такое 6rd в роутере

Что такое 6rd в роутере

Настройка туннеля крайне проста на вашем сервере или wifi роутере. Единственным условием является наличие прямого (статического) IP адреса от вашего провайдера. Его всегда можно заказать или попросить у вашего провайдера. Сайт туннельного брокера IPv6 IP4Market автоматически видит Ваш IPv4 адрес и вносит его в базу. Система назначает пользователю сеть IPv4 /48 из своего пула и инкапсулирует весь приходящий на в нее трафик в IPv4 и отправляет на IP адрес пользователя. Роутер или компьютер пользователя извлекает пакеты IPv6 и передает их в сеть пользователя или систему.

Вторая сеть предназначена для всех устройств пользователя расположенных за роутером. Ее нужно просто вписать в настройки роутера.

Настройка IPv6 туннеля

При регистрации выделяются номера сетей:

Обычно это:
network: 2a03:e2c0:1dc:5555::
prefix: 64

IPv6 Клиента: 2a03:e2c0:1dc::2/64
указать его как Tunnel Client IPv6 адрес

Чтобы был резолв доменов необходимо указать также DNS сервера, для примера мы берем сервера публичные сервера Google

IPv6 ДНС:
2001:4860:4860::8888
2001:4860:4860::8844

Также есть DNS v6 адреса от Yandex-а

Пример для настройки Mikrotik

Пример настройки IPv6 туннеля на прошивке TOMATO для wifi роутеров

Пример того как выглядит настройка:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Я не разобрался! Что мне делать?

Источник

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Введение в IPv6 адреса: как пользоваться и как исследовать сеть (часть 1)

Оглавление: Компьютерные сети

6. Канальный уровень передачи данных

7. Маршрутизация данных

8. Служебный протокол ICMP

10. Настройка сетевых подключений в командной строке Linux

11. Определение проблем работы сети

12. Туннелизация

Могут ли роутеры и компьютеры одновременно работать с IP и IPv6

IPv6 — это новая версия протокола IP. IPv6 сети, оборудование и программное обеспечение с поддержкой IPv6 распространены уже довольно широко — по крайней мере, в некоторых странах.

Сейчас, когда IP и IPv6 протоколы работают вместе, это приводит к существованию фактически двух параллельных сетей. Например, роутер моего Интернет-провайдера поддерживает IPv6 и IP. Если я обращаюсь к сайту, у которого есть IPv6 адрес (большинство сайтов), то мой запрос и ответ идёт по сетям (узлам) с поддержкой IPv6. Если я обращусь к сайту, у которого только IP адрес, то мой запрос и ответ на него может пойти по другому маршруту.

При анализе сети, допустим, с помощью Wireshark или tcpdump можно пропустить половину или даже больше трафика, если забыть про IPv6! То есть в качестве фильтра отображения пакетов в Wireshark вы введёте (обычный фильтр для показа трафика IP протокола):

То вы увидите примерно такое:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Но если ввести такой фильтр

То картина изменится кардинально (обращаю внимание, что это тот же самый трафик), окажется, что компьютер подключается ещё и к совершенно другим хостам:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

При анализе сети, при настройке фильтров отображения по IP, при выполнении атак (например, ARP и DNS спуфинг в локальной сети), нужно помнить про IPv6!

Ещё раз: IP и IPv6 это две параллельные сети, которые не особо связаны друг с другом (хотя одно и то же оборудование может поддерживать работу с обоими протоколами). В результате при настройке сети, например, файервола, нужно отдельно сделать настройки для протокола IP, а затем делать такую же настройку IPv6. Поскольку это разные сети, есть шанс, что системный администратор настроил их по-разному, что даёт лазейки для выполнения атак или обхода ограничений с использованием IPv6. Реальный пример я описывал здесь (краткий пересказ: у отечественного VPS хостера ВНЕЗАПНО для клиентов сломался доступ к DNS серверам Google. При этом каждому VPS серверу прилагается 3 бесплатных IPv6 адреса. В дополнении к существующим записям DNS серверов, я добавил ещё парочку IPv6 адресов DNS Google в настройки и всё заработало! Видимо, при блокировке доступа, произошло именно это — администратор сети забыл (не посчитал нужным) позаботиться об IPv6 сети…)

IPv6 адреса могут пригодиться при исследовании локальных сетей Интернет-провайдеров, стоит попробовать использовать IPv6 для обхода Captive Portal (перехватывающих порталов) и других ограничений сети, про IPv6 нужно помнить при анализе трафика на своём компьютере и в локальных сетях, либо наоборот для увеличения скрытности своего пребывания (в надежде, что в настройках логирования трафика не упомянут IPv6 или что геолокация по IPv6 сейчас в зачаточном состоянии (по крайней мере, в публичных базах данных)).

Кстати про блокировки, насколько я понимаю (поправьте, если ошибаюсь), в реестре РКН ведь IPv6 отсутствуют вовсе.

Эта статья поможет вам сделать первые шаги по использованию IPv6 адресов с популярными программами.

Структура IPv6 адреса

Ниже приведены примеры правильных IPv6 адресов:

Они, мягко говоря, разные. Давайте разберёмся, как такое возможно.

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

Шестнадцатеричные числа записываются с помощью цифр от 0 до 9 и с помощью букв от a до f.

Полная запись может быть сокращена используя несколько методов нотации, к примеру, адрес 2001:0db8:0000:0000:0000:8a2e:0370:7334 равнозначен адресу 2001:db8::8a2e:370:7334.

Кстати, ведь IP адреса тоже поддерживают сокращённую запись, к примеру, следующая команда прекрасно будет работать:

В результате будет выполнен пинг адреса 127.0.0.1, который в сокращённом виде представляет собой 127.1.

У IPv6 адресов в каждом сегменте 16 бит информации, на английском языке эти сегменты называют hextet или hexadectet. Всего 8 сегментов по 16 бит информации, получается, что для записи IPv6 адресов используется 8*16=128 бит.

Как уже было сказано выше, в IPv6 адресах числа в группах записываются в виде шестнадцатеричных чисел, а не в виде десятеричных, как в IP. Кстати, если запись была бы в виде десятичных чисел, то в каждом сегменте были бы числа от 0 до 65535 (это 2 16 ). Что касается шестнадцатеричных чисел, то для записи 16 бит информации нужно число длиной до четырёх символов, поэтому получается, то размер раздела составляет 4 символа, но может быть меньше, поскольку нули в начале числа писать необязательно. То есть если там должно быть число 00a1, то можно записать просто a1 — это первый способ сокращения записи IPv6 адресов.

Если в группе число равно 0 (то есть четыре нуля), то записывается один ноль.

Если групп с нулями несколько подряд, то независимо от количества нулей вся эта группа записывается как идущие два подряд двоеточия (::). Последнее сокращение можно использовать в одном IPv6 адресе только один раз, даже если имеется несколько групп с нулями. Если групп с нулями несколько, то заменяется только самая продолжительная из них. Если имеется две группы с нулями одинаковой длины, то заменяется та, которая идёт первой, то есть более левая.

Пример использования этих правил:

Начальный адрес: 2001:0db8:0000:0000:0000:ff00:0042:8329

После удаления всех начальных нулей в каждой группе: 2001:db8:0:0:0:ff00:42:8329

После пропуска последовательных сегментов с нулями: 2001:db8::ff00:42:8329

Петлевой адрес 0000:0000:0000:0000:0000:0000:0000:0001 используя правила сокращения можно сократить до ::1

Вернёмся к адресам из примеров выше:

Как мы уже выяснили, это петлевой адрес 0000:0000:0000:0000:0000:0000:0000:0001.

2a02:6b8:a::a

Здесь пропущено несколько секций с последовательными нулями. Сколько именно? Это можно узнать исходя из следующего правила: всего должно быть 8 секций, а имеется только 4, значит, пропущено 4 секции, то есть в полном виде число должно выглядеть так:

2a02:f680:1:1100::3d60

В этом адресе 5 сегментов, а должно быть 8, значит пропущено 3, запись адреса в полном виде:

Или вместе со всеми нулями:

2604:a880:800:c1::2ae:d001

В этом адресе 6 сегментов, а должно быть 8, следовательно, полная запись этого адреса:

2001:db8:11a3:9d7:1f34:8a2e:7a0:765d

В этом адресе 8 сегментов и нет двух двоеточий подряд — следовательно, это и есть полная запись адреса, разве что, опущены начальные нули:

Надеюсь, эти простые упражнения помогли вам «наметать глаз» и научиться узнавать IPv6 адреса.

Как узнать, у меня IPv6 адрес или нет? Как узнать свой IPv6 адрес

С IPv6 адресами в этом смысле проще — их настолько много, что потребность в NAT отпадает — можно каждому клиенту раздать по персональному IPv6 адресу.

Но тут возникает другое затруднение. Давайте посмотрим вместе. В Windows для вывода своих IP и IPv6 адресов в командной строке выполните команду:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

В Linux для просмотра своих IP и IPv6 адресов поможет команда:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Здесь IPv6 адреса вместе с масками подсети перечислены в строках:

Мы рассмотрим зарезервированные диапазоны IPv6 адресов чуть позже, забегая вперёд скажу, что глобальные адреса в настоящее время могут начинаться только на 2 или на 3 (другие пока просто не раздаются). Но даже при таком критерии, в примерах выше в каждой операционной системе есть по два адреса, которые начинаются с двоек — какой именно из них ваш внешний IPv6?

Самый простой вариант — вновь проверить с помощью внешнего сервиса, но нужно понимать, что если сайт, на который вы заходите, чтобы узнать свой IP адрес, не настроен на работу с IPv6, то он покажет только ваш IP, но никак не сможет показать ваш IPv6. Сервис на SuIP.biz имеет поддержку IPv6 и покажет ваш IPv6 адрес, если ваш Интернет-провайдер и ваше оборудование (компьютер и роутер) поддерживают IPv6.

Чтобы узнать, есть ли у вас поддержка и свой IPv6 адрес, перейдите на страницу: https://suip.biz/ru/?act=myip

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Если у вас есть IPv6, то он будет показан. Если поддержка IPv6 отсутствует, то будет показан только ваш IP.

Зарезервированные IPv6 адреса

В этом разделе рассмотрим диапазоны IPv6 адресов для целевого назначения, чтобы мы могли сразу отфильтровывать их из многочисленных IPv6 адресов сетевых интерфейсов.

У IP также есть зарезервированные диапазоны адресов: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, 100.64.0.0/10 и ещё несколько, полный список найдёте здесь.

Специальные диапазоны IPv6 адресов также имеются. Рассмотрим таблицу «Специальные блоки адресов IPv6»:

Блок адресов (CIDR)Первый адресПоследний адресКоличество адресовИспользованиеЦель
::/0::ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 128МаршрутизацияМаршрут по умолчанию. Смотрите 0.0.0.0 в IPv4.
::/128::1Программное обеспечениеНеопределённый адрес.
::1/128::11ХостПетлевой (Loopback) адрес на локальный хост. Смотрите 127.0.0.0/8 в IPv4
::ffff:0:0/96::ffff:0.0.0.0::ffff:255.255.255.2552 128−96 = 2 32 = 4294967296Программное обеспечениеIPv4 mapped addresses.встроенный IPv4. Нижние 32 бита это адрес IPv4. Также называется IPv4-совместимым IPv6 адресом. Устарел и больше не используется.
::ffff:0:0:0/96::ffff:0:0.0.0.0::ffff:0:255.255.255.2552 32Программное обеспечениеIPv4 translated addresses.Адрес IPv4, отображённый на IPv6. Нижние 32 бита — это адрес IPv4 для хостов, не поддерживающих IPv6.
64:ff9b::/9664:ff9b::0.0.0.064:ff9b::255.255.255.2552 32Глобальный ИнтернетIPv4/IPv6 translation. Зарезервирован для доступа из подсети IPv6 к публичной сети IPv4 через механизм трансляции NAT64[13][14]
100::/64100::100::ffff:ffff:ffff:ffff2 64МаршрутизацияDiscard prefix.
2001::/322001::2001::ffff:ffff:ffff:ffff:ffff:ffff2 96Глобальный ИнтернетЗарезервирован для туннелей Teredo в RFC 4380
2001:20::/282001:20::2001:2f:ffff:ffff:ffff:ffff:ffff:ffff2 100Программное обеспечениеORCHIDv2.
2001:db8::/322001:db8::2001:db8:ffff:ffff:ffff:ffff:ffff:ffff2 96ДокументацияАдреса для использования в документации и примерах исходного кода.
2002::/162002::2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 112Глобальный ИнтернетЗарезервирован для туннелей 6to4 в RFC 3056 (устарело).
fec0:/10feff::fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 118Site-local (Частные сети))Помечен как устаревший в RFC 3879 (Аналог внутренних сетей 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16)
fc00::/7fc00::fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 121Частные сетиУникальные локальные адреса. Диапазон пришёл на смену Site-Local
fe80::/10fe80::febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 118LinkLink-local address. Аналог 169.254.0.0/16 в IPv4
ff00::/8ff00::ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff2 120Глобальный ИнтернетМногоадресные адреса

Как видно из таблицы, адреса, которые начинаются на нули или на f — являются локальными, либо предназначены для конкретных целей.

Глобальные IPv6

Соответствуют публичным IPv4-адресам. Могут находиться в любом не занятом диапазоне. В настоящее время региональные интернет-регистраторы распределяют блок адресов 2000::/3 (с 2000:: по 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF).

Это означает, что глобальными сейчас являются только IPv6 адреса, которые начинаются на «2» или на «3».

Как видно на скриншотах выше, сетевым интерфейсам присвоено более чем один IPv6 адрес. Для IPv6 это является нормой, хотя, к примеру, у меня на VPS сервере у сетевого интерфейса только один IPv6 адрес и этого хватает для подключения и функционирования сайта.

У одного сетевого интерфейса может быть много IPv6 адресов, по умолчанию, у меня в Linux это максимум 16:

Зачем так много IPv6 одному интерфейсу? Каждый интерфейс IPv6 имеет локальный IP-адрес. Если интерфейс также может обмениваться данными с более крупной сетью (например, через Интернет), он также имеет глобальный адрес. Это как минимум два адреса. И если хост находится за многосетевым подключением к Интернету, он, вероятно, имеет ещё больше адресов.

В общем, IPv6 у одного компьютера может быть много — и это норма. Глобальными являются адреса, которые начинаются на двойку или на тройку.

Как узнать IPv6 адрес сайта

IP адрес сайта храниться в A записях, а IPv6 адрес сайта хранятся в записях AAAA (смотрите Введение в DNS терминологию, компоненты и концепции).

В Windows IPv6 адрес сайта можно узнать командой nslookup:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Если у сайта есть IPv6 адрес, то он будет выведен вместе с IP адресами.

В Linux также можно использовать команду nslookup:

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Можно использовать команду host:

Команда dig также умеет показывать IPv6 адреса, но по умолчанию выводит данные только для A записи, поэтому нужно указать вид записи явно:

Либо настроить вывод всех DNS записей данного домена:

Если вам не хочется возиться с утилитами командной строки, то можете воспользоваться онлайн сервисов, который покажет вам все IP и IPv6 адреса любого сайта: https://suip.biz/ru/?act=dig

Что такое 6rd в роутере. Смотреть фото Что такое 6rd в роутере. Смотреть картинку Что такое 6rd в роутере. Картинка про Что такое 6rd в роутере. Фото Что такое 6rd в роутере

Теперь, когда мы научились смотреть и узнавать IPv6 адреса, давайте научимся использовать их в различных приложениях и утилитах.

Сервис проверки, использую ли я IPv6 адреса

Сервис «Есть ли у меня IPv6» поможет вам определить, можете ли вы открывать сайты используя IPv6 или вам доступна только старая версия.

Источник

Практика IPv6 — домашняя сеть

Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.

Зачем IPv6?

Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?

Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.

Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.

У провайдера сеть 2a00:11d8:1201:32b0::/64 маршрутизируется через 2a00:11d8:1201:0:962b:18:e716:fb97 (то есть через мой компьютер). Заметим, это всё, что я получил. Никаких шлюзов и т.д. — тут начинается магия IPv6, и самое интересное. «Оно работает само».

Начнём с простого: настройка 2a00:11d8:1201:0:962b:18:e716:fb97 на eth2 для компьютера. Для удобства чтения все конфиги и имена файлов я оставлю на последнюю секцию.

Мы прописываем ipv6 адрес на интерфейсе eth2… И чудо, он начинает работать. Почему? Каким образом компьютер узнал, куда надо слать пакеты дальше? И почему /128 является валидной сетью для ipv6? Ведь /128 означает сеть размером в 1 ip-адрес и не более. Там не может быть шлюза!

Для того, чтобы понять, что происходит, нам надо взглянуть на конфигурацию сети (я вырежу всё лишнее, чтобы не пугать выводом):

# ip address show eth2 (обычно сокращают до ip a s eth2 )

Упс. А почему у нас на интерфейсе два адреса? Мы же прописывали один? Наш адрес называется ‘scope global’, но есть ещё и ‘scope link’…

Часть первая: scope

В процессе проектирования IPv6 вопрос ‘scope’ много и тщательно обсуждался, потому что исходное деление IPv4, даже с последующими дополнениями, явно не соответствовало потребностям реальных конфигураций. Например, если у вас объединяются две организации, в каждой из которых используется сеть 10.0.0.0/8, то вас ждёт множество «приятных» сюрпризов. В IPv6 решили с самого начала сделать множество градаций видимости, что позволило бы более комфортно осуществлять дальнейшие манипуляции.

Из всего этого на практике я видел использование только host/interface, link/local и global. В свете /64 и пусть никто не уйдёт обиженным, специально возиться с site-local адресами будет только параноик.

Второй важной особенностью IPv6 является официальное (на всех уровнях спецификаций) признание того, что у интерфейса может быть несколько IP-адресов. Этот вопрос в IPv4 был крайне запутан и часто приводил к ужасным последствиям (например, запрос получали на один интерфейс, а отвечали на него через другой, но с адресом первого интерфейса).

Так как в отличие от IPv4 у IPv6 может быть несколько адресов на интефрейсе, то компьютеру не нужно выбирать «какой адрес взять». Он может брать несколько адресов. В случае IPv4 сваливание на link-local адрес происходило в режиме «последней надежды», то есть по большому таймауту.

А в IPv6 мы можем легко и просто с самого первого момента, как интерфейс поднялся, сделать ему link local (и уже после этого думать о том, какие там global адреса есть).

Более того, в IPv6 есть специальная технология автоматической генерации link-local адреса, которая гарантирует отсутствие дублей. Она использует MAC-адрес компьютера для генерации второй (младшей) половинки адреса. Поскольку MAC-адреса уникальны хотя бы в пределах сегмента (иначе L2 сломан и всё прочее автоматически не работает), то использование MAC-адреса даёт нам 100% уверенность в том, что наш IPv6 адрес уникален.

Принцип довольно простой:

MAC-адрес eth2 — это 00:18:e7:16:fb:97, а локальный адрес ipv6 — F80:000218:e7ff:fe16:fb97. Да-да, именно так, как выделено жирным. Зачем было в середину всобачивать ff:fe — не знаю. Сам алгоритм называется modified EUI-64. Сам этот алгоритм очень мотивирован и полон деталей. С позиции системного администратора — пофигу. Адрес есть и есть. Интересным может быть, наверное, обратный алгоритм — из link-local узнать MAC и не более.

Итак, у нас на интерфейсе два адреса. Мы даже знаем, как появились они оба (один автоматически при подъёме интерфейса, второй прописали мы). Мы даже знаем, как система поняла, что адрес глобальный — он из «global» диапазона.

Но каким образом система узнала про то, кто его шлюз по умолчанию? И как вообще может жить /128?

Часть вторая, промежуточная: мультикасту мультикаст мультикастно мультикастит

Посмотрим на таблицу маршрутизации:

Что мы тут видим? Первое — говорит нам, что наш IPv6 адрес — это адрес нашего интерфейса eth2. Второе говорит, что у нас есть link-local сегмент в eth2. У обоих источник — это kernel.

А вот третье — это интрига. Это шлюз по умолчанию, который говорит, что весь трафик надо отправлять на fe80::768e:f8ff:fe93:21f0 на интерфейсе eth2, и источником информации о нём является некое «ra», а ещё сказано, что оно протухает через 1779 секунд.

Что? Где? Куда? Кто? За что? Почему? Зачем? Кто виноват?

Но перед ответом на эти вопросы нам придётся познакомиться с ещё одной важной вещью — multicast. В IPv4 muticast был этакой технологией «не от мира сего». Есть, но редко используется в строго ограниченных случаях. В IPv6 эта технология — центральная часть всего и вся. IPv6 не сможет работать без мультикаста. И без понимания этого многие вещи в IPv6 будут казаться странными или ломаться в неожиданных местах.

Кратко о типах трафика, возможно кто-то пропустил эту информацию, когда изучал IPv4:

Так вот, в IPv6 НЕТ БРОДКАСТОВ. Вообще. Вместо них есть мультикаст. И некоторые из мультикаст-адресов являются ключевыми для работы IPv6.

В практическом смысле это означает, что мы можем отправить бродкаст пинг всем узлам, или всем маршрутизаторам. Правда, нам для этого придётся указать имя интерфейса, в отношении которого мы интересуемся cоседями.

Мультикаст-групп (группой называют все узлы, которые слушают данный мультикаст-адрес) много. Среди них — специальная группа FF02::6A с названием «All-Snoopers». Именно этой группе и рассылаются routing advertisements. Когда мы хотим их получать — мы вступаем в соответствующую группу. Точнее не мы, а наш компьютер.

Часть третья: routing advertisements

В IPv6 придумали такую замечательную вещь — когда маршрутизатор рассылает всем желающим информацию о том, что он маршрутизатор. Рассылает периодически.

В отношении этого вопроса есть целый (всего один, что удивительно) RFC: tools.ietf.org/html/rfc4286, но нас интересует из всего этого простая вещь: маршрутизатор рассылает информацию о том, что он маршрутизатор. И, может быть, чуть-чуть ещё информации о том, что в сети происходит.

Вот откуда наш компьютер узнал маршрут. Некий маршрутизатор сказал ему «я маршрутизатор». И мы ему поверили. Почему мы выбрали именно его среди всех окружающих маршруштизаторов (см ответ на пинг на FF02::2 выше) мы обсудим чуть дальше. Пока что скажем, что этот «настоящий» маршрутизатор правильно себя анонсировал.

Таким образом, происходит следующая вещь:

У нас адрес 2a00:11d8:1201:0:962b:18:e716:fb97/128, и ещё есть link-local. Мы слышим мультикаст от роутера, верим ему, и добавляем в таблицу маршрутизации нужный нам адрес как default. С этого момента мы точно знаем, что адрес в сети. Таким образом, отправка трафика в интернет больше не проблема. Мы генерируем пакет с src=2a00:11d8:1201:0:962b:18:e716:fb97 и отправляем его на шлюз по умолчанию, который в нашем случае — fe80::768e:f8ff:fe93:21f0. Другими словами, мы отправляем трафик не своему «шлюзу» в сети, а совсем другому узлу совсем по другому маршруту. Вполне нормальная вещь как для IPv6, так и для IPv4, правда, для IPv4 это некая супер-крутая конфигурация, а для IPv6 — часть бытовой повседневности.

Въедливый читатель может спросить несколько вопросов: что значит «написано на интерфейсе»? И что значит «neighbor discovery»?

Вопросы справедливые. Для начала попробуем выяснить, какие узлы у нас есть в сети из подсети 2a00:11d8:1201::/64

Для того, чтобы посмотреть router advertisement на интерфейсе нам поднадобится программа radvdump из пакета radvd. Она позволяет печатать анонсы, проходящие на интерфейсах, в человеческом виде. Заметим, сам пакет radvd нам ещё пригодится (так как его демон — radvd позволяет настроить анонсирование со своих интерфейсах).

Итак, посмотрим, что аносирует нам Tiera:

radvdump eth2 (и подождать прилично, ибо анонсы не очень часто рассылаются)

Таким образом всё просто — адрес мы указали, маршрутизатор нам «себя» прислал, ядро маршрут обновило. Вуаля, у нас IPv6 на компьютере заработал.

Белый IPv6-адрес для каждого в домашней сети

Получить IPv6 адрес для компьютера — этого маловато будет. Хочется так, чтобы каждое мобильное устройство сидело не за позорным NAT’ом, а голой задницей с белым адресом в Интернете. Желательно ещё при этом так, чтобы злые NSA/google не могли по хвостику моего адреса (в котором закодирован MAC) отслеживать мои перемещения между разными IPv6-сетями (хотя в условиях установленного play services эта параноидальность выглядит наивной и беззащитной).

Но, в любом случае, у нас задача раздать интернет дальше.

Так как fb97 уже является адресом моего компьютера, настройка машрутизации плёвое дело:

… и у нас через пол-часика полностью отваливается IPv6 на компьютере? Почему? Кто виноват?

Оказывается, линукс не слушает routing advertisement, если сам является маршрутизатором. Что, в общем случае, правильно, потому что если два маршрутизатора будут объявлять себя маршрутизаторами и слушать маршруты друг друга, то мы быстро получим простейшую петлю из двух зацикленных друг на друга железных болванов.

Однако, в нашем случае мы всё-таки хотим слушать RA. Для этого нам надо включить RA силком.

Заметим, важно, что мы слушаем RA не всюду, а только на одном интерфейсе, с которого ожидаем анонсы.

Теперь маршрутизация работает, маршрут получается автоматически, и можно на каждом мобильном устройстве вручную прописать IPv6 адрес и вручную указать IPv6 шлюз, и вручную прописать IPv6 DNS, и вручную… э… слишком много вручную.

Если мне выдали настройки автоматом, то я так же хочу раздавать их дальше автоматом. Благо, dhcpd отлично справляется с аналогичной задачей для IPv4.

Прелесть IPv6 в том, что мы можем решить эту задачу (раздачу сетевых настроек) без каких-либо специальных сервисов и в так называемом stateless режиме. Главная особенность stateless режима состоит в том, что никто не должен напрягаться и что-то сохранять, помнить и т.д. Проблемы с DHCP в IPv4 чаще всего вызывались тем, что один и тот же адрес выдавали двум разным устройствам. А происходило это из-за того, что злой админ стирал/забывал базу данных уже выданных аренд. А ещё, если железок много и они забывают «отдать аренду», то адреса заканчиваются. Другими словами, stateful — это дополнительные требования и проблемы.

Для решения тривиальной задачи «раздать адреса» в IPv6 придумали stateless режим, который основывается на routing advertisement. Клиентскую часть мы уже видели, теперь осталось реализовать серверную, дабы накормить IPv6 планшетик.

Настройка анонсов маршрутизации (radvd)

Для настройки анонсов используется специальная программа-демон — radvd. С утилитой из её комплекта (radvdump) мы познакомились чуть выше. Прелесть утилиты в том, что она выводит не просто полученные данные, а готовый конфиг radvd для рассылки аналогичных анонсов.

Итак, настраиваем radvd:

Главное тут — префикс и указание на AdvAutonomous.

Запускаем демона, берём ближайший ноутбук (обычная бытовая убунта с обычным бытовым network-manager’ом), рррраз, и получаем…

Откуда у нас столько ipv6 мы поговорим в следующем разделе, а пока что отметим, что адреса сконфигурировались автоматически. И маршруты у нас такие:

Надеюсь, читатель уже вполне понимает, что происходит. Однако… Чего-то не хватает. У нас нет dns-resolver’а. Точнее есть, но выданный dhcpd по IPv4. А у нас пятиминутка любви к IPv6, так то ресолвер нам тоже нужен IPv6.

Тяжело расчехляя aptitude ставим dhcpv6 и прописываем опции nameserver Как бы не так!

К счастью, IPv6 очень долго продумывался и совершенствовался. Так что мы можем решить проблему без участия DHCP-сервера. Для этого нам надо добавить к анонсу маршрута ещё указание на адреса DNS-серверов.

RDNSS в RA

Описывается вся эта примудрость в RFC 6106. По сути — у нас есть возможность указать адрес рекурсивного DNS-сервера (то есть «обычного ресолвера») в анонсе, распространяемом маршрутизатором.

По большому счёту это всё, что мы хотим от DHCP, так что DHCP там тут не нужен. Компьютеры сами делают себе адреса непротиворечивым образом (то есть для исключения коллизий), знают адреса DNS-серверов. Интернетом можно пользоваться.

Для этого мы дописываем в конфиг radvd соответствующую опцию:

(полный конфиг — см. в конце статьи).

Пробуем подключиться снова — и, ура, всё работает.

google.com выбран был не случайно. Сервисы гугля (в немалой степени youtube) — это едва ли не основной источник IPv6 трафика в настоящий момент. Второй источник — торренты, где можно увидеть аж 5-10% пиров в IPv6 варианте.

На этом рассказ можно было закончить, если бы не ещё одна важная деталь — что за третий IPv6-адрес на интерфейсе ноутбука? И что это за temporary dynamic?

Privacy extension

Как я уже упомянул выше, автоматическое конфигурирование IPv6-адреса на основе MAC-адреса сетевого адаптера хорошо всем, кроме того, что создаёт практически идеальное средство для отслеживания пользователей в сети. Вы можете брать любые браузеры и операционные системы, использовать любых провайдеров (использующих IPv6, так что это всё пишется с прицелом на будущее) — но у вас будет один и тот же MAC-адрес, и любой гугуль, NSA или просто спамер смогут вас отслеживать по младшим битам вашего IPv6 адреса. Старшие будут меняться в зависимости от провайдера, а младшие сохраняться как есть.

Для решения этой проблемы были придуманы специальные расширения для IPv6, называющиеся privacy extensions (RFC 4941). Как любое RFC, его чтение — это обычно признак отчаяния, так что по сути этот стандарт описывает как с помощью шаманства и md5 генерировать случайные автоконфигурируемые адреса.

Хост, в нашем случае обычная убунта на обычном ноутбуке, генерирует штатным образом IPv6 адрес из анонса маршрутизатора. После этого она придумывает себе другой адрес, проверяет, что этот адрес не является зарезервированным (например, нам так повезло, и md5 хеш сгенерировал нам все нули — вместо того, чтобы трубить об этом на всех углах, этот изумительный md5 хеш будет выкинут и вместо него будет взят следующий), и, главное, проверяет, что такого адреса в сети нет. Для этого используется штатный механизм DAD (см ниже). Если всё ок, то на интерфейс назначается новосгенерированный случайный адрес, и именно он используется для общения с узлами Интернета. Хотя наш ноутбук с тем же успехом ответит на пинг и по основному адресу.

Этот адрес периодически меняется и он же меняется при подключении к другим IPv6-сетям (и много вы таких знаете в городе. вздох). В любом случае, даже если мы намертво обсыпаны куками и отпечатками всех браузеров, всё-таки маленький кусочек сохраняемой приватности — это лучше, чем не сохраняемый кусочек.

Duplicate Address Detection

Последняя практически важная фича IPv6 — это DAD. Во времена IPv4 на вопрос «а что делать, если адрес, назначаемый на хост, уже кем-то используется в сети» отвечали «а вы не используйте адреса повторно и всё будет хорошо».

На самом деле все вендоры реализовывали свою версию защиты от повторяющегося адреса, но работало это плохо. В частности, линукс пишет о конфликте IPv4 адресов в dmesg, Windows — в syslog… Event… Короче, забыл. В собственную версию журнала и показывает жёлтенко-тревожненький попапик в трее, мол, бида-бида. Однако, это не мешает использовать дублирующийся адрес, если он назначен статикой, и приводит к головоломным проблемам в районе ARP и времени его протухания (выглядит это так: с одного компьютера по сети по заданному адресу отвечает сервер, а с другого, по тому же адресу, допустим, залётный ноутбук, и они ролями периодически меняются).

Многие DHCP-сервера (циски, например), даже имели специальную опцию «проверять пингом» перед выдачей адреса.

Но всё это были доморощенные костыли для подпирания «а вы не нажимайте, больно и не будет».

Конфиги

Эту часть большинство пропустит не читая, ну, такова судьба конфигов — быть писанными, но не читанными.

Используется ли IPv6?

У меня обычный домашний компьютер. Чуть-чуть raid, LVM XFS, BTRFS, LUCKS, свой почтовый и веб-сервера, dns-сервер и т.д. Я подключен к обычному домашнему провайдеру с IPv6.

Вот статистика использования интернета за четыре дня. Собиралась она простым способом:

Если серьёзно, то столь значительные достижения IPv6 (только представьте себе — почти гигабайт трафика в день) большей частью объясняются ютубом и прочими сервисами гугла. Ещё небольшую долю IPv6 принёс пиринг, причём там львиная доля людей — это всякие туннели и teredo (то есть ненастоящие IPv6, использующиеся от безысходности).

С другой стороны, этот показатель почти в три раза больше моего прошлого замера (полтора года назад), когда доля IPv6 едва-едва переваливала за полтора процента.

Источник

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

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