DNS-туннелинг или халявный dialup

Дмитрий Докучаев aka Forb

Xakep, номер #051, стр. 051-058-1

(forb@real.xakep.ru)

Сейчас многие провайдеры предоставляют так называемые free-аккаунты, необходимые для пополнения счета через Web или просто для посещения провайдерского сайта. Доступ в интернет через такие аккаунты конечно же перекрыт фаерволом, поэтому они никому не нужны и малоинтересны.

Но, как известно, у медали две стороны. В наш бурный век протоколы расширяются до неимоверных пределов. DNS не исключение, так как именно через него стало возможным создание полноценного IP-туннелинга. Конечно, реализация непростая. Тут и обмен по UDP вместо надежного TCP, требование полной синхронизации данных, а также фрагментации пакетов, по той причине, что DNS-запрос может состоять лишь из 512 байт. Казалось бы, все не в пользу программиста, но и они, в свою очередь, не лыком шиты и вполне способны сделать из мухи слона =).

Первое рождение - NSTX

Итак, после долгих мучений родилась первая версия сервера и клиента NSTX (что в расшифровке означает "NameServer Transfer Protocol). Эта программа позволяет построить туннель между двумя UNIX-серверами посредством интерфейса Ethertap. Чтобы воспользоваться этой программой, нам также нужен будет собственный домен, а точнее, доступ к зонам на каком-либо dns-сервере. Механизм передачи будет примерно следующим: клиент, запущенный локально с параметром домена и dns-сервера, будет передавать зашифрованный трафик через Ethertap. Dns-сервер вернет серваку прова поле NS, тот, конечно же, обратится на эту тачку, на которой будет стоять nstx-daemon, возвращающий трафик по ethertap-интерфейсу, стоящему на системе конечной точки. В итоге получаем полноценный обмен трафиком.

Переходим от теории к практике. Для удачного эксперимента тебе понадобится домашний сервер на пингвине, который ты, надеюсь, ставил не один раз =), шелл в забугорье без установленного named'а на нем, а также собственный домен (второе и третье ты можешь попросить у кого-нибудь за символическое пиво). Далее, создаешь домен третьего уровня с полем NS, значение которого будет адресом тачки с установленным nstx.

Установка

Топаем на эту самую тачку, устанавливаем nstx и поднимаем ethertap (непосредственно через него и будет проходить весь трафик). Для начала создадим блочный файл /dev/tap0, командой "mknod /dev/tap0 c 36 16". Затем подгружаем модуль ethertap.o (locate ethertap.o, insmod /path/to/ethertap.o) и, наконец, поднимаем интерфейс:

ifconfig tap0 up 192.168.0.1, присваивая тем самым адрес.

Напоследок создаем роутинг: route add -host 192.168.0.2 gw 192.168.0.1, чтобы сервер мог видеть клиента =). И запускаем nstxd с параметром созданного домена третьего уровня.

На домашнем компьютере проделываем в точности такую же операцию, только запускаем клиент nstxcd с двумя параметрами: домен и dns-сервер, на котором прописаны зоны к этому домену, логически завершая туннелинг. Ehtertap'у клиента присваиваем ip-адрес 192.168.0.2. Затем пробуем пингануть 192.168.0.1. Если пинги пойдут, значит, тоннель работает. В моем случае все заработало со второго раза, и то из-за невнимательности :). Но так как шелл стоял очень далеко, да и коннект у прова был паршивый, такой интернет разочаровал своей медлительностью, и я забил на эту идею. Но ненадолго.

Содержание  Вперед на стр. 051-058-2

Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114