DNS tunneling over 53 udp and ssh

Материал из AlexNook
Перейти к навигацииПерейти к поиску

Если вы столкнулись с проблемой урезания трафика вашим провайдером, или злым админом, или родителями или ещё кем-то, когда некоторые порты закрыты, когда доступ к некоторым веб сайтам обрезан, когда вырублена аська и тому подобное, то возможно данное решение вам поможет.

Приготовления в созданию тунеля через 53 порт

Если вас урезали дальше некуда фаерволами и другими программами, и не оставили открытым почти ничего кроме нескольких веб сайтов и пары основных портов, то выход есть. Практически во всех случаях остаётся открытым порт 53TCP/UDP по которому идут DNS запросы, без которых как правило работать нельзя. Эти запросы помогают человеку не помнить кучу IP адресов ресурсов, или же размещать на одном IP несколько разных веб ресурсов, например, сайтов.

Если порт 53 открыт, то шанс поднять зашифрованный Socks туннель есть. Для этого нужно иметь:

  • Сервер, который имеет полный доступ в сеть, который не ограничен админами, и трафик которых не фильтруется на выход.
  • На сервере должна быть возможность устанавливать программное обеспечение
  • Должен быть доступ к серверу по ssh.

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

В качестве компьютера, который находится в локальной сети, где идёт жёсткий контроль трафика и режутся все соединения прокси сервером или фаерволом будет выбран обычный комп под управлением ОС Windows 7 64 bit.

Описание схемы работы тунеля

В кратце постараюсь описать функционирование тунеля.

Т.к. у нас на нашей машине, которая запрятана за фаерволом открыт порт 53, то весь трафик мы будем пускать именно по этому порту. Соединяться по этому порту мы будем с нашим сервером, который стоит во вне, и именно он будет обслуживать все наши запросы, перенаправляя их куда следует. Рассмотрим краткий пример такой транзакции. Мы посылаем запрос с нашего Windows компьютера на 53-й порт, адресованный нашему серверу, тот в свою очередь принимает его и переадресует уже по абсолютно другому адресу и другому порту, который как раз и может быть заблокирован на нашей Windows машине. Далее получив ответ от третьего сервера, наша машина в интернете переправляет его обратно нам на нашу Windows машину. Всё вроде просто: 53 порт открыт, пы через него общаемся с посредником, который имеет полную связь с внешиним миром, который в свою очередь транслирует наши запросы куда нам будет угодно, не забывая возвращать ответы.

Всё кажется хорошим, но есть одно но, весь трафик идёт полностью открытым, и любому легко будет его перехватив просмотреть. А именно тем лицам, которые и ограничивают использование интернета на нашей Windows машине. Вторым но является неудобство того, что надо каждый раз при создании сеанса указывать а куда именно наш посредник в интернете должен перекидывать запрос, сперва это может быть сайт Yandex.ru, но потому нам может понадобится Google.com и т.д. Что делать. Решение проблемы простое - это поднятие внутри нашего тунеля ещё одного, который будет идти по протоколу ssh. Это решит вопрос шифрования, а т.к. программа putty позволяет легко динамически перекидывать порты, мы ещё и получим socks прокси, который нам позволит выходить динамически на нужный нам порт и нужный адрес в сети.

Установка необходимого программного обеспечения

Какое же программное обеспечение нам потребует? Рассмотрим оба компьютера, как под Windows, так и под Gentoo.

Самое важное и первонеобходимое, что нам нужно это крохотная програмка, которая и будет выполнять всё чёрную работу по поднятию первого, основного туннеля - PingTunnel. Так же нам потребуется SSH демон, а так же клиентское ПО для соединения по SSH из-под Windows - putty.

Note: Поднятие соединения под Linux с динамическим перебрасыванием портов под Linux выполняется одной командой:

Установка программ под Gentoo

Дл

ССылки