IPv4 данни през DNS сървър защо не?

Системата за имена на домейни (DNS) е създадена основно като разпределена база данни, съдържаща информация за съответствието на имена на хостове и техните IP адреси, както и допълнителна информация, като пощенски маршрути. Самата архитектура включва прехвърляне на само малки парчета информация към всяка заявка, но се оказа, че това е достатъчно, за да се организира „опаковането“ на IP трафика в поредица от DNS заявки и отговори. iodine ви позволява да тунелирате IPv4 данни чрез DNS сървър. Това може да се използва в различни ситуации, при които достъпът до интернет е защитен, но DNS заявки са позволени.

В github има iodine хранилище на проекти с клиенти и IP през DNS сървърни реализации. Авторът обяснява името на проекта така, че, от една страна, съкращението за „IP над DNS“ е „IoD“, а от друга, редът на IoD в периодичната таблица е 53, което съвпада с номера на UDP порта, използван от услугата DNS.

IPv4 данни през DNS сървър

Тя работи на Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD и Windows и се нуждае от TUN/TAP устройство. Широчината на честотната лента е асиметрична с ограничен Upload до 1 Mbit /s и Download.

В сравнение с други DNS тунели, iodine предлага:

По-висока производителност

iodine използва типа NULL, който позволява изпращането на данни надолу по веригата без кодиране. Всеки DNS отговор може да съдържа над килобайт компресирани данни.

Преносимост

iodine работи на много различни UNIX-подобни системи, както и на Win32. Тунелите могат да се поставят между два хоста, независимо от тяхната издръжливост или операционна система.

Сигурност

Иизползва challenge-response login, защитен от хеш MD5. Той също така филтрира всички пакети, които не идват от IP, използван при влизане.

По-малко настройка

Тои се справя автоматично с настройка на IP адреси на интерфейси и до 16 потребители могат да споделят един сървър едновременно. Размерът на пакета автоматично се тества за максимална пропускателна способност.

Ще разположим iodine сървъра на Vultr VPS, работещ с Ubuntu 18.04. Клиентът ще бъде настолен компютър, работещ с Lubuntu 18.04.

Освен това ще трябва да регистрираме име на домейн, да го делегираме на всеки NS сървър (същият Vultr осигурява безплатен DNS хостинг в допълнение към VPS) и ще добавим следните записи в зоната:

j IN NS jns.web-tourist.net.

jns В A 10.10.10.10

В този пример се използва зоната „ilsoftware.com“ и се предполага, че VPS-а има IP адрес „10.10.10.10“. Когато повтаря конфигурацията, четецът трябва да посочи техните данни.

Пристъпваме към конфигуриране на сървъра. Първо инсталирайте необходимите пакети:

apt install iodine iptables-persistent

След това отворете файла „/etc/default/iodine“ и го приведете във формата:

# Позволяваме на демона да стартира
START_IODINED="true"
# Демонът ще слуша на всички IP адреси, обслужва зоната j.web-tourist.net
# Адресът на сървъра в VPN мрежата 10.10.10.1/26 
# Превключвателят -c позволява на един клиент да има достъп до няколко IP-та едновременно, това ви позволява да заобикалите проблеми при използване на DNS клъстери
IODINED_ARGS="-l 0.0.0.0 -c 10.10.10.1/26 j.web-tourist.net"
# Парола, използвана от клиенти.
IODINED_PASSWORD="69hr4tc8z1"

Започваме услугата:

systemctl unmask iodined.service
service iodined start

Даваме възможност за препращане на мрежови пакети:

ехо "net.ipv4.ip_forward = 1"> /etc/sysctl.d/99_my.conf 
sysctl -p /etc/sysctl.d/99_my.conf

Минимални настройки на защитната стена (NAT + пренасочване на пакети) и запазване за автоматично зареждане при стартиране на системата:

iptables -t nat -A POSTROUTING -o ens3 -s 10.10.10.0/26 -j MASQUERADE
iptables -A FORWARD -i ens3 -o dns0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i dns0 -o ens3 -j ACCEPT
netfilter-persistent save

Това завършва настройката на сървъра и пристъпваме към конфигуриране на клиента. Ако използвате Network-Manager, трябва да инсталирате следните допълнителни пакети:

apt install network-manager-iodine network-manager-iodine-gnome

И след това създайте VPN връзка с типа iodine и посочете поддомейна и паролата, използвани за прехвърляне на трафик.

Можете също така да посочите изрично DNS сървъра, iodine ще има достъп до този, посочен в настройките за връзка. Това може да бъде важно, ако вашият основен сървър отговаря бавно или ограничава скоростта на изпращане на заявки.

Ако трябва да започнете връзка от терминала, трябва да обърнете внимание на скрипта за стартиране на iodine-client, който се предлага с iodine. За да го конфигурирате, трябва да създадете файла „/etc/default/iodine-client“ със следното съдържание:

subdomain=j.web-tourist.net
passwd=69hr4tc8z1
interface=enp10s11

Параметърът на интерфейса е незадължителен, но в някои случаи скриптът не може да определи интерфейса, чрез който машината е свързана към мрежата и в този случай трябва да бъде поискано.

След като настроите, можете да стартирате връзката с командата:

iodine-client-start

Ако нещо се обърка, търсенето на проблеми трябва да започне с преглед на регистрационните файлове от страна на сървъра с командата:

journalctl -xe -u iodine.service

След това погледнете потребителските дневници. Заслужава да се отбележат още няколко важни неща. Ако клиентът може директно да получи достъп до порта 53 / UDP на сървъра, тогава клиентът започва да използва тази функция и пропускателната способност на тунела се увеличава. Но дори и в този случай тунелът не се справя добре с голям брой едновременни TCP връзки.

Следователно популярни браузъри като Chrome и Firefox не са много подходящи за използване с IoD, тъй като те бързо запушват тунела с потоци от телеметрия, синхронизиране на потребителски данни и други подобни неща.

В съчетание с браузъри като Falkon или Midori, сърфирането в мрежата е доста удобно. Въпреки че гледането на видеоклипове и слушането на музика е почти невъзможно. Освен това трябва да се отбележи липсата на криптиране.

Като се има предвид, че iodine трафика може да премине през голям брой други DNS сървъри, трябва да сте готови да прехванете трафика. Решението може да бъде използването на само протоколи с криптиране вътре в тунела. Като възможно решение можете да започнете да използвате OpenVPN вътре в IoD.

Подкрепете ни:

Личен DNS сървър с блокиране на реклами

DNS през HTTPS на Linux

2 Replies to “IPv4 данни през DNS сървър защо не?”

Вашият коментар