Настрой себе IPv6 в Debian и Ubuntu

    Настрой себе IPv6 за несколько простых шагов.

    Настраивать будем Debian Squeeze. В Ubuntu в принципе то же самое.

    Шаг 1. Регистрируем туннель


    Заходим на сайт Hurricane Electric, регистрируемся. Логинимся на сайте, и создаём туннель: вписываем свой IPv4 адрес и выбираем сервер поближе. Нам выделяют одну /64 подсеть, в которой будут находиться сервер и клиент как конечные точки туннеля.

    В подсети /64 туннеля первый адрес — адрес сервера, второй — адрес клиента (то есть, наш).

    Если у вас есть локальная сеть и вы хотите чтобы все машины в ней тоже получили IPv6 адреса, то запрашиваем ещё одну /64 подсеть («routed /64»). Если у вас 2 или более локальных сети за роутером, то запрашиваем /48 подсеть («routed /48»), которую будем нарезать на нужное количество /64. Все выделенные нам подсети будут маршрутизироваться через наш сервер.

    Шаг 2. Настраиваем IPv6


    Настраиваем туннель — интерфейс he-ipv6. Здесь используем подсеть /64 для туннеля. Вместо «переменных» вводим то, что получили на первом шаге.

    Дописываем в конец /etc/network/interfaces
    auto he-ipv6
    iface he-ipv6 inet6 v4tunnel
            address $CLIENT_IPv6
            netmask 64
            endpoint $SERVER_IPv4
            local $CLIENT_IPv4
            gateway $SERVER_IPv6
            ttl 64


    Включаем и проверяем:
    # ifup he-ipv6
    # ping -n ipv6.google.com


    Шаг 3. DNS и Google


    К сожалению, ipv6.google.com — единственная DNS запись Google, которая резолвится в IPv6 для всех. Google решил пока не резолвить все сервисы в IPv6 из-за того, что на довольно большом числе машин он неправильно настроен или неправильно отключен, в связи с чем пользователь может увидеть задержку пока браузер пытается соединиться с сервером по IPv6, а на самом деле IPv6 соединения нет.

    Подробнее: www.google.com/intl/en/ipv6

    Таким образом, Google решил включать IPv6 в DNS в масштабе отдельных провайдеров. Hurricane Electric относится как раз к таким провайдерам. Они предоставляют DNS сервер 2001:470:20::2, через который все домены сервисов Google резолвятся в том числе и в IPv6 адреса.

    Можно сразу вписать в /etc/resolv.conf этот сервер, а можно поднять локальный кеширующий bind и немного выиграть в скорости.

    # apt-get install bind9

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

    Правим файл /etc/bind/named.conf.options
    acl mynetworks {
      localhost;
      192.168.0.0/16; // наша локальная сеть, если есть
      2001:XXXX:XXXX:XXXX::/64; // наша IPv6 /64
      2001:XXXX:XXXX::/48; // наша IPv6 /48, если есть
    };

    options {
      directory "/var/cache/bind";

      allow-query { mynetworks; };

      forwarders {
        2001:470:20::2;
      };

      auth-nxdomain no;
      listen-on-v6 { any; };
    };


    Проверяем:
    # dig +short google.com @::1 AAAA
    2a00:1450:8003::63
    2a00:1450:8003::67
    2a00:1450:8003::68
    2a00:1450:8003::69
    2a00:1450:8003::6a
    2a00:1450:8003::93


    Если всё хорошо, то можно использовать. Вписываем в /etc/resolv.conf
    nameserver ::1


    Если нет локальной сети — то всё готово :)

    Шаг 4. Маршрутизация


    Для настройки машин в локальной сети предлагаю использовать stateless autoconfiguration. Это чем-то напоминает DHCP, но разница в том, что этот протокол staleless, то есть, сервер не хранит список выданных адресов. Принцип работы следующий: серверу выделяется одна /64, из которой он раздаёт адреса клиентам. Уникальность полученного IPv6-адреса обеспечивается тем, что в него включается MAC адрес клиента (немного преобразованный).

    Пусть у нас на eth0 локальная сеть, а на eth1 — провайдер. Пока что IPv6 настроен только на интерфейсе he-ipv6. Поэтому eth0, смотрящий в локальную сеть должен получить статический IPv6-адрес для установки соединений с клиентами. Но мы не может назначить eth0 адрес из нашей туннельной /64, так как тогда получится что два интерфейса смотрят в одну и ту же подсеть. Можно разбить нашу /64 на две, но тогда не будет работать stateless autoconfiguration. Поэтому мы взяли себе ещё одну /64, из которой будем раздавать адреса в локальную сеть (важно подчеркнуть: это настоящие внешние IPv6 адреса). Пусть нам выдали 2001:XXXX:YYYY:ZZZZ::/64.

    Если у нас несколько сетей за маршрутизатором, то мы взяли себе ещё и /48, из которой будем использовать необходимое количество подсетей /64. Пусть нам выдали 2001:XXXX:YYYY::/48. Дописываем ещё номер сети — будет занимать целых 2 байта и получаем: 2001:XXXX:YYYY:1::/64. Таким образом, у нас могло бы быть аж 65536 разных сетей. Адресом сервера будет 2001:XXXX:YYYY:1::1. Дальше пример с несколькими сетями не развиваю, думаю что довольно просто обобщить конфигурационные файлы на случай нескольких сетей.

    Итак, у нас одна сеть за маршрутизатором, 2001:XXXX:YYYY:ZZZZ::/64. Дописываем в конец /etc/network/interfaces
    iface eth0 inet6 static
            address 2001:XXXX:YYYY:ZZZZ::1
            netmask 64


    Устанавливаем демона для stateless autoconfiguration:
    # apt-get install radvd

    /etc/radvd.conf
    interface eth0
    {
      AdvSendAdvert on;
      MaxRtrAdvInterval 30;

      prefix 2001:XXXX:YYYY:ZZZZ::1/64
      {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
        AdvValidLifetime 300;
        AdvPreferredLifetime 120;
      };
    };


    Включаем форвардинг:
    /etc/sysctl.conf
    net.ipv6.conf.all.forwarding=1


    # sysctl -w net.ipv6.conf.default.forwarding=1
    # echo 1 > /proc/sys/net/ipv6/conf/all/forwarding


    Перезапускаем radvd:
    # invoke-rc.d radvd restart

    Теперь все компьютеры из локальной сети должны автоматически получить IPv6 адреса и адрес шлюз. За процессом можно следить на сервере при помощи команды radvdump, а на клиентах проверять наличие адреса при помощи ip -6 a.

    DNS-сервер придётся прописать клиентам вручную, stateless autoconfiguration этого не умеет.

    Шаг 5. Avahi


    Так как адреса клиентов основываются на MAC адресах, то в результате получаются адреса вида: 2001:528d:d4b6:1:215:f2ff:fe55:2d85. Работать с этим довольно тяжело, запомнить — невозможно. На помощь приходит multicast dns и его реализация в виде Avahi.

    # apt-get install avahi-daemon avahi-utils

    Проверяем наличие в /etc/avahi/avahi-daemon.conf строк:
    [server]
    use-ipv4=yes
    use-ipv6=yes


    Теперь все компьютеры в локальной сети получат имена вида hostname.local. Эти имена будут резолвиться по умолчанию в IPv4 адреса. Чтобы они резолвились по умолчанию в IPv6, правим строчку в /etc/nsswitch.conf.

    Было:
    hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

    Стало:
    hosts: files mdns_minimal [NOTFOUND=return] dns mdns


    Теперь можно использовать имена hostname.local и по умолчанию будут устанавливаться IPv6 соединения.

    Шаг 6. Squid + IPv6


    Держите кеширующий прокси в локальной сети? Небольшая проблема: Squid получил полноценную поддержку IPv6 только в версии 3.1.0.x, которая сейчас находится в репозитории experimental. На самом деле ничего особо экспериментального, у меня нормально работает уже 4 месяца.

    Устанавливаем squid3, в разрешающий ACL вписываем наши сети /64 и /48.

    Удачных экспериментов!

    UPD. На linuxforum заметили, что Hurricane Electric выдаёт две /64, поэтому запрашивать /48 с одной локальной сетью не нужно. Обновил топик.

    UPD2. В связи с появившимися копипастами напомнимаю, что перепечатка разрешена только с моего разрешения.
    Метки:
    Поделиться публикацией
    Комментарии 75
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          чтобы смотреть на пляшущую черепашку и юзать гугл по ipv6.

          вобщем, нахрен не нужно.
          • НЛО прилетело и опубликовало эту надпись здесь
            • +2
              Сейчас не нужен. Но если посмотреть на стремительно уменьшающийся список IPv4 сетей то остаётся только лишь гадать о сроке — когда?!
              Имхо, а быть готовым заранее, изучить технологию — это всегда дополнительный плюс нежели наоборот.
            • НЛО прилетело и опубликовало эту надпись здесь
              • +1
                а что, если мы щас всем хабром эту процедуру проделаем то кучу v4 ip'шников освободим? а если куча народу этого сделает то они уменьшаться перестанут?

                как ситуация «с настроенным ipv6 туннелем» отличается от ситуации «как есть»? в чём смысл описанных выше действий?

                целесообразность перехода на ipv6 вообще я сейчас не обсуждаю, я говорю о том что смысла никакого этот дополнительный туннель ставить не вижу. покажите мне его.
                • НЛО прилетело и опубликовало эту надпись здесь
                  • –9
                    IPv6 принципиально отличается от IPv4? по-моему нет. какие принципы тогда тут понимать надо?
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • –3
                        читал статью на вики.
                        • НЛО прилетело и опубликовало эту надпись здесь
                          • +3
                            поставлю вопрос по-другому. даже на два разобью.

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

                            2) какие из этих затруднений можно было бы избежать настроив сейчас туннель IPv6?
                            • 0
                              1. Да. Например, вы обнаружите, что ваш прокси-сервер не поддерживает IPv6. Или что у вас не настроен IPv6 фаервол и вы вообще не в курсе как его настраивать.

                              2. Вы проверите что всё работает однократно и выключите туннель. Или оставите туннель включённым и увидите сразу любые проблемы, которые могут возникнуть при обновлении программ.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • +9
                                  Отличная идея! Давайте попросим НЛО перевести хабр на IPv6, чтобы в IPv4 сайт был не доступен!

                                  Конечно же посещаемость упадет, но это даже хорошо — отсеются школьники, секретарши и прочие не гики. Зато по-настоящему преданные читатели легко настроют себе туннель и продолжат общаться :-)))
                                  (для непонятливых — здесь смайлик стоит)
                                  • НЛО прилетело и опубликовало эту надпись здесь
                                    • 0
                                      кроме шуток — в чём идея запуска в ipv6-only? это элементарно невыгодно.
                                      • НЛО прилетело и опубликовало эту надпись здесь
                                        • +4
                                          Меньше /24 не роутится? Ну и хрен с ним, зато пацанам покажу!
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                • 0
                                  Вопрос не в том, что провайдер переведет вас на ipv6, вопрос в том, что будет когда ipv4 закончатся и новые сервера будут ipv6-only?
                      • +2
                        Ни у кого из пользователей нет IPv6 -> никто из владельцев серверов не имеет IPv6 -> нет смысла пользователям включать IPv6. Замкнутый круг.

                        • НЛО прилетело и опубликовало эту надпись здесь
                          • 0
                            Microsoft уже три года пользователей переводит, практически у всех, кто работает под вистой и 7, уже есть доступ к адресам IPv6.
                            • +1
                              Только почему-то «техники» моего провайдера когда подключают Windows машину всегда первым делом отключают IPv6. И когда звонишь в техподдержку это один из дежурных вопросов «а не включен ли случайно?..» И многие «крутые компьютерщики» поступают так же.

                              Я никого не защищаю, я просто рассказываю реально существующие ситуации.
                  • +2
                    В закладки однозначно.
                    Я понимаю что ipv4 кончаются, но не также, поэтому: а нафига? и так всё работает.
                    • +1
                      Лучше пораньше проверить, что ОС и ПО будет нормально работать с введением IPv6. И заодно самому получить немного новых знаний и навыков. Делать всё потом и в спешке — не лучший вариант.

                      • +1
                        +1 Чем ближе час Х (кончатся ipv4 адреса), тем дороже и востребованней будут опытные специалисты по ipv6.
                        Спасибо за отличную статью, в мемориз. Жаль плюсануть не могу.
                    • +2
                      ох не найду ссылку. в книге по ipv6 была ссылка, если ты коннектился к странице по ipv6, то черепашка на странице начинала танцевать(на обложке на книге написано «Учим черепашку танцевать»)
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • +1
                        tunnelbroker.net этот положили чтоли?… не открывается.
                        • 0
                          надо создать какой-нибудь блог «linux для домохозяек» и складывать туда такого вида самые простые мануалы.
                          • 0
                            кто ищет, тот найдет:)
                          • 0
                            Статья хорошая, обязательно попробую завтра на работе.
                            Правда немного страшновато и доконца весь этот ипв6 непонятно :)

                            Опять же — как будет работать впн? Как (пере)настраивать файрвол? А если у меня длинк вкачестве шлюза?)
                            Ну куча мелких, но беспокоящих вопросов.
                            • +1
                              > Опять же — как будет работать впн?

                              Как и раньше. Маршрутизацию IPv4 пакетов мы не трогали.

                              > Как (пере)настраивать файрвол?

                              Да, для IPv6 отдельные правила фаервола. Настройку ip6tables я не описал, но по объему это на отдельную статью потянет.

                              > А если у меня длинк вкачестве шлюза?)

                              Регистрировать туннель на его внешний адрес. Включить проброс протокола 41.
                              • +2
                                Хотите еще один золотой топик? Напишите как раз про ip6tables :)
                            • 0
                              а объясните мне тёмному, пожалуйста.

                              1) выданные этой организации подсети — они насколько «официальные»? это будут мои личные белый IPv6 подсети? и никто их у меня не отберёт?
                              2) если ответ на первый вопрос «да» — то получается когда мой провайдер начнёт поддерживать IPv6, то я смогу с этими подсетями к нему прийти? а потом перейти к другому провайдеру, сохранив при этом адреса?
                              • 0
                                Если нужны свои личные адреса — при наличии существующей AS можно взять себе PI-блок Ipv6-адресов у своего LIR-а.
                                Hurricane Electric поддерживает BGP через туннели.
                                • 0
                                  нет, нету у меня никакой AS. я просто хочу понять что за адреса тут раздают. получается hurricane electric просто таким образом раздаёт адреса из своего пула?
                                  • 0
                                    Да, точно также как вам провайдер тоже должен будет дать /64 (насколько я помню, такая для них рекомендация).
                              • +1
                                Раз уж пошел разговор, кто-нить может доступно объяснить зачем локальные адреса в IPv6 перетаскивать, просто для «единообразия»?
                                • –2
                                  Компьютеры внутри локальной сети получат полноценные внешние IPv6 адреса — разве это не хорошо?
                                  • –2
                                    Ммм боюсь быть неверно истолкованным, но: принцип «не трогай, пока работает» никто не отменял. Не совсем понятен профит назначения белых адресов внутри локалки, если к ним в интересах безопасности режется доступ снаружи на том же шлюзе которому конечно такой адрес нужен.

                                    Может дело в костылях маршрутизации для такой сетки? Типа надо уметь ходить и по таким адресам и по «не таким»?
                                    • 0
                                      > если к ним в интересах безопасности режется доступ снаружи на том же шлюзе

                                      Не понял. В статье показано так, что ничего не режется. Это наоборот нужно кроме всего вышеперечисленного ещё фаервол настроить, и зарезать лишнее.
                                      • 0
                                        Пардон :) стоило уточнить, что я уже не про сетку из статьи, а просто о сферической сетке в вакууме. Обычно же все-таки режут доступ на шлюзе.
                                        • 0
                                          Пусть режут, но режут лишнее. Ведь это удобно: торренты работают «из коробки», нет проблем с передачей файлов в Jabber или ICQ, можно заходить на машину по ssh не через промежуточный сервер, а сразу. В общем сразу отпадает необходимость в port forwarding.
                                      • 0
                                        Наверное я вас неправильно понял. Клиентским компьютерам нужны IPv6 адреса чтобы иметь доступ в IPv6 интернет при помощи обычной маршрутизации. Если же клиенты ходят через прокси, то IPv6 достаточно только на проксе, а до прокси можно IPv4.
                                        • +1
                                          Эм. Внешние IP не отменяют firewall-а на шлюзе. В чем проблема?
                                          • +2
                                            глобальные ип внутри сетки… можно избаиться от ната. которій хорошо грузит роутер при большом кол-ве соединений с большим трафиком…
                                        • +2
                                          можно отказаться от NAT. резко снизится нагрузка на маршрутизатор.
                                        • +1
                                          вобщем ладно. уговорили. пойду поковыряю =)
                                          • +2
                                            по поводу назначения /48 на локальную подсеть: почему нельзя туннель и локальный интерфейс объединить в бридж и всем сидеть в /64?
                                            • 0
                                              Можно. Но это немного сложнее настраивать.
                                              • 0
                                                Можно все в одной подсетке на разных интерфейсах настроить.
                                              • 0
                                                При регистрации туннеля выдаёт Error: Your IPv4 endpoint is unreachable or unstable. Please make sure ICMP is not blocked.

                                                Роутер Netgear WGR614 v9. До меня ping доходит от знакомого немца. В чём может быть проблема?
                                                • 0
                                                  Вру. Не пингуюсь.
                                                • 0
                                                  Наверное глупый вопрос, но что значат цифры через слэш от IP?
                                                  • 0
                                                    Типа 192.168.0.0/24?
                                                    • 0
                                                      Гуглить по слову «маска подсети».
                                                • 0
                                                  Зареганные адреса будут за мной навсегда или это временное решение?
                                                  • 0
                                                    Hurricane Electric раздаёт IPv6 подсети из своей сети как обычный провайдер раздаёт статические IPv4. То есть, к другому провайдеру с этими подсетями перейти не получится.
                                                  • 0
                                                    192.168.0.0/24 — это маска 255.255.255.0

                                                    но я вообще подумал, может сразу ссылку дать
                                                    ru.wikipedia.org/wiki/CIDR
                                                    • 0
                                                      По пункту 5 дополнение. Если, например, ваш DHCP отдаёт клиентским машинам домен вида компани.local ( а у некоторых системных администраторов есть такая привычка обзывать внутренний домен ), то есть большая вероятность того что avahi не будет работать нормально.
                                                      • 0
                                                        Было бы здорово, если бы вы описали настройку dnsmasq. Я сижу через небольшой сервер-роутер и мне не хочется ставить тяжеловесный bind только для кэширования.
                                                        • 0
                                                          Приблизительно такой dnsmasq.conf:
                                                          no-resolv
                                                          no-poll
                                                          server=2001:470:20::2
                                                          interface=eth0
                                                          no-dhcp-interface=eth0

                                                      • 0
                                                        А что произойдёт с выделенными мне адресами, когда весь мир перейдёт на IPv6 и туннель больше не будет необходим?
                                                        • 0
                                                          Эти адреса «ваши» в той же мере, в какой статический IPv4 адрес, выданный обычным провайдером «ваш» — он принадлежит провайдеру и во whois записаны данные провайдера. HE — тоже провайдер и фактически адреса ваших подсетей принадлежат ему. Как только вам они станут не нужны — удалите туннель и HE сможет выдать их кому-то другому. А вот что будет когда туннели в принципе не будут нужны? Я думаю, об этом говорить рано, но в принципе если провайдеру не нужна его подсеть, он тоже может её вернуть в пул.

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