Предположим, у нас есть 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 на сервере проекта.
Устанавливаются эти пакеты предельно просто. В доп.настройках они, в принципе, не нуждаются. За одно можно установить и 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,