IPv6 :: Нам не страшен серый NAT.

Изображение пользователя grio.

Предположим, у вас есть 2 компьютера, подключенных к интернету. И вы хотите наладить связь между ними. Например получить доступ к SSH или VNC. Задача достаточно простая, если оба компьютера расположены в одной подсети или же просто имеют прямой IP адрес. А что делать, если оба компьютера находятся за NAT?

В этом случае к нам на помощь приходит IPv6. С помощью тоннельного брокера мы получаем белые IPv6 для обоих компьютеров. Теперь прямое соединение становится возможным. Однако, остается последняя проблема, которую призван решить этот проект - динамические адреса. Каждый раз при загрузке компьютера наш IPv6 меняется.
Что бы решить эту проблему, нам нужен сервер, имеющий внешний IP адрес и способный сохранять информацию о нашем динамическом (но прямом!) IPv6.
Для этих целей я создал вот такой небольшой проект: grio.ru/ipv6/

Достаточно открыть страницу проекта с новыми параметрами, например так:

$curl http://www.grio.ru/ipv6/save.php?email=vasia@pupkin.ru&name=Moy_Laptop&pass=parol&ip=fe80::ffff:ffff:ffff

Теперь ваш новый айпи будет сохранен в базе проекта и доступен через поиск. Можно автоматизировать процесс сохранения IPv6 адреса, добавив задание в СRON или приурочив к загрузке системы. В ОС Линукс я использую вот такой скрипт.

Для его корректной работы необходимо установить два пакета.
1. Miredo, содержащий протокол инкапсуляции IPv6 в IPv4 UDP - Teredo.
2. Curl - для обновления информации о нашем IP на сервере проекта grio.ru/ipv6/

Устанавливаются эти пакеты предельно просто. В доп.настройках они, в принципе, не нуждаются. За одно можно установить и SSH-сервер.
Выполняем в терминале:
$sudo aptitude install miredo curl ssh

Скачиваем скрипт и сохраняем его в ~/scripts/, например.
Из консоли:
$sudo crontab -e -u имя_пользователя #от имени которого будем запускать скрипт

В редакторе добавляем строку:
55 */2 * * * ~/scripts/ipv6save.sh > /dev/null  2>&1
# Скрипт будет выполняться каждые 2 часа, начиная с 0:55

Теперь заходим на сайт проекта grio.ru/ipv6/ и регистрируем имя компьютера.

Проверяем:
$~/scripts/ipv6save.sh
Должно выдать "Ok".
Затем, когда вам потребуется узнать IP адрес вашего компьютера, достаточно будет воспользоваться строкой поиска на сайте проекта или же сформировать свой запрос для страницы load.php

Всё готово? У обоих компьютеров есть IPv6 адрес?
Соединяем их по SSH:
$ssh -6 'vashlogin@2001:0:53aa:64c:2c38:2aa1:3c9d:4675'

Ура! Мы в удаленной консоле за двумя(а может быть и пятью!) NAT.

P.S.
Проект grio.ru/ipv6/ опенсорсный - можете подключиться к разработке или использовать в своих целях!
Буду рад в любом случае :)

br,
grio.

Комментарии (2)

0
Гость - 16 Август, 2011 - 07:55

Просто воспользуйтесь www.dhis.org - службой динамического DNS (аналог dyndns.com, no-ip.org и т.д), поддерживающей IPv6.
Либо не используйте teredo, а получите статические IPv6-адреса, с tunnelbroker.net или, в случае нахождения за NAT'ом, gogo6, это очень просто.

+2
grio - 16 Август, 2011 - 11:00
Изображение пользователя grio.

Кто тут тролит? :)
www.dhis.org заточен под IPv4. Плюс (вернее минус) к этому он достаточно наворочен (сложен для понимания).
gogo6.com - это вообще железяка для виндо-пользователей.
Я же предлагаю прототип приватного DNS сервера для динамических IPv6.
В принципе, прект grio.ru/ipv6/, можно развить до уровня тоннельного брокера с возможностью привязки IPv6 к компьютеру.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры