Это — старая версия документа!


Протокол IPv6: как?

Впервые опубликовано 2009-05-02

Существует несколько вариантов настройки на имеющем адрес IPv4 компьютере поддержки IPv6: прямое, 6to4, Teredo, а также через туннельного брокера.

Первый вариант отпадает практически сразу – нет на сегодня (май-2009) в России провайдеров, готовых выдавать IPv6-адреса обычным пользователям домашнего интернета. Два следующих – 6to4 и Teredo, хотя и имеют некоторые преимущества (6to4 не требует нигде регистрироваться, а Teredo во многих системах либо задействован по умолчанию, либо крайне просто подключается), не предоставляют всех потенциальных возможностей IPv6.

Поэтому, рекомендую рассмотреть вариант использования туннельного брокера. Я пользуюсь tunnelbroker.net, на примере него и опишу регистрацию и настройку туннеля.

1. Регистрация на tunnelbroker.net

Регистрация и использование брокера являются бесплатными. Для создания эккаунта, достаточно ввести свои данные на странице http://tunnelbroker.net/register.php и нажать кнопку «Register». Пароль будет автоматически сгенерирован и выслан на указанный адрес электронной почты.

2. Создание туннеля

После регистрации эккаунта, необходимо создать туннель. Для этого следует:

  1. Войти на сайт брокера под своим именем и паролем;
  2. Выбрать в левом меню «User Functions > Create Regular Tunnel»;
  3. На открывшейся странице «Setup Regular IPv6 Tunnel» ввести свой текущий IP-адрес1). Важно, чтобы у вас (или у провайдера) не были заблокированы входящие пакеты ICMP (пинги);
  4. Ответить на вопрос «Which Server Is Closest to you?», выбрав один из туннельных серверов HE.net. Рядом указано их местонахождение и IP-адреса, рекомендую выбирать из наиболее близких географически (для России - европейских), проверив время отклика каждого из них с помощью ping или traceroute;
  5. Нажать кнопку «Submit».

3. Настройка вашего компьютера

Создав туннель, переходим на экран его настройки (выбирая в меню навигации «Account Menu → Click For Main Page», и далее - ссылку с именем туннеля в их списке). В нижней части экрана, под надписью «Example OS Configurations (Windows, Linux, etc.)», видим выпадающий список, где предлагается выбрать используемую вами операционную систему. После указания там ОС и нажатия кнопки «Show Config», сервер выдаст список конкретных команд, которые нужно выполнить, чтобы настроить у себя только что созданный туннель. К примеру, в GNU/Linux (пользуясь route2) достаточно сделать:

modprobe ipv6
ip tunnel add he-ipv6 mode sit remote <IP-адрес туннельного сервера> local <IP-адрес локальный> ttl 255
ip link set he-ipv6 up
ip addr add <IPv6-адрес вашего конца туннеля>/64 dev he-ipv6
ip route add ::/0 dev he-ipv6
ip -f inet6 addr

…а в Windows 2000/XP,

ipv6 install
ipv6 rtu ::/0 2/::<IP-адрес туннельного сервера> pub
ipv6 adu 2/<IPv6-адрес вашего конца туннеля>

Очень удобно, что в отличие от приведённых здесь примеров, сервер брокера выдаёт эти команды сразу «готовыми к употреблению», то есть размышлять, какие значения куда нужно подставить, чтобы это заработало, вам не придётся. Достаточно будет просто скопировать и вставить предложенный текст в командную строку, после чего IPv6 должен заработать.

4. Проверка работоспособности

Чтобы проверить, работает ли настроенный вами туннель, можно попробовать попинговать IPv6-версию Google. В GNU/Linux это делается командой ping6 ipv6.google.com, а в Windows – ping -6 ipv6.google.com. Либо, зайти на какие-нибудь IPv6-сайты через браузер: к примеру, на тот же ipv6.google.com или The Pirate Bay по IPv6.

5. Настройка автозапуска туннеля

Если всё работает нормально, осталось добиться того, чтобы туннель автоматически настраивался при каждом включении компьютера, или точнее, при появлении соединения с Интернетом. Сделать это можно по-разному, в зависимости от используемой вами ОС и типа подключения к Интернету.

Лично я использую Debian GNU/Linux и подключение по протоколу PPPoE. Добавил в систему два файла (оба сделал исполняемыми):

  • /etc/ppp/ip-up.d/rm-ipv6-up
  • /etc/ppp/ip-down.d/rm-ipv6-down

Во втором файле (и в самом начале первого) - команда удаления туннеля, ip tunnel del he-ipv6. В первом файле, помимо неё - скопированные с сайта брокера строчки для настройки.

Если бы я использовал на своём интернет-шлюзе Microsoft Windows, я мог бы воспользоваться программой nnCron, позволяющей выполнять заданные команды при установлении и потере PPP-соединения.

6. Настройка автообновления IP-адреса вашего конца туннеля

Поскольку на сайте брокера, в настройках туннеля, должен быть прописан ваш IPv4, существует необходимость эту информацию, при её изменении (получении нового IP-адреса) обновлять. Для этого, нужно тем или иным образом «дёрнуть» вот такой URL:

http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=<MD5 пароля>&user_id=<ID пользователя>&tunnel_id=<ID туннеля>

К примеру, в GNU/Linux, это можно сделать с помощью curl:

curl -4 -k --retry 10 --retry-delay 5 "http://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=AUTO&pass=<MD5 пароля>&user_id=<ID пользователя>&tunnel_id=<ID туннеля>"

Параметры, которые нужно указать в этом URL:

  • MD5 пароля можно получить, выполнив в командной строке echo -n <пароль> | md5sum;
  • ID пользователя (это не имя пользователя!) указан на вашей странице у брокера, представляет из себя длинную последовательность цифр и букв;
  • ID туннеля указан на странице настройки туннеля, в поле «Global Tunnel ID».

7. Раздача IPv6 в локальную сеть

На примере Debian GNU/Linux. Устанавливаем radvd:

apt-get install radvd

Изменяем файл /etc/radvd.conf следующим образом:

interface eth0
{
   AdvSendAdvert on;
   prefix <Ваша подсеть>/64
   {
       AdvOnLink on;
       AdvAutonomous on;
   };
};

Вместо «Ваша подсеть» прописываем адрес подсети, указанный на странице свойств вашего туннеля, в поле «Routed /64», вместо eth0 - интерфейс, смотрящий в локальную сеть.

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

ip addr add <Ваша подсеть>::1/64 dev eth0

Для более перманентного сохранения этой настройки, добавим её в /etc/network/interfaces:

<...>
iface eth0 inet6 static
	address <Ваша подсеть>::1
        netmask 64
<...>

Настраиваем файрвол. Это может выглядеть примерно так:

iptables -I INPUT  -p ipv6 -j ACCEPT
iptables -I OUTPUT -p ipv6 -j ACCEPT

ip6tables -F

ip6tables -A INPUT -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT
ip6tables -A FORWARD -p icmpv6 --icmpv6-type 128 -m limit --limit 900/min -j ACCEPT
ip6tables -A FORWARD -p icmpv6 --icmpv6-type 129 -m limit --limit 900/min -j ACCEPT

ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -i eth0 -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -j REJECT

ip6tables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A FORWARD -i eth0 -j ACCEPT
ip6tables -A FORWARD -j REJECT

ip6tables -A OUTPUT -j ACCEPT

Вместо eth0, опять же, подставляем интерфейс локальной сети.

Включаем маршрутизацию IPv6:

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
echo 1 > /proc/sys/net/ipv6/conf/default/forwarding

Перезапускаем radvd:

/etc/init.d/radvd restart

Всё, на этом этапе все компьютеры локальной сети должны автоматически получить адрес внутри выделенной вам подсети /64. Можно проверить это, попинговав ipv6.google.com с любого из них.

Для того, чтобы вышеуказанные команды (кроме перезапуска radvd) выполнялись при каждом запуске системы, можно добавить их, к примеру, в /etc/rc.local.

1) Если вы подключены к интернету через NAT, вводить здесь нужно реальный, интернетовский адрес вашего провайдерского NAT-шлюза.

he.net/howto.1255034509.txt.gz · Последние изменения: 2011-05-31 10:45 UTC (внешнее изменение)
Personal Tools