LINUX.ORG.RU
ФорумAdmin

IPv6 :: Соединяем 2 компьютера за NAT по SSH


1

1

Предположим, у нас есть 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,


Ответ на: комментарий от baverman

Статья-презентация написана на русском, вообще-то. Гуглите непонятное, статья расчитана на некий средний уровень владения сетевыми знаниями.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Если бы знать что гуглить. Непонятно как левый сайт может повлиять на сохранность адреса у брокера.

baverman ★★★
()

Ну и нахера я должен вам ещё какую-то инфу предоставлять?
У меня то же самое вс своё время решалось при помощи небольших скриптов с обоих сторон и веб-сайта у хостера, к которому я имею доступ на запись.

Я за удаление, маркетоидам и CEO на ЛОРе не место.

adriano32 ★★★
()
Ответ на: комментарий от vasilenko

По сути да, это прототип приватного DNS сервера для динамических IPv6. :)

В принципе, проект grio.ru/ipv6/, можно развить до уровня тоннельного брокера с возможностью привязки IPv6 к компьютеру.

grio
() автор топика
Ответ на: комментарий от Slavaz

Да, есть. Потому поделка ТС не нужна, ибо житель Вьетнама внезапно добравшийся до ЛОРа вызывает меньше доверия, чем скажем DynDNS.com

adriano32 ★★★
()
Ответ на: комментарий от adriano32

>CEO

вы таки уверены что CEO ходят на ЛОР в Admin?? ;)


сабж ниочем. гнать свой траффик через непонятно кем поддерживаемый grio.ru? спасибо, не надо.

dib2 ★★★★★
()
Ответ на: комментарий от grio

Начни с того, дорогой Фань Тьет, что поубирай вот этот срам

$ nmap -p 1-65535 grio.ru

Starting Nmap 5.21 ( http://nmap.org ) at 2011-08-16 11:11 EEST
Nmap scan report for grio.ru (81.177.22.120)
Host is up (0.063s latency).
Not shown: 65513 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   filtered smtp
53/tcp   open     domain
80/tcp   open     http
110/tcp  open     pop3
111/tcp  open     rpcbind
135/tcp  filtered msrpc
137/tcp  filtered netbios-ns
138/tcp  filtered netbios-dgm
139/tcp  filtered netbios-ssn
143/tcp  open     imap
443/tcp  open     https
445/tcp  filtered microsoft-ds
587/tcp  open     submission
623/tcp  filtered unknown
664/tcp  filtered secure-aux-bus
859/tcp  open     unknown
993/tcp  open     imaps
995/tcp  open     pop3s
2222/tcp open     unknown
3306/tcp open     mysql
И заныкай версию phpmyadmin http://www.grio.ru/phpmyadmin/ChangeLog , а то судя по всему ты её больше полугода не обновлял.

Я бы такому «умельцу» не то что свои IP, адрес почтового ящика своей кошки, которой у меня нет, не доверил бы.

adriano32 ★★★
()

>Скачиваем скрипт

Готовимся громко кричать и в паническом ужасе давить ^C — о боже! — ^C не работает!!!

gentoo_root ★★★★★
()
Ответ на: комментарий от adriano32

аdriano32, мне лично от тебя ничего не нужно :)

Информация, которую, оставляет пользователь проекта - минимально необходимая. На уровне логин/пароль. Без этого я себе не представляю ни одного публичного сервиса. Понятно, что можно извращаться с хостерами в индивидуальном порядке. Уверен, что многие это могут в силу своих знаний и умений. Однако я предлагаю тебе сэкономить на это не самом интересном труде немного времени. А если ты знаешь, как сделать лучше, то велкам ту опенсорс девелопмент https://gitorious.org/my-ipv6 .

grio
() автор топика
Ответ на: комментарий от grio

На уровне логин/пароль.

Логин, пароль, почта, история всех IP.

>>Понятно, что можно извращаться с хостерами в индивидуальном порядке.

IMO извращаетесь вы, предлагая доверить совсем незнакомому человеку свои IP-адреса. Моя паранойя подобного не позволяет.

>>А если ты знаешь, как сделать лучше, то велкам ту опенсорс девелопмент https://gitorious.org/my-ipv6 .

>>Owner: ~grio Created: 14 Aug 23:29 Website at http://www.grio.ru

Уже бегу, прям спотыкаюсь. Повторяю, это не нужно при наличии веб-сайта с php или cgi. Учитывая то, что скоро у вас кончатся деньги на аренду домена и сервера, вы начнёте требовать деньги за свои услуги или закроетесь.

adriano32 ★★★
()
Ответ на: комментарий от adriano32

Прежде, чем такое утверждать - глянь код проекта. http://www.grio.ru/ipv6/punbb/viewtopic.php?id=5

Емэил - это логин. Причем не важно, существует он или ты его только что придумал. Важен только regexp.

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

Пароль - о ужас! Я узнаю твой пароль, если захочу! Но кроме меня (хостера) его ни кто не может узнать. А что мне дает твой пароль? Зачем он мне сдался? Только для того, что бы напомнить его тебе, если ты вдруг забудешь. Других применений твоему паролю я не вижу.

Касательно истории IP - ее просто нет. Предыдущая запись затирается более новой. (я тоже слегка параноик, поэтому не волнуйся :)

Вообще мне непонятен твой настрой. Что не так то??? ))))

grio
() автор топика
Ответ на: комментарий от grio

Что не так то???

То, что твой сайт выглядит снаружи дырявее, чем мой домашний.

adriano32 ★★★
()
Ответ на: комментарий от grio

я тоже слегка параноик

Сам то свой личный велосипед стал бы писать, обратился к проверенным услугам публичных DynDNS или к кому угодно не глядя, типо как grio.ru?

И да, у самого на IPv6 хостинг не хватило? Или не осилил 6to4/miredo?

adriano32 ★★★
()

Что-то мне ни разу не удалось нормально поработать через miredo. В конце концов купил у провайдера белый IPv4 :(

AITap ★★★★★
()

прочитал статью. Хосспади, какой кошмар! Ты банально не разбираешься в вопросе и любишь строить велосипеды.

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

Каждый раз при загрузке компьютера наш IPv6 меняется



у меня был ДИНАМИЧЕСКИЙ белый IPv4-адрес и СТАТИЧЕСКИЙ IPv6-адрес от брокера. Который НЕ МЕНЯЛСЯ при смене ipv4-адреса. Сюрприз?. Отсюда вывод - руки кривые, а за костыльную поделку, решающую надуманную проблему многие тут даже в баню пошлют(и буду правы). Для таких вещей есть DynDNS.com, freedns.afraid.org, да тысячи их

Pinkbyte ★★★★★
()
Ответ на: комментарий от grio

>Емэил - это логин. Причем не важно, существует он или ты его только что придумал. Важен только regexp.

facepalm.mkv.tar.gz (10 Gb)

Pinkbyte ★★★★★
()

дарю ipv6 без регистрации и смс, стучать в жаббер

tazhate ★★★★★
()
Ответ на: комментарий от adriano32

Кто тут гамно? полегче, бро :)

лол не ты =) я про миредо и 6to4.

tazhate ★★★★★
()
Ответ на: комментарий от grio

Погоди, это чуть больше суток проекту, а ты идёшь его пеарить? А что будешь делать, если после N регистраций кто-то уведёт твою базу и устроит MitM-атаку клиентам?

adriano32 ★★★
()
Ответ на: комментарий от Pinkbyte

Ещё один торопыгин :) Читай внимательно условия. Далеко не у всех есть белые IP. Если ты находишься за NAT, то постоянный IPv6 тебе не светит. По крайней мере на текущий момент. Если бы было иначе, то я бы не стал ничего создавать.

grio
() автор топика
Ответ на: комментарий от adriano32

А если бы он вез патроны?! (из советского кинофильма)

Не вижу ничего плохого в популяризации любых опенсорс проектов. Пользоваться сервисом или не пользоваться - каждый решает для себя. Улучшать его, дорабатывать код, писать новые скрипты, может любой желающий.

А я продолжаю верить, что многим, как и мне, этот проект будет полезен. Не всем. Но многим, кто узнает о его существовании. «Пиарить» проект не нужно, достаточно просто узнать, что он существует.

grio
() автор топика
Ответ на: комментарий от grio

Ты смешал в кучу всё, Пинкбайт всё правильно сказал, там бред написан: если я пользуюсь услугами брокера, я отсылаю ему инфу о своём новом динамическом БЕЛОМ ipv4, и брокер держит за мной СТАТИЧЕСКИЙ ipv6.

У тебя же написано, что якобы при получении IPv6 от брокера IPv6 динамический при динамическом IPv4, что неверно по сути.

Если речь о NAT, miredo не может за symmetrical NAT, а обеспечить простоту доступа можно публичными серверами типа DynDNS.com, которые вызывают в отличие от тебя доверие.

Я, например, вижу функционал набора скриптов таким, чтоб на третьей стороне (веб-сервере) никаких действий не выполнялось, кроме хранения:
у меня скрипт с одного хоста шифрует ассиметричным ключом файл с информацией (в том числе IP), отсылает в зашифрованном виде с заранее условленным именем на сервер, где выполняется просто хранение этого файла. Второй хост по пинку крона скачивает этот файл по заранее условленному адресу, расшифровывает, разбирает инфу из файла и вуаля, я знаю адрес другой стороны.

В таком виде я согласен хранить даже у тебя этот зашифрованный файлик, если твой хостинг не падает каждые полчаса

adriano32 ★★★
()

ммм... паролики в открытом виде в GET запросике? и небось ещё и открыты для индексирования яндексом...

mm3 ★★★
()
Ответ на: комментарий от grio

>Если ты находишься за NAT, то постоянный IPv6 тебе не светит

лютое 4.2. Я сейчас за NAT(на работе) и у меня ПОСТОЯННЫЙ ipv6. Это ты поторопился :-)

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

Пинкбайт, ну расскажи, интересно же! У меня вон на серваке в универе, когда он был за NAT'ом, miredo держал один и тот же IPv6 адрес периодами в точности равными аптайму. Особенность в том, что к настройкам NAT я не имел доступа, если ты можешь пробросить порт, то, наверное, не составит труда, не?

adriano32 ★★★
()
Ответ на: комментарий от adriano32

ничего. единственный недостаток - шлюз, который делает NAT и смотрит в интернет белым IP должен отвечать на ICMP-запросы(Echo Request) извне

Pinkbyte ★★★★★
()

О нет! Они хотят превратить ЛОР в дезинформационный портал «хабрахабр».

redixin ★★★★
()
Ответ на: комментарий от grio

> Если ты находишься за NAT, то постоянный IPv6 тебе не светит.

42. Язабан. Если Вы серьезно, то учите матчасть.

redixin ★★★★
()
Ответ на: комментарий от grio

неосилятор в лице тебя детектед с первого поста треда :-) зачем использовать miredo, если можно воспользоваться tunnelbroker.net или sixxs.org

Подсказка: для обоих вышеперечисленных брокеров белый ipv4 адрес не нужен.

Пример:

oas1 src # ifconfig ppp0
ppp0      Link encap:Point-to-Point Protocol  
          inet addr:172.22.0.4  P-t-P:172.23.0.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:216345 errors:0 dropped:0 overruns:0 frame:0
          TX packets:179874 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:129213016 (123.2 MiB)  TX bytes:15401708 (14.6 MiB)

oas1 src # ifconfig tunv6
tunv6     Link encap:IPv6-in-IPv4  
          inet6 addr: fe80::ac16:4/64 Scope:Link
          inet6 addr: fe80::a00:d5/64 Scope:Link
          inet6 addr: 2001:xxx:1f08:xxx::2/64 Scope:Global
          UP POINTOPOINT RUNNING NOARP  MTU:1280  Metric:1
          RX packets:64708 errors:0 dropped:0 overruns:0 frame:0
          TX packets:36107 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:82498194 (78.6 MiB)  TX bytes:2713542 (2.5 MiB)

oas1 src # ip route | grep def
default via 172.23.0.1 dev ppp0  metric 4003
Pinkbyte ★★★★★
()
Ответ на: комментарий от grio

надо же, а у меня есть постоянный ipv6 адрес начиная с 2008 года, за это время я поменял два раза место жительства и провайдера, какую-то часть этого времени жил за nat-ом, а адрес у меня так и не сменился.

maloi ★★★★★
()
Ответ на: комментарий от redixin

Справедливо. Даже если комп. находится за NAT, можно настроить статический IPv6. Но все равно есть нюансы, да и статика в силу каких то причин может быть просто не нужна. Как бы то ни было, мой вариант реализации имеет право на жизнь. Он прост в настройке и удобен в использовании.

grio
() автор топика
Ответ на: комментарий от Slavaz

Slavaz, хорошая идея. Можно было бы поковыряться и реализовать DynDNS с поддержкой IPv6. У меня, к сожалению, на данный момент нет необходимых ресурсов. Банально, для этого нужна CM машина с постоянным IP доступ к шелу.

grio
() автор топика

Слегка апграднул bash-скрипт. Сейчас можно обойтись без CRON. Скрипт теперь сам будет следить за изменением IPv6 и обновлять данные по мере необходимости. https://gitorious.org/my-ipv6/my-ipv6/blobs/master/ipv6save.sh

grio
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.