Есть:
— отключенный за неуплату интернет (adsl, lan, etc)
или
— нешифрованная wi-fi сеть c закрытым интернетом, но работающим dns
или
— очень строгий firewall с открытым dns
Хочется:
полноценный интернет, пусть даже очень медленно
Прежде, чем ответить на вопрос «как?» — несколько замечаний.
1. Эта статья — практическое руководство, а не теоретический курс «введение в особенности работы служб DNS» (на эту тему и так написано достаточно).
2. Все примеры приводятся для платформы windows, как самой популярной на десктопах. С другой стороны, все приведенные методы работают не хуже и в unix-окружении (google без труда подскажет альтернативы там, где у меня упоминаются windows-only решения).
3. Чтобы описанный способ заработал, вам понадобится в качестве сервера постоянно работающий и подключенный к интернету компьютер с «белым» IP (не важно, статическим или динамическим, но адреса вида 192.168.*.* или 10.*.*.* не подойдут).
4. Эй, provider guys! NSTX, использующий аналогичный метод, известен уже лет 7, а все равно до сих пор в большинстве сетей этот трюк срабатывает. Теперь и «под винду» есть решение «под ключ». Берегите dns'ы :)
Во всех случаях, перечисленных в начале статьи, остается одна лазейка — dns-сервер, до которого обычно можно «достучаться». Что нам дает dns сервер? Теоретически — возможность послать запрос произвольного содержания на произвольный другой dns-сервер (уже за пределами «закрытой/отключенной» зоны), и получить произвольный ответ. Теоретически, это позволяет получить доступ к сети, инкапсулируя IP пакеты в dns запросы и ответы. Сейчас я расскажу, как это сделать на практике.
P.S. Оно есть и под maemo, и под win mobile.
P.P.S. Умный читатель догадается, что чтобы совсем все хорошо работало, нужно еще подправить MTU в реестре.
UPD: ссылка для желающих поучаствовать в разработке iodine
— отключенный за неуплату интернет (adsl, lan, etc)
или
— нешифрованная wi-fi сеть c закрытым интернетом, но работающим dns
или
— очень строгий firewall с открытым dns
Хочется:
полноценный интернет, пусть даже очень медленно
Прежде, чем ответить на вопрос «как?» — несколько замечаний.
1. Эта статья — практическое руководство, а не теоретический курс «введение в особенности работы служб DNS» (на эту тему и так написано достаточно).
2. Все примеры приводятся для платформы windows, как самой популярной на десктопах. С другой стороны, все приведенные методы работают не хуже и в unix-окружении (google без труда подскажет альтернативы там, где у меня упоминаются windows-only решения).
3. Чтобы описанный способ заработал, вам понадобится в качестве сервера постоянно работающий и подключенный к интернету компьютер с «белым» IP (не важно, статическим или динамическим, но адреса вида 192.168.*.* или 10.*.*.* не подойдут).
4. Эй, provider guys! NSTX, использующий аналогичный метод, известен уже лет 7, а все равно до сих пор в большинстве сетей этот трюк срабатывает. Теперь и «под винду» есть решение «под ключ». Берегите dns'ы :)
Введение
Во всех случаях, перечисленных в начале статьи, остается одна лазейка — dns-сервер, до которого обычно можно «достучаться». Что нам дает dns сервер? Теоретически — возможность послать запрос произвольного содержания на произвольный другой dns-сервер (уже за пределами «закрытой/отключенной» зоны), и получить произвольный ответ. Теоретически, это позволяет получить доступ к сети, инкапсулируя IP пакеты в dns запросы и ответы. Сейчас я расскажу, как это сделать на практике.
Часть 1. Регистрация
- Регистрируемся на сервисе dyndns.com
- Заводим себе динамический dns, выбираем адрес (скажем, dnstun.dyndns.org)
- Регистрируемся на сервисе co.cc
- Регистрируем себе у них бесплатный домен (скажем, dnstun.co.cc), и указываем для него dns сервером наше dyndns-имя, dnstun.dyndns.org (если такой способ не сработает, можно добавить к домену nx-запись для его поддомена, ссылающуюся на наш dyndns-домен, это делается в «Zone Records», к примеру, host: tunnel.dnstun.co.cc, type: NS, Value: dnstun.dyndns.org", и в дальнейшем вместо dnstun.co.cc везде использовать tunnel.dnstun.co.cc)
- Ждем делегирования домена и появления его на всех dns серверах (до 48 часов)
Часть 2. Сервер (т.е. тот компьютер, который находится в «большом» интернете, без всяких firewall и т.д.)
- Скачиваем и устанавливаем dyndns updater:
www.dyndns.com/support/clients - Скачиваем и устанавливаем TAP драйвер из пакета OpenVPN:
openvpn.net/release/openvpn-2.0.9-install.exe - Скачиваем свежую сборку iodine:
code.kryo.se/iodine/iodine-latest-win32.zip - Запускаем сервер iodine:
iodined -f 10.0.0.1 dnstun.co.cc - С помощью kerio или встроенных средств windows создаем общий доступ к интернету для вновь появившегося сетевого соединения (через виртуальный адаптер TAP-Win32 Adapter V8)
Часть 3. Клиент (тот компьютер, которому из всего интернета доступен только dns)
- Скачиваем и устанавливаем TAP драйвер из пакета OpenVPN:
openvpn.net/release/openvpn-2.0.9-install.exe - Скачиваем свежую сборку iodine:
code.kryo.se/iodine/iodine-latest-win32.zip - Запускаем клиент:
iodine -f 92.162.2.72 dnstun.co.cc
Здесь 92.162.2.72 это IP адрес любого доступного dns сервера
(именно IP, писать ns1.provider.ru нельзя — не сработает).
Узнать IP dns серверов, установленных в системе, можно по команде
ipconfig /all - Теперь остается настроить роутинг так, чтобы все пакеты, кроме тех, что идут к dns серверу, заворачивались на вновь поднятый виртуальный интерфейс. Это — домашнее задание. Подсказка.
P.S. Оно есть и под maemo, и под win mobile.
P.P.S. Умный читатель догадается, что чтобы совсем все хорошо работало, нужно еще подправить MTU в реестре.
UPD: ссылка для желающих поучаствовать в разработке iodine