Пользователь
0,0
рейтинг
28 января 2010 в 19:56

Администрирование → Настрой себе 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. В связи с появившимися копипастами напомнимаю, что перепечатка разрешена только с моего разрешения.
gribozavr @gribozavr
карма
219,7
рейтинг 0,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (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, то черепашка на странице начинала танцевать(на обложке на книге написано «Учим черепашку танцевать»)
    • +2
    • +1
      И буквы гугла, по адресу ipv6.google.com, начинают прыгать.
      • 0
        Нихрена не прыгают к сожалению(
        • 0
          Они уже почти 2 года не прыгают.
  • НЛО прилетело и опубликовало эту надпись здесь
  • +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
    Зареганные адреса будут за мной навсегда или это временное решение?
    • 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

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

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