Начну с того, что в сети подобного материала для новичков не нашёл. В этой публикации хочу просто описать некоторый приобретённый мной опыт, впрочем, эта инструкция вполне рабочая и я ею сейчас пользуюсь.
В связи с переездом в новый дом был получен и новый провайдер, выдающий только серый IP. Благо NAT его не симметричный. В моём скромном домашнем сервере на основе Raspberry pi установлена Debian-подобная система. Я создал себе простые бытовые радости: торренто-качалка и небольшое файловое облако, чтобы бросать туда по FTP накопившиеся фото. И абсолютно естественно то, что администрировать и отправлять фото было удобно непосредственно со смартфона на Android. Но серый IP лишил меня всего этого, а покупать статичный желания не было. Что ж, пришлось начать поиск решения проблемы. Очень быстро я наткнулся на выход — ipv6.
Чтобы не описывать долго алгоритм моих действий и поисков, расскажу коротко, что именно было сделано.
Есть много вариантов подключения ipv6 в настольных системах. К ним относятся сервис Teredo, 6to4, туннельные брокеры. Из этого списка для себя в ходе экспериментов установил Тередо. Это такой сетевой протокол, который инкапсулирует и передаёт пакеты ipv6 через ipv4. Для установки в среде Debian подобных систем нужно в консоли выполнить:
$ sudo apt-get install miredo
После завершения установки ваш ipv6 уже настроен и его можно использовать. Для проверки можно выполнить несколько действий.
Первое
$ ifconfig
В выводе команды вы обнаружите появившийся teredo среди сетевых устройств. Пример:
teredo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet6 addr: 2001:0:58af:53d:233a:3cc1:d1d8:1831/32 Scope:Global
inet6 addr: fe80::ffff:ffff:ffff/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1
RX packets:448 errors:0 dropped:0 overruns:0 frame:0
TX packets:434 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:45434 (44.3 KiB) TX bytes:68646 (67.0 KiB)
Ваш адрес ipv6 — 2001:0:58af:53d:233a:3cc1:d1d8:1831
Второе
$ ping6 ipv6.google.com
Это мы пингуем ipv6 версию гугла. Вот здесь внимание. Если пинг не прошёл, то вы, скорее всего, не можете использовать Teredo, у провайдера симметричный NAT. Если пинг прошёл, то:
Третье
http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php
Пробуем пинговать сервер из мира внутрь. Для этого зайдите по приведённой ссылке.
Пропинговав и получив положительный отклик, вы можете быть уверены, что соединиться с вашим сервером снаружи опять можно.
Теперь переходим к Android. И вот тут у меня начались сюрпризы. По умолчанию Android готов работать с ipv6, но провайдер мобильной сети не готов мне дать делать это. Тунельные брокеры могут работать с любой системой, но не с Android. Во всяком случае пока. Хотя брокер под именем SixXS на сайе заявляет, что у них есть пара клиентов для Android, но зарегистрироваться там просто не удалось, даже не смотря на предоставленные мной достоверные данные, которые они требуют. В общем, копая сеть, я обрёл счастье, наткнувшись на это:
http://www.gogo6.com/photo/gogodroid
Если ссылка перестанет работать, то программа так и называется — gogodroid. Работает она как клиент для туннельного брокера gogo6. В общем, я рискнул и установил этот клиент. Правда, это приложение потребовало наличия root. У меня права root есть, будет ли она выполнять свои задачи без этих прав, не знаю. Программка открылась на Android 4.4.2, опции её просты и понятны. Сразу по молчанию можно запустить клиент анонимно, не регистрируясь у брокера. Немного подумав, клиент получит свой ipv6 и, собственно, тут же можно подключиться к своему серверу через мобильную сеть. Как и раньше. Кстати, для подключения я использую удобный терминальный клиент JuiceSSH.
Сразу же хочу оговориться. Протокол Teredo не выдаёт статичного IP, а значит, придётся озаботится тем, чтобы сервер отдавал куда-либо изменившийся IP. Если у кого-то есть соображения на этот счёт — прошу делиться. Может быть есть более элегантное решение для соединения сервера на Linux и Андроид?
Спасибо за внимание. Всем хорошего пинга.
Автор: BuratinoBratPinokkio