Настройка IPv6 или IPv6 в массы

    image

    UPDATE: Так как все это писалось давно, то смысл использовать скрипты сильно теряется, осталось ради истории.
    Все можно и наверно лучше настроить через inadyn.
    Синтаксис файла конфигурации примерно такой:

    dyndns_system ipv6tb@he.net
    username es1125cc87b23bfe1f3ba8923ca7f2ee
    password PASS-WORD
    alias 10220

    На Habrahabr уже существуют статьи по настройке IPv6, например тут и тут. и тут
    Сам я рекомендую почитать version6, там примеры зачем это надо.

    Я же решил сделать процесс поднятие туннеля более универсальным и автоматизированным…
    Для этого я написал два простых скрипта, но ..., давайте по порядку.

    В качестве туннельного брокера я использую Hurricane Electric.

    Hurricane Electric позволяет, создавать до 5 туннелей и
    умеет автоматически генерировать готовые примеры команд, для поднятие туннеля на разных ОС
    Позволяет по URL обновить ваш IPv4 адрес. (пример)
    Имеет свой ДНС сервер.

    Если бы у меня был прямой статический ip, я бы наверно не стал писать скрипты, а просто поднял бы интерфейсы и радовался.
    Но увы, как и у большинства людей у меня прямой динамический ip и нет возможности купить прямой статический (провайдер их не продает), а значит возникает еще две задачи.

    1) При замене IPv4, надо будет обновить IPv4 и на конце поднятого туннеля
    2) При замене IPv4, надо сообщить брокеру, о его изменении.

    ну и еще одна задача, сделать поднятие туннеля и обновление в случае изменения IPv4 универсальным для разных linux систем, а то различные конфигурации сетевых настроек в разных системах — меня утомляют.

    Комментарии в скрипте я оставил специально на ENG.

    Первый скрипт создает или удаляет туннель IPv6. (используется команды start/stop)

    Информацию для заполнения переменных, можно получить после создания туннеля у брокера на вашей странице.

    -----------------Описание-переменных-для-ipv6tunnel----------------------------------------------------------

    #Name Tunnel — Имя вашего туннеля. Может быть любым.
    HE_IPv6=«he-ipv6»

    #Server IPv4 address: — IP-адрес туннельного сервера.
    IPV4_S=«216.66.80.90»

    #Client IPv6 address: — IPv6-адрес вашего конца туннеля.
    IPV6_C=«2001:470:aaaa:ccc::2/64»

    #Интерфейс с прямым ip
    INT_WAN=«ppp0»

    -----------------начало-скрипта-ipv6tunnel------------------------------------------------------------------------
    #!/bin/bash
    # Create 6in4 tunnel endpoint script
    # for use with http://www.tunnelbroker.com (Hurricane Electric)
    # C 2010  icCE aka TuLiss (tuliss@gmail.com)
    # Distributed under the terms of the GNU General Public License v3
    
    #Name Tunnel
    HE_IPv6="he-ipv6"
    
    #Server IPv4 address:
    IPV4_S=""
    
    #Client IPv6 address:
    IPV6_C=""
    
    #Interface Wan
    INT_WAN="ppp0"
    
    #Tunel ttl
    TUN_TTL="255"
    
    DESC="6in4"
    
    #WAN IP
    WAN_IP=$(ip addr show $INT_WAN | awk '/inet/ {print $2}')
    
    case "$1" in
     start)
            echo "Starting $DESC tunnel"
            ifconfig $HE_IPv6 &>/dev/null
            if [ $? -eq 0 ]; then
             echo "Tunnel $HE_IPv6 already exists"
            exit 1
            fi
    
            ip tunnel add $HE_IPv6 mode sit remote $IPV4_S local $WAN_IP ttl $TUN_TTL
            ip link set $HE_IPv6 up
            ip addr add $IPV6_C dev $HE_IPv6
            ip route add ::/0 dev $HE_IPv6
            ;;
    
     stop)
            echo "Stopping $DESC tunnel"
            ifconfig $HE_IPv6 &>/dev/null
            if [ $? -ne 0 ]; then
             echo "Tunnel $HE_IPv6 does not exist"
            exit 1
            fi
    
            ip link set $HE_IPv6 down
            ip tunnel del $HE_IPv6
            ;;
    
            *)
              echo "Usage: $0 {start|stop}" >&2
             exit 1
    esac
    exit 0
    


    -----------------конец-скрипта-ipv6tunnel------------------------------------------------------------------------

    Второй скрипт, который позволяет передать новый IPv4 адрес брокеру и обновить его на конце вашего туннеля.

    -----------------Описание-переменных-для-ipv6update----------------------------------------------------------

    IPV4ADDR — так как у нас динамический ip, то оставляем AUTO

    MD5PASS — ваш пароль, который используется при входе на вашу страницу брокера в виде md5.
    Для преобразования пароля в md5 выполните команду:
    echo -n 'yourpassword' | md5sum, полученное значение и будет ваш пароль в md5.

    USERID — ID пользователя, не путайте его с логином пользователя для входа на сайт брокера. ID представляет из себя длинную последовательность цифр и букв, посмотреть его можно на странице , сразу после <Name:>

    GTUNID — ID туннеля, указан на странице настройки туннеля в поле «Global Tunnel ID»

    INT_WAN — Интерфейс с прямым ip.

    #Name Tunnel — Имя вашего туннеля. Может быть любым. Должно совпадать с именем в первом скрипте.
    HE_IPv6=«he-ipv6»

    -----------------начало-скрипта-ipv6update-----------------------------------------------------------------------
      
    #!/bin/bash
    # 6in4 tunnel endpoint update script
    # for use with http://www.tunnelbroker.com (Hurricane Electric)
    # C 2010  icCE aka TuLiss (tuliss@gmail.com)
    # Distributed under the terms of the GNU General Public License v3
    
    #IPV4ADDR WHERE:
    #    * set ipv4b='AUTO' if you want to set the variable to the requesting client's IP address.
    #    * set ipv4b='your_public_ipv4_address' if you want to manully provide the address.
    IPV4ADDR="AUTO"
    
    #The MD5 Hash of your password
    # * Try echo -n 'yourpassword' | md5sum if you need to produce the MD5 Hash of your password
    MD5PASS=""
    
    #The UserID from the main page of the tunnelbroker (not your username)
    USERID=""
    
    #The Global Tunnel ID from the tunnel_details page
    GTUNID=""
    
    #Name IPV6 tunnel
    HE_IPv6="he-ipv6"
    
    #Interface Wan
    INT_WAN="ppp0"
    
    WAN_IP=$(ip addr show $INT_WAN | awk '/inet/ {print $2}')
    
    output=$(curl -ksSm30 "https://ipv4.tunnelbroker.net/ipv4_end.php?ipv4b=$IPV4ADDR&pass=$MD5PASS&user_id=$USERID&tunnel_id=$GTUNID")
    
    if [ "$output" == "That IPv4 endpoint is already in use." ]; then
       echo "That IPv4 endpoint is already in use. $WAN_IP"
      elif [ "$output" == "Your tunnel endpoint has been updated to: $WAN_IP" ]; then
       ip tunnel change $HE_IPv6 local $WAN_IP
       echo "$output"
      else
       echo "Houston, We've Got a Problem!"
    fi
    


    -----------------конец-скрипта-ipv6update-----------------------------------------------------------------------

    Сохраняем скрипты и делаем их исполняемыми.

    Запускаем первый скрипт:
    # ./ipv6tunnel start

    Если все хорошо, то увидим:
    Starting 6in4 tunnel.

    ifconfig смотрим появился ли he-ipv6 туннель.

    he-ipv6 Link encap:IPv6-in-IPv4
    inet6 addr: fe80::xxxx:yyyy/128 Диапазон: Ссылка
    inet6 addr: 2001:470:aaaa:ccc::2/64 Диапазон: Общий

    Теперь обновим IPv4, выполнив второй скрипт
    # ./ipv6update
    Your tunnel endpoint has been updated to: ваш_IP

    Если IPv4 не изменился то получим:
    That IPv4 endpoint is already in use. ваш_IP

    Пробуем сделать пинг.

    ping6 ipv6.google.com или ping6 freebsd.org

    Должен получится ответ:

    PING ipv6.google.com(2a00:1450:8001::63) 56 data bytes
    64 bytes from 2a00:1450:8001::63: icmp_seq=1 ttl=55 time=74.2 ms
    64 bytes from 2a00:1450:8001::63: icmp_seq=2 ttl=55 time=73.1 ms

    Теперь скрипт ipv6tunnel можно добавить в загрузку, а ipv6update ставить в cron и радоваться.
    От себя скажу, что правильнее всего, написать скрипт который будет мониторить изменения ip адреса и запускать ipv6update.

    >>>>>>>>>>>>>>>>>>>>Bonus<<<<<<<<<<<<<<<<<<<<

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

    По умолчанию, туннельный брокер Hurricane Electric предоставляет нам две подсети с маской /64: одна используется для связи между вашим роутером и туннельным сервером брокера, а вторая (с адресом, отличающимся на единичку в середине, он выделены жирным цветом) предназначена для использования компьютерами в вашей локальной сети, и называется в веб-интерфейсе «Routed /64».

    Ради простоты примеров, предположим, что вашей Routed-подсетью оказалась 2001:470:aaab:ccc::/64, а интерфейсом, к которому подключена локальная сеть, является eth1. Так же учтем, что файрвол выключен.

    Включаем маршрутизацию IPv6, для этого в /etc/sysctl.conf находим,

    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.default.forwarding=1

    если их нет то прописываем руками.

    Далее загрузим настройки sysctl из файла /etc/sysctl.conf

    # sysctl -p

    IPv6-адрес из раздаваемой в локалку подсети необходимо также назначить и сетевому интерфейсу самого роутера. Адрес можно выбрать любой, к примеру для роутеров часто используется адрес с ::1. Не перепутайте выданный сегмент для локальной сети, с сегментом для связи тунеля и брокера.

    ip addr add 2001:470:aaab:ccc::1/64 dev eth1

    Теперь настроем клиентский компьютер.

    Добавим к интерфейсу eth0 IPv6, пусть он будет ::2

    ip addr add 2001:470:aaab:ccc::2/64 dev eth0

    Добавим маршрут по умолчанию, для IPv6 сети.

    ip -6 ro add ::/0 via 2001:470:aaab:ccc::1 dev eth0

    Пробуем сделать пинг шлюза, а потом какого либо сервиса в интернете.

    Посмотреть таблицу роутинга IPv6 можно так:

    route -A inet6 -n или ip -6 ro sh

    Для Windows 7 достаточно будет указать адреса в параметрах сетевого соединения <Протокол Интернета версия 6>

    Так же можно проверить работу IPv6 посетив сайт HART

    Для упращение процедуры выдачи IPv6 в локальной сети, можно использовать radvd или dhcpv6.
    В Интернете достаточно материала по их настройки.

    Если у вас есть вопросы, вы можете задать их на канале #ipv6-ru (Жмите, дополнительных клиентов не надо ставить)
    Отдельное спасибо все на канале #gentoo-ru
    • +3
    • 37,8k
    • 8
    Поделиться публикацией

    Похожие публикации

    Комментарии 8
      +1
      # All rights reserved.
      # Distributed under the terms of the GNU General Public License v3


      Взаимноисключающие параграфы.

        0
        Не обратил внимание, просто разные шаблоны есть.
        0
        Кто-то может сказать — это временные ip или навсегда?
          0
          Навсегда. Я не вижу причин, что бы у вас его отнимать с таким кол-вом адресов. Возможно только, если желающих будет очень много, то туннель могут сделать платным (в теории).
            0
            Еще добавлю, что да же если ваш ipv4 ip изменится, то ваша адресация ipv6 останется, что очень удобно.
              0
              Но эти адреса нельзя забрать к другому провайдеру, это адреса HE.
                0
                Забрать нет, но использовать у другого провайдера да.
                Согласитесь, это плюс — один раз настроил и все.
              +1
              Еще добавлю, что из русских торентов, IPv6 поддерживает nnm-club.ru
              nnm-club.ru/forum/viewtopic.php?p=1541203#1541203

              http://[2001:470:1f0a:1505::2]

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

              Самое читаемое