На чтение 8 мин Просмотров 33.5к.
Виталий Леонидович Черкасов
Системный администратор, инженер компьютерных систем.
Протокол IPv4 с 1981 года используется для обеспечения работы интернета и локальных сетей. Его основной недостаток – это сравнительно небольшое количество подключенных компьютеров, так как количество адресов, отвечающих требованиям стандарта, ограничено (4,23 миллиарда). Поэтому в 1999 году был разработан и начал внедряться протокол IPv6.
Содержание
- Что такое IPv6
- Внедрение протокола
- Преимущества и особенности
- Отличия протоколов ipv4 и ipv6
- Включение и отключение
- Настройка на роутере
- Как узнать и посмотреть адрес
Что такое IPv6
IPv6 – это последняя на сегодняшний день версия IP-протокола, которая должна решить проблему нехватки интернет-адресов. В нее был внесен ряд полезных изменений. Эта технология была разработана IETF, открытым сообществом ученых, инженеров и провайдеров. Планируется, что IPv6 и IPv4 будут использоваться параллельно. При этом использование протокола версии интернета tcp IPv6 будет постепенно расширяться. Отказаться от IPv4 на данный момент невозможно, так как существует большая доля оборудования, не поддерживающая новый стандарт.
При совместной работе этих протоколов в одной сети пакеты IPv6 поколения передаются внутри пакетов 4-го поколения, а при приеме распаковываются.
Внедрение протокола
Разработка протокола IPv6 началась в 1992 году. Его тестирование состоялось 8 июня 2011 года и закончилось удачно, с тех пор этот день считается международным днем IPv6. В ходе экспериментов были получены рекомендации, которые показали направление, в котором нужно совершенствовать эту технологию.
Компания Google с 2008 года занялась внедрением IPv6 и в течение четырех лет проводила тестирование. Запуск нового сетевого протокола состоялся 6 июня 2012 года.
Сейчас в любом маршрутизаторе и другом сетевом оборудовании имеется встроенная поддержка IPv6. В мобильных сетях LTE поддержка этого протокола является обязательной. В крупнейших компаниях, таких как Google, Microsoft или Facebook используют эту технологию на своих web-сайтах. IPv6 все чаще используется в офисных и домашних сетях.
По данным компании Google, в начале 2020 года доля пакетов IPv6 во всемирной сети была примерно равна 30%, а в России около 4,5% трафика.
Внедрение IPv6 зависит от финансирования. Для его полноценного внедрения требуется масштабное обновление сетевого оборудования и программного обеспечения всех провайдеров. Однако количество сетевого оборудования растет очень быстро, и нехватка IP-адресов становится все острее, и поэтому переход на новую технологию все равно должен произойти.
Преимущества и особенности
Кроме того, что IPv6 обеспечивает более широкое адресное пространство, он имеет дополнительные преимущества.
У IP протокола шестого поколения заголовок короче, чем у пакетов, использующих IPv4. Благодаря этому маршрутизация становится проще, нагрузка на сетевое оборудование уменьшается, а обработка пакетов ускоряется.
Также поддерживается сервис Quality of Service (QoS). Благодаря ему задержка при отправке и приеме сетевых пакетов становится меньше. Эта технология позволяет также применять IPsec шифрование, повышающее безопасность передачи данных.
Отличия протоколов ipv4 и ipv6
В четвертой версии IP-протокола для адресации используется 32 бита, которые принято записывать блоками по 8 бит (диапазон от 0.0.0.0 до 255.255.255.255). Из-за нехватки адресов для выхода в интернет из локальной сети используется один внешний IP-адрес.
В шестой версии IP-протокола адрес состоит из 128 бит. При записи он разбивается на 8 шестнадцатибитных блоков, которые разделяются между собой двоеточием, например, 2dеc:0546:029be:cc76:02b7:cbbf:fa8c:0. В данной версии протокола используется префикс, который записывается через знак слеш «/» после IPv6 адреса. Например, запись «/64» означает что первые 64 бита идентифицируют сеть, а оставшиеся — конкретное устройство в этой сети.
Таким образом, можно задать адрес для 3,4*1038 устройств, этого должно с избытком хватить на достаточно долгое время.
Для упрощения записи адреса применяется режим, в котором несколько нулевых блоков, идущих подряд, можно заменить на два двоеточия. Так, адрес FBEA:0:0:0:0:CB28:1C12:42C4 можно записать так: FBEA::CB28:1C12:42C4.
Такую замену можно производить только один раз, поэтому имеет смысл выбрать самую длинную последовательность, состоящую из нулей. Но нельзя заменить :0: на ::, то есть это правило действует только если есть как минимум два нуля, идущих один за другим.
Кроме этого, в каждой последовательности из четырех шестнадцатеричных цифр можно удалить ведущие (которые идут первыми) нули. Например, 0СB0 заменяем на СB0, а 00ВС на ВС. Если все цифры равны нулю, то его меняют на один нуль.
Включение и отключение
При установке операционной системы Windows, начиная с 7 версии, IPv6 уже включен по умолчанию. Но ошибки могут возникнуть в процессе работы. Например, при установке некоторые программы могут внести изменения в сетевые настройки.
Чтобы проверить, включен ли нужный протокол и при необходимости подключить или отключить его в Windows 10, 7 IPv6 нужно:
В настройках обычно стоит «Получать IPv6-адрес автоматически». В этом случае IP-адрес выдает провайдер, но в последнее время стали появляться провайдеры, которые присваивают статический адрес. В таком случае нужно отметить пункт «Использовать следующий IPv6-адрес» и прописать все буковки и циферки, выданные провайдером и нажать кнопку «Ок». Вот и все, что нужно, чтобы получить адрес и перейти на ipv6.
Настройка на роутере
Если для доступа к интернету используется роутер, то на нем нужно настроить IPv6-протокол. Для этого заходим в административную панель маршрутизатора, открываем любой имеющийся браузер, вводим адрес роутера (192.168.0.1 или 192.168.1.1), логин и пароль (admin в оба поля). Всю нужную информацию можно найти на задней стенке устройства.
Дальнейший порядок действий зависит от модели маршрутизатора. Чтобы выполнить настройку ipv6 на роутере TP-Link WR841N:
- в левом меню выбираем строку «IPv6» и потом подменю «IPv6 WAN»;
- ставим галочку в строке «Включить IPv6», если она там не стоит;
- выбираем тот тип подключения, который использует провайдер, он может быть динамический, статический или PPPoEv6;
- если в предыдущем пункте было выбрано динамическое подключение, то больше делать ничего не нужно, если статическое, то вводим адрес, длину префикса, шлюз и DNS сервер (эти данные должен дать интернет провайдер), если был выбран PPPoEv6, то нужно ввести логин и пароль, которые предоставил поставщик интернет услуг;
Проверить соединение можно, зайдя на главную вкладку административной панели роутера или кликнув по пункту меню «Состояние».
Как узнать и посмотреть адрес
Узнать свой IP-адрес можно двумя способами: через командную строку и через свойства сети.
Чтобы воспользоваться командной строкой, нужно:
- в окне «Выполнить» (как его вызвать, уже рассказывалось выше) ввести команду «cmd»;
- в появившемся окне набираем «ipconfig»;
- в строке «Локальный IPv6-адрес канала» будет написан нужный нам IP-адрес.
Чтобы посмотреть адрес через свойства сети, нужно:
Если для доступа в интернет используется роутер, то 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», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.
Структура сети:
(Оригиналы картинок: github.com/amarao/dia_schemes)
- 1, 2, 3 — устройства в локальной сети, работают по WiFi
- 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
- 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
- 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
- 7 — eth2, интерфейс подключения к сети Tiera
Я пропущу всю IPv4 часть (ничего интересного — обычный nat) и сконцентрируюсь на IPv6.
Полученные мною настройки от Tiera для IPv6:
- Адрес 2a00:11d8:1201:0:962b:18:e716:fb97/128 мне выдан для компьютера/шлюза
- Сеть 2a00:11d8:1201:32b0::/64 мне выдана для домашних устройств
У провайдера сеть 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
)
eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 (skip) inet6 2a00:11d8:1201:0:962b:18:e716:fb97/128 scope global valid_lft forever preferred_lft forever inet6 fe80::218:e7ff:fe16:fb97/64 scope link valid_lft forever preferred_lft forever
Упс. А почему у нас на интерфейсе два адреса? Мы же прописывали один? Наш адрес называется ‘scope global’, но есть ещё и ‘scope link’…
Часть первая: scope
Тут нас встречает первая особенность IPv6 — в нём определено понятие ‘scope’ (область видимости) для адреса.
Есть следующие виды scope:
- global — «обычный» адрес, видимый всему Интернету
- local или link-local — адрес, видимый только в пределах сетевого сегмента. Ближайшим аналогом этого является configless IPv4 из диапазона 169.254.0.0/16, на который сваливается любая windows, которой сказали автоматически получить адрес, а DHCP-сервера вокруг нет. Эти адреса не могут быть маршрутизируемы (то есть тарфик с них не передаётся дальше своей сети). Подробнее про link-local address (wiki).
- host, он же interface — видимость в пределах хоста. Примерный аналог — loopback адреса для IPv4 (127.0.0.0/8)
- admin-local — в живую не видел, но какая-то промеждуточная стадия
- site-local — видимость в пределах офиса. Аналог серых 192.168.0.0/16, то есть адреса, которые не должны выходить за пределы локальной сети
- organization-local — адреса, которые не выходят за пределы организации.
В процессе проектирования 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 адрес уникален.
В нашем случае это inet6 fe80::218:e7ff:fe16:fb97/64 scope link
. Обратите внимание на префикс — fe80 — это link-local адреса.
Как он делается?
Принцип довольно простой:
MAC-адрес eth2 — это 00:18:e7:16:fb:97, а локальный адрес ipv6 — F80:000218:e7ff:fe16:fb97. Да-да, именно так, как выделено жирным. Зачем было в середину всобачивать ff:fe — не знаю. Сам алгоритм называется modified EUI-64. Сам этот алгоритм очень мотивирован и полон деталей. С позиции системного администратора — пофигу. Адрес есть и есть. Интересным может быть, наверное, обратный алгоритм — из link-local узнать MAC и не более.
Итак, у нас на интерфейсе два адреса. Мы даже знаем, как появились они оба (один автоматически при подъёме интерфейса, второй прописали мы). Мы даже знаем, как система поняла, что адрес глобальный — он из «global» диапазона.
Но каким образом система узнала про то, кто его шлюз по умолчанию? И как вообще может жить /128?
Часть вторая, промежуточная: мультикасту мультикаст мультикастно мультикастит
Посмотрим на таблицу маршрутизации:
ip -6 route show
(обычно сокращают до ip -6 r s
, или даже ip -6 r
):
2a00:11d8:1201:0:962b:18:e716:fb97 dev eth2 proto kernel metric 256 fe80::/64 dev eth2 proto kernel metric 256 default via fe80::768e:f8ff:fe93:21f0 dev eth2 proto ra metric 1024 expires 1779sec
Что мы тут видим? Первое — говорит нам, что наш IPv6 адрес — это адрес нашего интерфейса eth2. Второе говорит, что у нас есть link-local сегмент в eth2. У обоих источник — это kernel.
А вот третье — это интрига. Это шлюз по умолчанию, который говорит, что весь трафик надо отправлять на fe80::768e:f8ff:fe93:21f0 на интерфейсе eth2, и источником информации о нём является некое «ra», а ещё сказано, что оно протухает через 1779 секунд.
Что? Где? Куда? Кто? За что? Почему? Зачем? Кто виноват?
Но перед ответом на эти вопросы нам придётся познакомиться с ещё одной важной вещью — multicast. В IPv4 muticast был этакой технологией «не от мира сего». Есть, но редко используется в строго ограниченных случаях. В IPv6 эта технология — центральная часть всего и вся. IPv6 не сможет работать без мультикаста. И без понимания этого многие вещи в IPv6 будут казаться странными или ломаться в неожиданных местах.
Кратко о типах трафика, возможно кто-то пропустил эту информацию, когда изучал IPv4:
- unicast — пакет адресуется конкретному получателю. Обычный трафик идёт юникастом.
- broadcast — пакет адресуется всем, кто его слышит. Например, в IPv4 так рассылается запрос о mac-адресе для данного IP-адреса.
- multicast — пакет адресуется некоторому множеству узлов, которые слушают специальный multicast-адрес. И если получают сообщение, то реагируют на него.
- anycast — пакет адресуется на адрес, общий для кучи узлов. Кто к запрашивающему ближе (и готов ответить) — тот и отвечает
Так вот, в IPv6 НЕТ БРОДКАСТОВ. Вообще. Вместо них есть мультикаст. И некоторые из мультикаст-адресов являются ключевыми для работы IPv6.
Вот примеры таких адресов (они все link-local, то есть имеют смысл только в контексте конкретного интерфейса):
- FF02::1 — все узлы сети. Считайте, старинный бродкаст канального уровня.
- FF02::2 — все маршрутизаторы сети
Полный список адресов, вместе с нюансами link-local, site-local, etc, можно посмотреть тут: www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml
В практическом смысле это означает, что мы можем отправить бродкаст пинг всем узлам, или всем маршрутизаторам. Правда, нам для этого придётся указать имя интерфейса, в отношении которого мы интересуемся cоседями.
ping6 -I eth2 FF02::2
64 bytes from fe80::218:e7ff:fe16:fb97: icmp_seq=1 ttl=64 time=0.039 ms 64 bytes from fe80::768e:f8ff:fe93:21f0: icmp_seq=1 ttl=64 time=0.239 ms (DUP!) 64 bytes from fe80::211:2fff:fe23:5763: icmp_seq=1 ttl=64 time=1.38 ms (DUP!) 64 bytes from fe80::5a6d:8fff:fef5:6235: icmp_seq=1 ttl=64 time=5.68 ms (DUP!) 64 bytes from fe80::cad7:19ff:fed5:25b8: icmp_seq=1 ttl=64 time=7.20 ms (DUP!) 64 bytes from fe80::22aa:4bff:fe1e:9e88: icmp_seq=1 ttl=64 time=8.19 ms (DUP!) 64 bytes from fe80::5a6d:8fff:fe4a:c643: icmp_seq=1 ttl=64 time=8.69 ms (DUP!) 64 bytes from fe80::205:9aff:fe3c:7800: icmp_seq=1 ttl=64 time=11.1 ms (DUP!) 64 bytes from fe80::20c:42ff:fef9:807a: icmp_seq=1 ttl=64 time=16.0 ms (DUP!)
Сколько маршрутизаторов вокруг меня… Первым откликнулся мой компьютер. Это потому, что он тоже роутер. Но вопрос маршрутизации мы рассмотрим чуть позже. Пока что важно, что мы видим все роутеры и только роутеры (а, например, ping6 -I eth2 FF002::1
показывает порядка 60 соседей).
Мультикаст-групп (группой называют все узлы, которые слушают данный мультикаст-адрес) много. Среди них — специальная группа 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 — часть бытовой повседневности.
Но как трафик приходит обратно? Очень просто. Когда маршрутизатор провайдера получает пакет, адресованный 2a00:11d8:1201:0:962b:18:e716:fb97, то у него на одном из интерфейсов написано, что он там 2a00:11d8:1201::/64 via (я не знаю, как там называется интерфейс, но пусть) GE1/44/12. Маршрутизатор спрашивает всех соседей (neighbor discovery) об их адресах, и внезапно видит, что адрес такой-то в сети. Что может быть проще — мак есть, адрес есть, отправляем в интерфейс. Ура, наш компьютер видит трафик. Двусторонняя связь установлена.
Въедливый читатель может спросить несколько вопросов: что значит «написано на интерфейсе»? И что значит «neighbor discovery»?
Вопросы справедливые. Для начала попробуем выяснить, какие узлы у нас есть в сети из подсети 2a00:11d8:1201::/64
Для того, чтобы посмотреть router advertisement на интерфейсе нам поднадобится программа radvdump из пакета radvd. Она позволяет печатать анонсы, проходящие на интерфейсах, в человеческом виде. Заметим, сам пакет radvd нам ещё пригодится (так как его демон — radvd позволяет настроить анонсирование со своих интерфейсах).
Итак, посмотрим, что аносирует нам Tiera:
radvdump eth2
(и подождать прилично, ибо анонсы не очень часто рассылаются)
# # radvd configuration generated by radvdump 1.9.1 # based on Router Advertisement from fe80::768e:f8ff:fe93:21f0 # received by interface eth2 # interface eth2 { AdvSendAdvert on; # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump AdvManagedFlag on; AdvOtherConfigFlag on; AdvReachableTime 0; AdvRetransTimer 0; AdvCurHopLimit 64; AdvDefaultLifetime 1800; AdvHomeAgentFlag off; AdvDefaultPreference medium; AdvSourceLLAddress on; AdvLinkMTU 9216; prefix 2a00:11d8:1201::/64 { AdvValidLifetime 2592000; AdvPreferredLifetime 604800; AdvOnLink on; AdvAutonomous on; AdvRouterAddr off; }; # End of prefix definition }; # End of interface definition
Из всего этого важным является:
- Адрес, с которого получен анонс (в нашем случае fe80::768e:f8ff:fe93:21f0) — это и есть адрес шлюза.
- Указание на сетевой сегмент, в котором можно автоконфигурировать себе адреса
- Флаг AdvAutonomous on, указывающий, что этот анонс имеет смысл. Если бы флаг был off, то его бы можно было смело игнорировать.
Таким образом всё просто — адрес мы указали, маршрутизатор нам «себя» прислал, ядро маршрут обновило. Вуаля, у нас IPv6 на компьютере заработал.
Белый IPv6-адрес для каждого в домашней сети
Получить IPv6 адрес для компьютера — этого маловато будет. Хочется так, чтобы каждое мобильное устройство сидело не за позорным NAT’ом, а голой задницей с белым адресом в Интернете. Желательно ещё при этом так, чтобы злые NSA/google не могли по хвостику моего адреса (в котором закодирован MAC) отслеживать мои перемещения между разными IPv6-сетями (хотя в условиях установленного play services эта параноидальность выглядит наивной и беззащитной).
Но, в любом случае, у нас задача раздать интернет дальше.
Tiera, выдавая мне ipv6, настроила у себя маршрут: 2a00:11d8:1201:32b0::/64 via 2a00:11d8:1201:0:962b:18:e716:fb97
.
Так как fb97 уже является адресом моего компьютера, настройка машрутизации плёвое дело:
sysctl net.ipv6.conf.all.forwarding=1
… и у нас через пол-часика полностью отваливается IPv6 на компьютере? Почему? Кто виноват?
Оказывается, линукс не слушает routing advertisement, если сам является маршрутизатором. Что, в общем случае, правильно, потому что если два маршрутизатора будут объявлять себя маршрутизаторами и слушать маршруты друг друга, то мы быстро получим простейшую петлю из двух зацикленных друг на друга железных болванов.
Однако, в нашем случае мы всё-таки хотим слушать RA. Для этого нам надо включить RA силком.
Это делается так:
sysctl net.ipv6.conf.eth2.accept_ra=2
Заметим, важно, что мы слушаем RA не всюду, а только на одном интерфейсе, с которого ожидаем анонсы.
Теперь маршрутизация работает, маршрут получается автоматически, и можно на каждом мобильном устройстве вручную прописать IPv6 адрес и вручную указать IPv6 шлюз, и вручную прописать IPv6 DNS, и вручную… э… слишком много вручную.
Если мне выдали настройки автоматом, то я так же хочу раздавать их дальше автоматом. Благо, dhcpd отлично справляется с аналогичной задачей для IPv4.
Прелесть IPv6 в том, что мы можем решить эту задачу (раздачу сетевых настроек) без каких-либо специальных сервисов и в так называемом stateless режиме. Главная особенность stateless режима состоит в том, что никто не должен напрягаться и что-то сохранять, помнить и т.д. Проблемы с DHCP в IPv4 чаще всего вызывались тем, что один и тот же адрес выдавали двум разным устройствам. А происходило это из-за того, что злой админ стирал/забывал базу данных уже выданных аренд. А ещё, если железок много и они забывают «отдать аренду», то адреса заканчиваются. Другими словами, stateful — это дополнительные требования и проблемы.
Для решения тривиальной задачи «раздать адреса» в IPv6 придумали stateless режим, который основывается на routing advertisement. Клиентскую часть мы уже видели, теперь осталось реализовать серверную, дабы накормить IPv6 планшетик.
Настройка анонсов маршрутизации (radvd)
Для настройки анонсов используется специальная программа-демон — radvd. С утилитой из её комплекта (radvdump) мы познакомились чуть выше. Прелесть утилиты в том, что она выводит не просто полученные данные, а готовый конфиг radvd для рассылки аналогичных анонсов.
Итак, настраиваем radvd:
interface eth3 { AdvSendAdvert on; AdvHomeAgentFlag off; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix 2a00:11d8:1201:32b0::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
Главное тут — префикс и указание на AdvAutonomous.
Запускаем демона, берём ближайший ноутбук (обычная бытовая убунта с обычным бытовым network-manager’ом), рррраз, и получаем…
ip a show wlan0 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 10:0b:a9:bd:26:a8 brd ff:ff:ff:ff:ff:ff inet 10.13.77.167/24 brd 10.13.77.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 2a00:11d8:1201:32b0:69b9:8925:13d9:a879/64 scope global temporary dynamic valid_lft 86339sec preferred_lft 14339sec inet6 2a00:11d8:1201:32b0:120b:a9ff:febd:26a8/64 scope global dynamic valid_lft 86339sec preferred_lft 14339sec inet6 fe80::120b:a9ff:febd:26a8/64 scope link valid_lft forever preferred_lft forever
Откуда у нас столько ipv6 мы поговорим в следующем разделе, а пока что отметим, что адреса сконфигурировались автоматически. И маршруты у нас такие:
ip -6 r 2a00:11d8:1201:32b0::/64 dev wlan0 proto kernel metric 256 expires 86215sec fe80::/64 dev wlan0 proto kernel metric 256 default via fe80::5ed9:98ff:fef5:68bf dev wlan0 proto ra metric 1024 expires 115sec
Надеюсь, читатель уже вполне понимает, что происходит. Однако… Чего-то не хватает. У нас нет dns-resolver’а. Точнее есть, но выданный dhcpd по IPv4. А у нас пятиминутка любви к IPv6, так то ресолвер нам тоже нужен IPv6.
Тяжело расчехляя aptitude ставим dhcpv6 и прописываем опции nameserver
Как бы не так!
К счастью, IPv6 очень долго продумывался и совершенствовался. Так что мы можем решить проблему без участия DHCP-сервера. Для этого нам надо добавить к анонсу маршрута ещё указание на адреса DNS-серверов.
RDNSS в RA
Описывается вся эта примудрость в RFC 6106. По сути — у нас есть возможность указать адрес рекурсивного DNS-сервера (то есть «обычного ресолвера») в анонсе, распространяемом маршрутизатором.
По большому счёту это всё, что мы хотим от DHCP, так что DHCP там тут не нужен. Компьютеры сами делают себе адреса непротиворечивым образом (то есть для исключения коллизий), знают адреса DNS-серверов. Интернетом можно пользоваться.
Для этого мы дописываем в конфиг radvd соответствующую опцию:
RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 { };
(полный конфиг — см. в конце статьи).
Пробуем подключиться снова — и, ура, всё работает.
ping6 google.com PING google.com(lb-in-x66.1e100.net) 56 data bytes 64 bytes from lb-in-x66.1e100.net: icmp_seq=1 ttl=54 time=25.3 ms ^C --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 25.312/25.312/25.312/0.000 ms
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 проблему решили куда более изящно. При назначении IPv6 адреса запускается прописаный в RFC алгоритм (то есть выполняемый всеми, а не только premium grade enterprise ready cost saving proprietary solution за -цать тысяч). Этот алгоритм называется Optimistic DAD (RFC 4429), и его суть сводится к простому: кто первый встал, того и тапки. Включая прилагающийся IPv6 адрес.
Сам DAD работает отлично, но у него есть мааааленькая подлость, с которой я как-то столкнулся. Если (дополнительный) адрес на интерфейс вешать простым ip -6 address add
, то ip отработает раньше, чем закончится DAD. Так что если этот адрес используется дальше в скрипте или конфигах автостартующих демонов, то демоны могут отвалиться по причине «нет такого адреса» — линукс не экспортирует в список доступных для приложений те адреса, про которые нет уверенности, что их можно использовать.
Конфиги
Эту часть большинство пропустит не читая, ну, такова судьба конфигов — быть писанными, но не читанными.
/etc/network/interfaces:
auto lo eth2 eth3 iface lo inet loopback allow-hotplug eth2 eth3 iface eth2 inet static address 95.161.2.76 netmask 255.255.255.0 gateway 95.161.2.1 dns-nameservers 127.0.0.1 #У меня локальный ресолвер на базе bind'а iface eth2 inet6 static address 2a00:11d8:1201:0:962b:18:e716:fb97/128 dns-nameservers ::1 iface eth3 inet static address 10.13.77.1 netmask 255.255.255.0 iface eth3 inet6 static address 2a00:11d8:1201:32b0::1/64
/etc/sysctl.d/ra2.conf
net.ipv6.conf.eth2.accept_ra=2
/etc/sysctl.d/ip_forwarding.conf
net.ipv4.conf.all.forwarding = 1 net.ipv6.conf.all.forwarding = 1
/etc/radvd.conf
interface eth3 { AdvSendAdvert on; AdvHomeAgentFlag off; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix 2a00:11d8:1201:32b0::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; RDNSS 2001:4860:4860::8888 2001:4860:4860::8844 { }; };
/etc/dhcp/dhcpd.conf
ddns-update-style none; option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.13.77.0 netmask 255.255.255.0 { range 10.13.77.160 10.13.77.199; option routers 10.13.77.1; option domain-name-servers 10.13.77.1; }
Используется ли IPv6?
У меня обычный домашний компьютер. Чуть-чуть raid, LVM XFS, BTRFS, LUCKS, свой почтовый и веб-сервера, dns-сервер и т.д. Я подключен к обычному домашнему провайдеру с IPv6.
Вот статистика использования интернета за четыре дня. Собиралась она простым способом:
iptables -t filter -A INPUT ip6tables -t filter -A INPUT (смотреть счётчики - iptables -L -v, и ip6tables -L -v)
И вот какая она получилась:
- 4.5% (2.7 Гб) IPv6
- 95.5% (59 Гб) — представители прочих, устаревающих, версий IP
Таким образом, IPv6 занимает второе место по распространённости в Интернете (если Майкрософту с виндофонами так желтить можно, почему мне нельзя?).
Если серьёзно, то столь значительные достижения IPv6 (только представьте себе — почти гигабайт трафика в день) большей частью объясняются ютубом и прочими сервисами гугла. Ещё небольшую долю IPv6 принёс пиринг, причём там львиная доля людей — это всякие туннели и teredo (то есть ненастоящие IPv6, использующиеся от безысходности).
С другой стороны, этот показатель почти в три раза больше моего прошлого замера (полтора года назад), когда доля IPv6 едва-едва переваливала за полтора процента.
О поддержке в оборудовании
Десктопные линуксы, понятно, IPv6 поддерживают и используют.
Андроиды (4+) тоже умеют и используют. Пока что найдена только одна забавная бага, это неответ на пинги по IPv6 (но ответ по IPv4) в deep sleep режимах.
Насколько я знаю, IOS’ы IPv6 поддерживают и используют.
From DD-WRT Wiki
(Redirected from IPv6)
Jump to: navigation, search
Internet Protocol version 6 (IPv6) is a network layer IP standard used by electronic devices to exchange data across a packet-switched network. It follows IPv4 as the second version of the Internet Protocol to be formally adopted for general use.
Keep in mind it can be dangerous to enable IPv6 without also having a firewall on each client that handles IPv6 packets, or having ip6tables on your router to filter incoming connections. ip6tables is NOT included by default with DD-WRT, which means your clients will be directly exposed to the Internet once you have enabled IPv6.
Contents
- 1 Prerequisites
- 2 IPv6 on your LAN
- 2.1 Overview
- 2.2 Enabling IPv6 Support
- 2.3 Configuring Radvd (if your DD-WRT box is NOT your IPv6-router)
- 2.4 ip6tables for K26 big images
- 2.4.1 Kernel modules
- 2.4.2 Userland
- 3 6to4 Setup
- 3.1 Overview
- 3.2 Enabling IPv6 Support
- 3.3 Configuring Radvd
- 3.4 Startup Script
- 3.5 6to4 on current builds (after v24 sp1)
- 3.6 6to4 on k2.6 builds
- 3.7 6rd
- 3.8 Performance Concerns
- 3.9 6to4 IPv6 as default protocol
- 3.10 6to4 on WAN connections with dynamically assigned IPv4 address
- 4 SixXS Tunnel Broker
- 4.1 Requesting a Tunnel/Subnet
- 4.2 Static Tunnel
- 4.3 Dynamic Tunnel
- 4.3.1 Install AICCU
- 4.3.2 Announce your own subnet with radvd
- 5 Hurricane Electric’s Tunnelbroker.net
- 5.1 Registration
- 5.2 Features
- 5.3 Startup Script
- 5.4 Endpoint updater
- 5.5 Another approach
- 5.6 Additional Links
- 6 Notes
- 6.1 Anonymous IPv6 at Microsoft Windows
- 6.2 ping6 at dd-wrt v23
- 6.3 ping6 at dd-wrt v24-sp2
- 7 Troubleshooting
- 7.1 Tunnel issues
- 7.1.1 6to4-specific issues
- 7.1.2 Hurricane Electric specific issues
- 7.2 Radvd issues
- 7.3 Working configuration
- 7.1 Tunnel issues
- 8 External Links
[edit] Prerequisites
- DD-WRT compatible router
- Knowledge about the Command Line
- Knowledge about the ip command
- A current recommended build of the firmware (see your hardware forum for recommendations) using a version that includes IPv6 support.
- IPv6 enabled through the GUI section Administration/Management/Router Management/Ipv6
- Enabling jffs would be helpful (optional)
[edit] IPv6 on your LAN
[edit] Overview
If you already have a working IPv6 router or are not interested in routing IPv6 traffic out of your LAN, your main concern is to allow your wireless clients traffic pass the to the wired side.
When your DD-WRT box is your IPv6-router, see other solutions below for 6to4 tunneling solutions.
[edit] Enabling IPv6 Support
On the Administration>Management page, enable IPv6 and radvd.
[edit] Configuring Radvd (if your DD-WRT box is NOT your IPv6-router)
Radvd is similar to a DHCP server. It advertises your IPv6 prefix to the local network, so that a new client can generate its own IP address. This config tells radvd to get an IPv6-address from the wired side, and properly announce it to the LAN (br0).
Copy the following into your radvd settings box:
interface br0 { AdvSendAdvert on; prefix 0:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; }; };
[edit] ip6tables for K26 big images
The currently recommended K2.6 big images ship with basic IPv6 support. That means that you’re able to activate the IPv6 IP stack for routing and static tunnels. What’s missing are the ip6tables kernel modules and the userland tools needed. It’s possible to add the missing parts but that requires some basic Linux system knowledge.
It’s assumed here that you have /jffs mounted and a few megs of space available and you know how to use ipkg.
Please note: What you’ve to download still depends a lot on the hardware you’re running on!
[edit] Kernel modules
The currently recommended build r14929 ships with a patched Linux kernel with a version number set to 2.6.24.111. Since the kernel modules from OpenWRT have the magic version information set you can’t use the kmod packages from OpenWRT. Because of the version mismatch insmod won’t load those modules.
This leaves you with two options:
- Trust lazytom and download his set of modules from the forum http://www.dd-wrt.com/phpBB2/download.php?id=16285
- If you don’t trust random people on the internet (which is a good thing) you’ll find an introduction on how to build these modules yourself in this blog post http://blog.dest-unreach.be/2010/12/01/compiling-custom-dd-wrt-kernel-modules
Whatever you do I assume that you’ve now a bunch of .ko files at your hand. Those are your kernel modules. The three most relevant might be ip6_tables.ko, ip6table_filter.ko and nf_conntrack_ipv6.ko.
On your router create an apropriate directory, I use /jffs/lib/modules/2.6.24.111 and scp all or a subset of the modules to this directory. Aferwards you can change to that directory and try to load them by executing e.g. insmod ip_6tables.ko. With lsmod you can check if they’re loaded correctly.
Now that you’ve the required kernel modules loaded we can move on to the userland tools.
[edit] Userland
System wise OpenWRTs Kamikaze release is very close to the r14929 build, so you should pick at least the following packages from http://downloads.openwrt.org/kamikaze/8.09.2/:
- ip6tables
- iptables (important, contains basic shared objects used by ip6tables aswell)
- iptables-mod-conntrack
- iptables-mod-filter
Furthermore for debugging efforts it might be helpful to install the iputils-ping6 and iputils-traceroute6 packages aswell.
Download all those packages and install them on your router with e.g. ipkg -d root install *.ipkg. Now ip6tables -vxL should give you the basic output with the INPUT, FORWARD and OUTPUT default tables.
Now face the fact that the OpenWRT userland is organized slightly different which results in ip6tables beeing unable to find its shared object files. You can workaround that problem by setting the IP6TABLES_LIB_DIR enviroment variable.
export IP6TABLES_LIB_DIR=/jffs/usr/lib/iptables
To make it a permanent setting you can put the following in a ipv6.startup file.
echo "export IP6TABLES_LIB_DIR=/jffs/usr/lib/iptables" >> /tmp/root/.profile
You should now finally be able to create a bunch of regular rules with the ip6tables command. Your average /jffs/etc/config/ipv6.startup file (you’ve to create one to make this persistent) might start with something like this:
#!/bin/sh export PATH=$PATH:/jffs/usr/sbin export IP6TABLES_LIB_DIR=/jffs/usr/lib/iptables echo "export IP6TABLES_LIB_DIR=/jffs/usr/lib/iptables" >> /tmp/root/.profile MODPATH='/jffs/lib/modules/2.6.24.111' KMODS='ip6_tables.ko ip6table_filter.ko nf_conntrack_ipv6.ko' for x in $KMODS; do insmod $MODPATH/$x done
I hope this helps to get you started without digging hours through the various forum posts.—Fnord42 20:06, 14 January 2011 (CET)
[edit] 6to4 Setup
[edit] Overview
6to4 is a mechanism which assigns a large block of IPv6 addresses to every IPv4 address on the Internet. You can use 6to4 with DD-WRT to give every computer on your network a globally-accessible IPv6 address without the need to configure explicit tunneling. This should be the simplest method to add IPv6 to your entire network.
Important Reminders :
- In order to use ipv6, you need the Standard or VoIP version of DD-WRT, as these are currently the only ones which support both IPv6 and radvd.
- The detailled configuration steps are targeted toward users with a basic DHCP connection for the WAN part. So, if using PPPoE will require replacing vlan1 with ppp0 in each instance. Other connection types will vary.
- When using DD-WRT standard on a router with 4MB Flash, there is no space available for jffs.
- This guide only relies on nvram variables, so that jffs is not needed.
- The configuration shown below has been verified to work properly on v24 sp1 stable (standard)
[edit] Enabling IPv6 Support
On the Administration>Management page, enable IPv6 and radvd.
[edit] Configuring Radvd
Radvd is similar to a DHCP server. It advertises your IPv6 prefix to the local network, so that a new client can generate its own IP address. This config tells radvd to get a 6to4 prefix from the WAN side (vlan1) and announce it to the LAN (br0)
Copy the following into your radvd settings box:
interface br0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1280; AdvSendAdvert on; prefix 0:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; AdvPreferredLifetime 86400; Base6to4Interface vlan1; AdvRouterAddr on; }; };
[edit] Startup Script
This startup script acquires your current IPv4 address and uses it to calculate a 6to4 IPv6 address. It then creates the tunnel interface, configures a route, and assigns the address. Afterwards, it sends radvd a SIGHUP so that it will become aware that the prefix has changed.
Go to Administration>Diagnostics or Administration>Commands in v24 sp1, copy the following into the big box, and hit «Save Startup».
insmod /lib/modules/`uname -r`/ipv6.o sleep 5 radvd -C /tmp/radvd.conf start sleep 5 WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" if [ -n "$WANIP" ] then V6PREFIX=$(printf '2002:%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')) ip tunnel add tun6to4 mode sit ttl 255 remote any local $WANIP ip link set tun6to4 mtu 1280 ip link set tun6to4 up ip addr add $V6PREFIX:0::1/16 dev tun6to4 ip addr add $V6PREFIX:1::1/64 dev br0 ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 kill -HUP $(cat /var/run/radvd.pid) fi
[edit] 6to4 on current builds (after v24 sp1)
Pandora-Box got a script that works on current builds of v24. This has been successfully implemented on Eko 13309 big (which does not come with ipv6, so you must use «ipkg install kmod-ipv6» to get it to work.
The scripts are as follows:
in Administration, under IPv6/RaDVD config:
interface br0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1280; AdvSendAdvert on; prefix 0:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; AdvPreferredLifetime 86400; Base6to4Interface vlan2; }; };
in Adminstration > Commands, Startup Script:
insmod /lib/modules/`uname -r`/ipv6.o sleep 5 radvd -C /tmp/radvd.conf start sleep 5 WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" if [ -n "$WANIP" ] then V6PREFIX=$(printf '2002:%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')) ip tunnel add tun6to4 mode sit ttl 255 remote any local $WANIP ip link set tun6to4 mtu 1280 ip link set tun6to4 up ip addr add $V6PREFIX:0::1/16 dev tun6to4 ip addr add $V6PREFIX:1::1/64 dev br0 ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 kill -HUP $(cat /var/run/radvd.pid) fi radvd -C /tmp/radvd.conf start
[edit] 6to4 on k2.6 builds
The above scripts can be modified to use with 2.6 kernel builds, as follows:
Radvd config:
interface br0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1480; AdvSendAdvert on; prefix 0:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; AdvPreferredLifetime 86400; Base6to4Interface vlan2; }; };
Startup script:
insmod /lib/modules/`uname -r`/kernel/net/ipv6/sit.ko sleep 5 radvd -C /tmp/radvd.conf start sleep 5 WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" if [ -n "$WANIP" ] then V6PREFIX=$(printf '2002:%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')) ip tunnel add tun6to4 mode sit ttl 255 remote any local $WANIP ip link set tun6to4 mtu 1480 ip link set tun6to4 up ip addr add $V6PREFIX:0::1/16 dev tun6to4 ip addr add $V6PREFIX:1::1/64 dev br0 ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 kill -HUP $(cat /var/run/radvd.pid) fi sleep 10 radvd -C /tmp/radvd.conf start
Note that this script is specifically for the WRT610N v1, where vlan2 is the WAN. On other routers, you may have to substitute vlan1, eth1, etc. To find your WAN interface, telnet to your router and run
ip -4 addr show
and find the line with your WAN address. The interface listed there is your WAN interface (mine was eth1 on a DLink DIR-825).
[edit] 6rd
Comcast (and other providers) are using IPV6 over 6rd. See:
Comcast 6RD Configuration Instructions for IPv6
Here is an example dd-wrt config for use with the 2.4 pre-sp2 with a k2.6 build (14584M NEWD-2 K2.6 Eko)
You can disable radvd from the management tab since this script creates the conf file and starts radvd. Place the following in your startup commands section:
insmod /lib/modules/`uname -r`/kernel/net/ipv6/sit.ko sleep 5 HOST6RD=$(nslookup 6rd.comcast.net |grep "Address"|awk '{ print $3 }'|grep -v 192.168.1.1 -m1) WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" if [ -n "$WANIP" ] then V6PREFIX=$(printf ' 2001:55c:%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')) ip tunnel add tun6rd mode sit ttl 255 remote any local $WANIP ip link set tun6rd mtu 1280 ip link set tun6rd up ip addr add $V6PREFIX:0::1/32 dev tun6rd ip addr add $V6PREFIX:1::1/64 dev br0 ip -6 route add 2000::/3 via ::$HOST6RD dev tun6rd kill -HUP $(cat /var/run/radvd.pid) fi echo "interface br0 { \ MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1280; AdvSendAdvert on; \ prefix $V6PREFIX::/64 { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; \ AdvPreferredLifetime 86400; }; };" \ > /tmp/radvd.conf radvd -C /tmp/radvd.conf start
If you use a local lan gateway other than 192.168.1.1, you will need to update the script. Right now 6rd.comcast.net only resolves to one IP address, but the script does take multiple A records into account and uses the dns resolver on the router to load balance between addresses.
[edit] Performance Concerns
When you send a packet from a 6to4 address to a native IPv6 address, it has to pass through a 6to4 gateway. RFC3068 established the special anycast address 192.88.99.1 which is supposed to lead you to the nearest gateway. However, some ISPs don’t handle this properly, so you may find that all of your packets are crossing an ocean or two.
If this affects you, then you may need to do some detective work to locate a closer gateway. One possible approach is to use IPv4 Looking Glass tools to traceroute to 192.88.99.1 from various locations on the Internet and see where you end up.
Or you could bug your ISP about it, but they’ll probably be like «IPvWHAT?»
[edit] 6to4 IPv6 as default protocol
As per RFC3484 §2.1 default policy table, having a 6to4 enabled LAN (using a 6to4 anycast tunel on a DD-WRT enabled box, say) will mean that 6to4 IPv6 will only be used to communicate to a server if the server is having a 6to4 adress too (ie: 2002: prefix on its address) or if there is no IPv4 address assigned to the server name (ie: no A but an AAAA).
In short the following makes IPv4 default on IPv6 enabled Windows boxes using 6to4 prefixes.
1. Start -> Run -> «cmd» -> «netsh» -> «interface» -> «ipv6»
2. To enable IPv6 preference on Microsoft Windows…
set prefix ::1/128 50 0 set prefix ::/0 40 1 set prefix 2002::/16 30 1 set prefix ::/96 20 3 set prefix ::ffff:0/96 10 4 set prefix 2001::/32 5 5
Only the 2002::/16 line (6to4 prefix policy) is changed.
3. To make things goes back to original mode (IPv4 preference)…
set prefix ::1/128 50 0 set prefix ::/0 40 1 set prefix 2002::/16 30 2 set prefix ::/96 20 3 set prefix ::ffff:0/96 10 4 set prefix 2001::/32 5 5
And Voilà
Notes: ::1/128 == localhost, ::/0 == default, 2002::/16 == 6to4, ::/96 + ::ffff::0/96 == IPv4 compatibility, 2001::/32 == Teredo, 2000::/3 would be All IPv6 Global Unicast address space
[edit] 6to4 on WAN connections with dynamically assigned IPv4 address
If you have a dial-up connection with a dynamically assiged IPv4 address, the corresponding IPv6 address block changes every time a new WAN connection is established. You can put the 6to4 startup script into /jffs/etc/config/6to4.wanup to get the correct 6to4 IPv6 block every time when you get a new IPv4. Please note that this means that all your network’s global IPv6 addresses change, too.
For more info, see [1]
[edit] SixXS Tunnel Broker
[edit] Requesting a Tunnel/Subnet
1. Sign up with a RIPE/ARIN/etc handle or by using the direct signup
2. After your login at the SixXS Home you can request a tunnel and later a subnet.
Note that providing a link to a XING or LinkedIn profile or providing links to projects you work on can provide extra ISK credits. ISK credit is used to ‘purchase’ a tunnel, subnet or other services.
[edit] Static Tunnel
There are instructions at Remoteroot.net with example scripts.
This wiki also offers an example IPv6 startup script
Notice that radvd doesn’t work with mini version but requires the full version of DD-WRT. Also if you have problems with pinging and SixXS, notice their FAQ message related to this.
[edit] Dynamic Tunnel
[edit] Install AICCU
1. Install AICCU using ipkg.
# ipkg -force-depends install http://downloads.openwrt.org/kamikaze/8.09.2/brcm47xx/packages/aiccu_20070115-2.1_mipsel.ipk
2. Configure AICCU.
# vi /jffs/etc/aiccu.conf
# AICCU Configuration # Login information username <your nichandle/username> password <your password> # Protocol and server listed on your tunnel protocol tic server tic.sixxs.net # Interface names to use ipv6_interface sixxs # The tunnel_id to use # (only required when there are multiple tunnels in the list) tunnel_id <your tunnel id> # Be verbose? verbose false # Daemonize? daemonize true # Require TLS? requiretls true # Set default route? defaultroute true
Note that if you can’t write to /jffs/etc/, you can always store the script in another directory (that of course is persistent otherwise you loose it and use eg ‘aiccu start /tmp/aiccu.conf’ to pick a different configuration file location.
To actually start aiccu you’ve to add an ipup script, e.g. /jffs/etc/config/sixxs.ipup.
#!/bin/sh export PATH=$PATH:/jffs/usr/sbin # wait until time is synced while [ `date +%Y` -eq 1970 ]; do sleep 5 done # check if aiccu is already running if [ -n "`ps|grep etc/aiccu|grep -v grep`" ]; then aiccu stop sleep 1 killall aiccu fi # start aiccu sleep 3 aiccu start /jffs/etc/aiccu.conf
[edit] Announce your own subnet with radvd
radvd is already part of the IPv6 enabled images so you just have to bring up your own IPv6 address and start radvd with a configuration. You can enter the contents for your radvd.conf in the webfrontend so that it will end up in /tmp/radvd.conf but you’ve to start radvd yourself with a startup file after you assigned an IPv6 address from the subnet to one of your interfaces. In practise your radvd.conf can be as simple as this:
interface br0 { AdvSendAdvert on; prefix 2001:DB8::/64 { }; };
The startup file, e.g. /jffs/config/ip6.startup to go with this configuration will depends a bit on how many addresses/subnets you’ll actually use. In the usual cases it will be very similar to the following.
#!/bin/sh # Assign an IPv6 address and route for br0 ip -6 addr add 2001:DB8::/64 dev br0 ip -6 route add 2001:DB8::/64 dev br0 # route the rest of the /48 to loopback ip -6 route add 2001:DB8::/48 dev lo # Execute a script with some ip6tables rules #/jffs/etc/filters6.sh # Start radvd /usr/sbin/radvd -C /tmp/radvd.conf
Please note: 2001:DB8::/32 is a subnet dedicated for use in documentation. You’ve to replace that with the subnet you’ll get assigned by SixXS.
Reboot the router! When the router comes back up, you should be able to use IPv6. Congratulations!
[edit] Hurricane Electric’s Tunnelbroker.net
[edit] Registration
1) Sign up for an account with our web based registration at Tunnelbroker.net
2) After creating your account, provide your IPv4 endpoint, and pick the closest tunnel-server to your location:
Asia
- Hong Kong, HK
- Singapore, SG
- Tokyo, JP
Europe
- Amsterdam, NL
- Paris, FR
- Stockholm, SE
- Zurich, CH
North America
- Ashburn, VA, US
- Chicago, IL, US
- Dallas, TX, US
- Fremont, CA, US
- Los Angeles, CA, US
- Miami, FL, US
- New York, NY, US
- Seattle, WA, US
- Toronto, ON, CA
[edit] Features
By default you already get a /64 allocation routed to your side of the tunnel.
If you need more than a single /64, with the click of a button you can allocate a single /48 routed to your side of the tunnel.
A large variety of configuration examples are provided for various platforms covering: Linux, *BSD, Windows as well as router platforms.
Tunnelbroker.net is operated and maintained by a business and not individuals, and provided FREE to anyone interested in learning more about IPv6.
[edit] Startup Script
This works for me on v24 SP2:
#edited by timenetworks (7-6-2011) #to fix the ipv6 route table issue insmod ipv6 sleep 5 WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" MY_TUNNEL_ADDR="2001:470:1f0e:5cd::2" # change me MY_ROUTED_ADDR="2001:470:1f0f:5cd::1" # change me echo "External IP:" $WANIP > /jffs/startup.debug if [ -n $WANIP ] then echo "configuring tunnel" >> /jffs/startup.debug # The following commands are straight from HE's website ip tunnel add he-ipv6 mode sit remote 216.218.224.42 local $WANIP ttl 255 ip link set he-ipv6 up ip addr add $MY_TUNNEL_ADDR/64 dev he-ipv6 ip route add ::/0 dev he-ipv6 # These commands aren't on HE's website, but they're necessary for the tunnel to work #WARNING: Adding two times the same address seems to be WRONG, please someone with # HE access update this information to something decent. # See also http://www.dd-wrt.com/phpBB2/viewtopic.php?t=137874 #ip -6 addr add $MY_ROUTED_ADDR/64 dev he-ipv6 #this no longer require as he-ipv6 interface only need to hook with the "tunnel address" ~edited by timenetworks (7-6-2011) ip -6 addr add $MY_ROUTED_ADDR/64 dev br0 #ip route add 2000::/3 dev he-ipv6 #default route is enough (23-6-2011) echo "starting radvd" >> /jffs/startup.debug radvd -C /jffs/radvd.conf & fi
- The tunnel address and routed address are on your Tunnel Details page on HE’s website. For MY_TUNNEL_ADDR, use the value for «Client IPv6 Address», and for MY_ROUTER_ADDR, use the value for «Routed /64».
- Many people have working configurations using only the tunnel address for everything, but you need to use the routed address for your network if you want certain things like reverse DNS to work.
- You have to have your radvd config saved in /jffs/radvd.conf. Running radvd from the web interface has never worked for me; if it works for you, you can drop the radvd line from the script.
- This script doesn’t handle when your IP address changes; you’ll need to manually update it on HE’s website, or use the endpoint updater script below.
- I occasionally have issues with the tunnel dying randomly. Pinging the router’s IPv6 address fixes it for some reason, I have no idea why. — update 2009.12.14 by calraith: Try adding metric 1 as an argument to the ip route add directives. ip route add ::/0 dev he-ipv6 metric 1
- When you put your radvd config into the webgui (on administration tab) it is available at /tmp/radvd.conf. You can use this instead of creating a /jffs/radvd.conf file (I have issues with my jffs on my WRT350N). I have my startup.debug file in /tmp/startup.debug as well. ~methaneb
[edit] Endpoint updater
If your router gets a dynamic ip, you need to update your endpoint in your tunnelbroker account.
This can be done on DDWRT with this busybox-only script:
Tunnelbroker.net enpoint address updater
Download it into tmp or jffs, edit the file to set up your credentials or just run it from commandline:
updateipv4.sh username password tunnelid
A successful update means either your current endpoint IP is the same as your previous one, or it has been updated to your current one.
Edit: zracer
For this script to work you need to deselect Security->Firewall->»Block Anonymous WAN Requests (ping) »
Because tunnelbroker.net uses a ping to verify the new ip address.
[edit] Another approach
The above approach did not work for me. The general problem with DD-WRT is there are no tools to really test what is wrong with the configuration. IPv6 to IPv4 did work for me. So I decide to try a method that would allow me to easily toggle back and forth. That way I could tell the difference between a problem on my router v.s. a problem in my end client.
First off since we need a way to recycle the tunnel when the router’s IPV4 address change, it makes sense to put the main logic in a separate script. The following is my /jffs/updateipv4.sh script:
#!/bin/sh -x #SAMPLE USERID="29812e32f424324324234" USERID="<insert value here>" #SAMPLE PASSWORD="CatsAndDogs" PASSWORD="<insert value here>" #SAMPLE TUNNEL_ID="96782" TUNNEL_ID="<insert value here>" #SAMPLE CLIENT_IPV6_ADDRESS="2001:271:18:2c7::2/64" CLIENT_IPV6_ADDRESS="<insert value here>" #SAMPLE SERVER_IPV4_ADDRESS="218.65.27.48" SERVER_IPV4_ADDRESS="<insert value here>" echo >> /tmp/wanip WANIP_OLD=`cat /tmp/wanip` WANIP="$(ifconfig vlan2 | sed -n '/inet /{s/.*addr://;s/ .*;p}')" if [ -n "$WANIP" ] then if [ "$WANIP" != "$WANIP_OLD" ] then echo "External IP: $WANIP" 1>&2 ROUTED_ADDRESS=`sed -n -e 's,^ *prefix *\([^ ]*\) *{,\1,p' /tmp/radvd.conf` if [ $ROUTED_ADDRESS = "0:0:0:1::/64" ] then CLIENT_IPV6_ADDRESS="" fi ip tunnel del tun6to4 2>>/dev/null ip tunnel del he-ipv6 2>>/dev/null if [ -n "$CLIENT_IPV6_ADDRESS" ] then echo "Configure he-ipv6 tunnel" 1>&2 MD5PASSWORD=`echo -n "$PASSWORD"|md5sum|sed -e 's/ *-//g'` /usr/bin/wget 'http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b='AUTO'&pass='$MD5PASSWORD'&user_id='$USERID'&tunnel_id='$TUNNEL_ID -O - exit ip tunnel add he-ipv6 mode sit ttl 255 remote $SERVER_IPV4_ADDRESS local $WANIP ip link set he-ipv6 up ip addr add $CLIENT_IPV6_ADDRESS dev he-ipv6 ip route add ::/0 dev he-ipv6 BR0_MAC=$(ifconfig br0 |sed -n -e 's,.*HWaddr \(..\):\(..\):\(..\):\(..\):\(..\):\(..\).*,\1\2:\3\4:\5\6,p') # These commands aren't on HE's website, but they're necessary for the tunnel to work ip -6 addr add $(echo "$ROUTED_ADDRESS"|sed "s,::/..,::$BR0_MAC/64,") dev br0 ip -6 route add 2000::/3 dev he-ipv6 else echo "Configure tun6to4 tunnel" 1>&2 V6PREFIX=$(printf '2002:%02x%02x:%02x%02x' $(echo $WANIP | tr . ' ')) ip tunnel add tun6to4 mode sit ttl 255 remote any local $WANIP ip link set tun6to4 mtu 1480 ip link set tun6to4 up ip -6 addr add $V6PREFIX:0::1/16 dev tun6to4 ip -6 addr add $V6PREFIX:1::1/64 dev br0 ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 fi echo 1 > /proc/sys/net/ipv6/conf/all/forwarding fi fi
Be sure to run ‘chmod ugo+rx /jffs/updateipv4.sh’.
Next the startup script. Set this in your startup under Administration->Commands->Startup:
#Enable IPV6 insmod /lib/modules/`uname -r`/kernel/net/ipv6/sit.ko sleep 5 radvd -C /tmp/radvd.conf start sleep 5 rm -f /tmp/wanip /jffs/updateipv6.sh 2> /jffs/startup.debug kill -HUP $(cat /var/run/radvd.pid) sleep 10 echo "starting radvd" >> /jffs/startup.debug radvd -C /jffs/radvd.conf start &
Note: The sleep commands are just to give time for the IPV4 network to come-up, and for the updates from the script to finish.
Finally, Radv5 config. Set this under Administration->Management->IPV6 Support->Radvd config:
interface br0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1480; AdvSendAdvert on; prefix <insert value here> { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; AdvPreferredLifetime 86400; # Base6to4Interface vlan2; }; };
The prefix value should be your Route 64 address. e.g. 2001:270:1c:1d8::/64
If instead you wish to use an IPV6 to IPV4 bridge instead use an address of 0:0:0:1::/64 and uncomment the Base6to4Interface line like the following:
interface br0 { MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1480; AdvSendAdvert on; prefix 0:0:0:1::/64 { AdvOnLink on; AdvAutonomous on; AdvValidLifetime 86400; AdvPreferredLifetime 86400; Base6to4Interface vlan2; }; };
Walla. Once everything is saved you are ready to reboot your router. If things don’t work try running the updateipv6.sh script interactively. Note: I’ve designed the updateipv6.sh script so it can be rerun regularly to pickup a new wan ip address. So if the wanip is the same as the last time it ran, it does nothing. If you want to force it to run anyway (for debugging purposes), the simply remove the /tmp/wanip file first. e.g.
$ rm /tmp/wanip;/jffs/updateipv6.sh
[edit] Additional Links
Tunnelbroker.net’s user forums
IPv6 Setup with SAMBA
IPv6 Setup using NVRAM
[edit] Notes
[edit] Anonymous IPv6 at Microsoft Windows
By default on WinXP, Win2003 or WinVista, IPv6 addresses built from IPv6 prefix (stateless configuration for instance) are using the EUI-64 (cf MAC address) of your network card as a suffix. This can lead to some privacy issues, hence another IPv6 address is dynamically computed and used by default. Such an anonymous address changes (according to a computation algorithm) each time the IPv6 stack starts. This can cause some trouble under certain conditions where the server needs a unique and static IPv6 (containing the EUI-64). The solution is to deactivate the creation of those «privacy addresses». But be carefull, this will then lead to leaking the EUI-64 and also enables people to track you (logs, google, etc). So, it’s a tradeoff.
If you want to disable temporary IPv6 addresses, try the command :
netsh interface ipv6 set privacy state=disable
or
ipv6 -p gpu UseTemporaryAddresses no
[edit] ping6 at dd-wrt v23
Try to install busybox from OpenWRT:
http://downloads.openwrt.org/people/florian/bin/packages/
~ # ipkg install http://downloads.openwrt.org/people/florian/bin/packages/busybox_1.1.3-1_mipsel.ipk
Okay now you have to install uclibc (with -force-depends):
http://downloads.openwrt.org/people/florian/bin/packages/
~ # ipkg -force-depends install http://downloads.openwrt.org/people/florian/bin/packages/uclibc_0.9.28-8_mipsel.ipk
After installing these packages you have to change the priority of the /lib path in your shell environment:
~ # export LD_LIBRARY_PATH=/usr/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib:/lib
For the last step you have to change the ping6 symlink:
~ # rm /jffs/bin/ping6 ~ # cd /jffs/bin ~ # ln -s /jffs/bin/busybox ping6
Now ping6 should work for the current xterm session.
[edit] ping6 at dd-wrt v24-sp2
Install iputils-ping6 from OpenWRT
root@DD-WRT:~# ipkg -force-depends install http://downloads.openwrt.org/kamikaze/8.09.2/brcm47xx/packages/iputils-ping6_20071127-1_mipsel.ipk
[edit] Troubleshooting
So you’ve tried to set up IPv6, but it didn’t work! Don’t panic, it’s probably still fixable.
[edit] Tunnel issues
The first question to ask is, can you ping the router from the internet? Head over to [2] and use the ping test with your external IPv6 IP. (For HE and SixXS tunnels, this will be your client tunnel IP; for 6to4, it’ll be generated from your public IPv4 address.) If the ping goes through, congratulations! Your tunnel isn’t the problem.
[edit] 6to4-specific issues
6to4 uses a special IP address (192.88.99.1) to configure the tunnel. Try pinging this IP; if it doesn’t work, then 6to4 probably won’t work for you. You could bother your ISP about it, but as likely as not they’ll just ignore you completely.
6to4 also requires that protocol 41 (different from port 41!) be accessible. It’s rare for ISPs to block this, but if they really feel like jerks it’s not impossible. proto41 blocking is difficult to detect, unfortunately.
[edit] Hurricane Electric specific issues
Make sure your IPv4 address is set properly on the HE website. If not, your tunnel won’t work. Similarly, make sure the IPv6 tunnel addresses you use are correct.
[edit] Radvd issues
If you’re using radvd and it’s not working somehow, then your router will have a working IPv6 connection, but it won’t be passed on to your other computers. If your computers aren’t receiving IPv6 addresses, then this is the problem.
The best tool for checking this is the radvdump program. Run it as root, and it’ll show you any router advertisements your computer sends or receives. If you don’t see any after a while, radvd probably isn’t running. Try running «ps | grep radvd» on your router to see if it is. If it’s not running, you can save your config file to jffs, and then run radvd manually:
radvd -C /jffs/radvd.conf
Beyond making sure IPv6 support is enabled on your client computers, you shouldn’t have to configure anything else when using radvd.
[edit] Working configuration
For comparison, here’s the output of a few commands on my router (which has a working HE.net tunnel):
root@DD-WRT:~# ip -6 addr show 1: lo: <LOOPBACK,MULTICAST,UP> inet6 ::1/128 scope host 3: eth0: <BROADCAST,MULTICAST,PROMISC,UP> inet6 fe80::21c:10ff:fe5b:7978/64 scope link 4: eth1: <BROADCAST,MULTICAST,PROMISC,UP> inet6 fe80::21c:10ff:fe5b:797a/64 scope link 5: vlan0: <BROADCAST,MULTICAST,PROMISC,UP> inet6 fe80::21c:10ff:fe5b:7978/64 scope link 6: vlan1: <BROADCAST,MULTICAST,UP> inet6 fe80::21c:10ff:fe5b:7979/64 scope link 7: br0: <BROADCAST,MULTICAST,UP> inet6 2001:470:1f0f:5cd::1/64 scope global inet6 fe80::21c:10ff:fe5b:7978/64 scope link 10: he-ipv6: <POINTOPOINT,NOARP,UP> inet6 2001:470:1f0f:5cd::1/64 scope global inet6 2001:470:1f0e:5cd::2/64 scope global inet6 fe80::48b3:3572/128 scope link
root@DD-WRT:~# ip -6 route show 2001:470:1f0e:5cd::/64 via :: dev he-ipv6 metric 256 mtu 1480 advmss 1420 2001:470:1f0f:5cd::/64 via :: dev he-ipv6 metric 256 mtu 1480 advmss 1420 2001:470:1f0f:5cd::/64 dev br0 metric 256 mtu 1500 advmss 1440 2000::/3 dev he-ipv6 metric 1024 mtu 1480 advmss 1420 fe80::/64 dev eth0 metric 256 mtu 1500 advmss 1440 fe80::/64 dev eth1 metric 256 mtu 1500 advmss 1440 fe80::/64 dev vlan0 metric 256 mtu 1500 advmss 1440 fe80::/64 dev vlan1 metric 256 mtu 1500 advmss 1440 fe80::/64 dev br0 metric 256 mtu 1500 advmss 1440 fe80::/64 via :: dev he-ipv6 metric 256 mtu 1480 advmss 1420 ff00::/8 dev eth0 metric 256 mtu 1500 advmss 1440 ff00::/8 dev eth1 metric 256 mtu 1500 advmss 1440 ff00::/8 dev vlan0 metric 256 mtu 1500 advmss 1440 ff00::/8 dev vlan1 metric 256 mtu 1500 advmss 1440 ff00::/8 dev br0 metric 256 mtu 1500 advmss 1440 ff00::/8 dev he-ipv6 metric 256 mtu 1480 advmss 1420 default dev he-ipv6 metric 1024 mtu 1480 advmss 1420
[edit] External Links
- IPv6 at Wikipedia
- IPv6 Information Page
- «IPv6: What, Why, How» — a presentation/tutorial to introduce those familiar with IPv4 to IPv6
- Setting up IPv6 using Hurricane Electric on DD-WRT v23 — SAMBA
- Setting up IPv6 using Hurricane Electric on DD-WRT v23 — NVRAM
- Setting up ipv6 using MyBSD/MANISV6 on DD-WRT v23
Теперь, когда вы подготовились к переходу на IPv6, давайте приступим к настройке вашего роутера. В этом разделе мы рассмотрим основные шаги по настройке IPv6 на роутере, включая вход в веб-интерфейс, включение IPv6, настройку автоматической конфигурации адресов и туннелирование (при необходимости).
Вход в веб-интерфейс роутера
Для начала настройки роутера подключитесь к его веб-интерфейсу. Обычно это делается с помощью веб-браузера, в адресной строке которого вводится IP-адрес роутера (обычно 192.168.0.1 или 192.168.1.1). Введите логин и пароль администратора, указанные в инструкции по эксплуатации роутера или на самом устройстве.
Включение и настройка IPv6
Перейдите в раздел настроек IPv6 вашего роутера. Здесь вам нужно включить поддержку IPv6 и выбрать тип подключения. Обычно роутеры предлагают следующие опции подключения: «Native» (родной), «Tunnel 6to4» или «Tunnel 6in4». Если ваш провайдер поддерживает IPv6, выберите «Native». В противном случае выберите один из типов туннелирования.
Вводите параметры, предоставленные вашим интернет-провайдером, такие как префикс IPv6, адрес шлюза и адреса DNS-серверов. Если вы используете туннелирование, вам также потребуется ввести адрес удаленного туннельного сервера.
Настройка автоматической конфигурации адресов (SLAAC или DHCPv6)
В разделе настроек IPv6 роутера выберите механизм автоматической конфигурации адресов: SLAAC или DHCPv6. В большинстве случаев SLAAC будет достаточным и простым в настройке. Однако, если вы предпочитаете использовать DHCPv6 для более тонкой настройки адресации, выберите его и введите соответствующие параметры.
Туннелирование IPv6 (при необходимости)
Если ваш провайдер не поддерживает IPv6 и вы выбрали один из типов туннелирования, перейдите в соответствующий раздел настроек роутера. Введите параметры туннеля, такие как адрес удаленного туннельного сервера, локальный и удаленный IPv6-префиксы, а также другую информацию, которую может потребовать ваш роутер. Обычно провайдер или туннельный сервис предоставляют всю необходимую информацию для настройки. После завершения настройки туннелирования сохраните изменения и перезагрузите роутер, если это требуется.
Теперь, когда ваш роутер настроен на использование IPv6, следующим шагом будет проверка работы IPv6 в вашей домашней сети и решение возможных проблем. В следующем разделе мы рассмотрим, как проверить корректность работы IPv6 и как обеспечить безопасность при использовании нового протокола адресации.
IPv6 – это новая версия Интернет Протокола (IP), который отвечает за задачи маршрутизации данных в сети Интернет. Сетевой протокол IPv6 отличается от предыдущей версии, IPv4, большим адресным пространством, что позволяет более эффективно использовать ресурсы сети и обеспечивать подключение большего числа устройств к Интернету.
При использовании различных устройств, таких как компьютеры, смартфоны, планшеты, смарт-телевизоры и домашние электронные устройства, все они требуют уникальных IP-адресов для своей идентификации в сети. В связи с исчерпанием свободных IPv4-адресов, использование IPv6 становится все более актуальным.
Если вы являетесь владельцем роутера TP-Link и хотите настроить подключение к IPv6, вам потребуется выполнить несколько простых шагов. Во-первых, проверьте, поддерживает ли ваш роутер IPv6. Это можно сделать, прочитав руководство пользователя или перейдя в настройки роутера через веб-интерфейс. Если ваш роутер поддерживает IPv6, далее необходимо настроить его.
Для настройки IPv6 в роутере TP-Link выполните следующие шаги:
- Войдите в веб-интерфейс роутера ТР-Линк, введя адресную строку любого веб-браузера и введя имя пользователя и пароль администратора.
- Откройте раздел «Настройки», затем выберите «Сеть» и «LAN».
- В разделе «IPv6» выберите «Включить» и введите нужные параметры, такие как предпочитаемый и другой DNS-серверы, префикс подсети и т.д.
- Сохраните изменения и перезагрузите роутер, чтобы применить новые настройки.
Завершив эти шаги, ваш роутер TP-Link будет настроен для использования IPv6. Это позволит вашим устройствам подключаться к Интернету с использованием IPv6 и получать уникальные адреса для своей идентификации в сети.
Обратите внимание, что IPv6 реализуется не на всех моделях роутеров TP-Link, поэтому перед настройкой рекомендуется проверить наличие поддержки IPv6 в документации или на сайте производителя.
Содержание
- Что такое IPv6
- Определение и особенности
- Как настроить ipv6 в роутере tp link
- Шаги по настройке
- Преимущества использования ipv6
Что такое IPv6
IPv6 (Internet Protocol version 6) — это последняя версия протокола интернет-протокола (IP), который используется для идентификации и связи устройств в сети. IPv6 был разработан для замены предыдущей версии протокола — IPv4.
Основное отличие IPv6 от IPv4 заключается в формате адреса. Вместо четырех разделенных точками октетов (например, 192.168.0.1), IPv6 использует более длинный формат адреса, состоящий из восьми групп, разделенных двоеточием (например, 2001:0db8:85a3:0000:0000:8a2e:0370:7334). Количество доступных адресов IPv6 намного превосходит количество доступных адресов IPv4, что позволяет поддерживать растущее количество устройств, подключенных к интернету.
IPv6 имеет ряд преимуществ по сравнению с IPv4, включая:
- Большое количество доступных адресов: IPv6 использует 128-битные адреса, в то время как IPv4 использует только 32 бита. Это означает, что IPv6 может обеспечить значительно большее количество уникальных адресов для подключения устройств.
- Улучшенная безопасность: IPv6 включает встроенную поддержку механизмов безопасности, таких как IPsec, что обеспечивает защиту данных, передаваемых по сети.
- Улучшенные возможности маршрутизации: IPv6 поддерживает более эффективные механизмы автоматической маршрутизации, что обеспечивает более быстрое и эффективное передвижение данных в сети.
Для использования IPv6 необходимо, чтобы как ваш компьютер, так и устройство, с которым вы хотите установить соединение, поддерживали протокол IPv6. Более того, ваш провайдер должен поддерживать IPv6 и предоставлять вам соответствующий доступ к сети. Если ваш роутер поддерживает IPv6, вы можете настроить его для использования этого протокола.
Определение и особенности
IPv6 (Internet Protocol version 6) — это последняя версия протокола Интернета, используемая для передачи данных через сеть. Она является преемником IPv4 и разработана для преодоления недостатков предыдущей версии.
Одной из основных особенностей IPv6 является увеличение размера адресных блоков с 32-х битовых в IPv4 до 128-и битовых. Это позволяет получить гораздо больше уникальных IP-адресов, что является важным фактором в условиях растущего количества устройств, подключенных к Интернету.
IPv6 также предлагает ряд других улучшений по сравнению с IPv4:
- Улучшенная безопасность: IPv6 включает в себя встроенную поддержку шифрования и аутентификации, что обеспечивает повышенный уровень безопасности при передаче данных.
- Поддержка множества устройств: IPv6 позволяет более эффективно использовать множество устройств и подключить их к сети без необходимости использования NAT (Network Address Translation).
- Улучшенная маршрутизация: IPv6 использует более эффективные алгоритмы маршрутизации, что уменьшает нагрузку на маршрутизаторы и повышает производительность сети.
- Поддержка новых технологий: IPv6 облегчает интеграцию с новыми технологиями, такими как IoT (Internet of Things), которые требуют большего количества доступных IP-адресов.
При настройке IPv6 в роутере TP-Link необходимо убедиться, что провайдер интернета поддерживает IPv6 и предоставляет вам необходимую информацию для настройки. Затем вы можете перейти к настройке IPv6 в веб-интерфейсе роутера, где вы сможете присвоить IPv6-адрес вашей домашней сети и настроить дополнительные параметры, такие как DNS-серверы и префиксы.
Как настроить ipv6 в роутере tp link
IPv6 — это последняя версия протокола интернета, предназначенная для обеспечения масштабируемости сети и увеличения адресного пространства. Некоторые провайдеры интернета уже переходят на ipv6 и требуют его настройки на роутере для корректного подключения к сети.
В этой статье мы рассмотрим, как настроить ipv6 в роутере tp link. Процесс настройки отличается в зависимости от модели роутера, поэтому следуйте инструкциям, предоставленным в руководстве пользователя вашей модели tp link.
Для начала, вам нужно войти в панель управления роутером. Обычно это делается путем ввода IP-адреса роутера в адресную строку браузера. Затем введите логин и пароль для доступа к панели управления.
После входа в панель управления tp link найдите раздел, отвечающий за настройку ipv6. Обычно он называется «IPv6 Setup» или «IPv6 Configuration».
Настройте следующие параметры:
-
Режим работы: выберите «Ручная настройка» или «Включить».
-
Тип подключения: выберите тип подключения, предоставляемый вашим интернет-провайдером. Это может быть «PPPoE», «DHCPv6», «Статический IPv6» или другой тип подключения. Если не знаете, какой тип подключения вам нужен, обратитесь к своему провайдеру интернета.
-
IPv6-адрес: введите IPv6-адрес, предоставленный вашим провайдером. Если у вас статический IPv6-адрес, введите его в этом поле. Если у вас динамический IPv6-адрес, оставьте это поле пустым или выберите опцию «Автоматически».
-
Другие настройки: в зависимости от вашего провайдера интернета, могут быть дополнительные настройки, такие как DNS-серверы, префикс длины сети и т.д. Если вам необходимо указать такие параметры, введите их в соответствующих полях.
После внесения всех необходимых изменений, сохраните настройки и перезагрузите роутер. После перезагрузки ваш роутер будет настроен для работы с ipv6.
Если у вас возникли проблемы с настройкой ipv6 в роутере tp link, рекомендуется обратиться в службу поддержки вашего интернет-провайдера или к команде технической поддержки tp link для получения дополнительной помощи.
В итоге, настройка ipv6 в роутере tp link позволит вам полноценно использовать все возможности нового протокола интернета и подключаться к сети вашего провайдера без проблем.
Шаги по настройке
Для того чтобы настроить IPv6 в роутере TP-Link, выполните следующие шаги:
-
Начните с открытия веб-браузера на компьютере, который подключен к вашему роутеру.
-
Перейдите к веб-интерфейсу роутера, введя IP-адрес роутера в адресной строке браузера. Обычно адрес состоит из чисел «192.168.0.1» или «192.168.1.1», но это может отличаться в зависимости от модели роутера и его настроек.
-
Введите имя пользователя и пароль для доступа к веб-интерфейсу роутера. По умолчанию это обычно «admin» и «admin» или «admin» и «пустое поле».
-
После входа в веб-интерфейс роутера найдите раздел «IPv6 Settings» или «Настройки IPv6».
-
Включите поддержку IPv6, выбрав опцию «Enable IPv6» или «Включить поддержку IPv6».
-
Введите ваш IPv6-адрес, который будет предоставлен провайдером Интернет-услуг в поле «IPv6 Address» или «IPv6-адрес».
-
Установите предпочитаемый DNS-сервер IPv6, введя его адрес в поле «Preferred DNS Server» или «Предпочитаемый DNS-сервер».
-
Нажмите кнопку «Save» или «Сохранить», чтобы сохранить настройки и применить их к роутеру.
Теперь ваш роутер TP-Link настроен на использование IPv6. Убедитесь, что ваш провайдер Интернет-услуг поддерживает IPv6 и предоставляет вам IPv6-адрес для правильной работы.
Преимущества использования ipv6
IPv6 (Internet Protocol version 6) представляет собой следующее поколение протокола интернета, которое заменяет существующий IPv4. Использование IPv6 имеет несколько преимуществ по сравнению с IPv4:
-
Расширенное адресное пространство: IPv6 использует 128-битные адреса, что позволяет создавать намного больше уникальных адресов, чем в IPv4. Это особенно важно учитывать в контексте растущего числа устройств, подключенных к Интернету, таких как мобильные устройства, смарт-дома и интернет вещей (IoT).
-
Более эффективная маршрутизация: IPv6 обеспечивает более эффективную и быструю маршрутизацию данных благодаря более эффективным заголовкам и улучшенным алгоритмам маршрутизации. Это приводит к улучшению производительности сети и сокращению времени задержки при передаче данных.
-
Повышенная безопасность: IPv6 включает функции, разработанные для усиления безопасности сети, такие как встроенное шифрование и аутентификация. Это обеспечивает повышенную защиту данных от несанкционированного доступа и поддерживает более надежную передачу информации.
-
Поддержка новых технологий: IPv6 поддерживает новые технологии, такие как мультимедиа и потоковое видео, лучше, чем IPv4. Это позволяет просматривать видео высокой четкости, играть в онлайн-игры или передавать потоковое видео без задержек и подпрыгиваний.
В целом, использование IPv6 в сети обеспечивает более эффективную, безопасную и гибкую сетевую инфраструктуру, способную удовлетворить потребности современного интернет-подключения. Поэтому все больше провайдеров и организаций переходят на IPv6 для обеспечения лучшего опыта пользователей и поддержки будущего роста Интернета.