Как создать свой SmartDNS proxy сервер

Рассмотрим создание своего SmartDNS proxy сервера, его работу через OpenVPN, а также бесплатно протестируем SmartDNS через OpenVPN. Для начала давайте кратко ознакомимся с тем, что такое DNS и SmartDNS.

4 мин
Автор PINTA IT
Как создать свой SmartDNS proxy сервер

DNS распределенная система, получающая информацию о доменах (названиях сайта), а именно - конвертирует, сопоставляет IP-адреса доменного имени с доменным именем. Работает примерно следующим образом: пользователь вводит название домена в браузере, DNS сопоставляет домен с присвоенным ему IP-адресом и затем возвращает браузеру ответ и направляет его к хостингу.

SmartDNS proxy DNS сервис, который кроме стандартной функции DNS выполняет дополнительные функции, такие как подмена части DNS запроса. С помощью данной подмены осуществляется разблокировка сайтов.

В большинстве случаев SmartDNS используется в качестве решения для доступа к заблокированным сайтам, т.е. тем сайтам, которые доступны только для определенных стран и не заблокированы на уровне провайдера. SmartDNS не шифрует запросы.

Установка SmartDNS от ab77 / netflix-proxy

На GitHub можно найти большое количество интересных решений для различных задач. Одним из таких решения является SmartDNS от пользователя ab77, с названием проекта netflix-proxy.

Описание проекта: netflix-proxy это smart DNS-прокси необходимый для потоковой передачи Netflix, Hulu, HBO Now и других за пределами региона. Он развертывается с использованием контейнеров Docker и использует dnsmasq и sniproxy для предоставления услуг SmartDNS. Работает для некоторых заблокированных сайтов, таких как PornHub и YouTube.

Список сайтов для разблокировки можно изменить и дополнить.

Преимущество этого решения по сравнению с другими открытыми SmartDNS решениями состоит в том, что данное решение предоставляет доступ только для авторизованных IP-адресов (клиентов).

Универсальный способ установки на серверах Ubuntu и Debian (копируем одной командой):

apt-get update\ && apt-get -y install vim dnsutils curl sudo\ && curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io\ && mkdir -p ~/netflix-proxy\ && cd ~/netflix-proxy\ && curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1\ && ./build.sh

Примечание: Для некоторых популярных хостинг-провайдеров установка может несколько отличаться. Ознакомьтесь с детальной инструкцией на сайте проекта.

Настройка SmartDNS от ab77 / netflix-proxy

По окончанию установки SmartDNS в терминале будет отображена ссылка с внешним IP-адресом сервера и его портом, а также данные учетной записи администратора для управления SmartDNS. По данной ссылке вы можете добавить или удалить IP-адреса клиентов, добавить динамический DNS для динамического IP-адреса.

Важная информация

  • С помощью SmartDNS не получится разблокировать все сайты. Например, ВК будет работать частично, Яндекс тоже частично, с Mail.ru тоже будут проблемы (в зависимости от провайдера). Киносайты, новостные и прочие сайты, в большинстве случаев будут работать. Сервис будет работать у большинства пользователей из Украины.
  • Для большинства пользователей из России, данный метод разблокировки сайтов не будет работать. SmartDNS предлагается в качестве решения для разблокировки заблокированных сайтов, а не обхода блокировок провайдеров. Чуть ниже рассмотрим дополнительный метод для разблокировки сайтов (SmartDNS через OpenVPN).
  • Для серых IP-адресов сервис не подойдет. При использовании динамического IP-адреса нужно будет создать домен динамического DNS (DDNS) и добавить его в учетную запись администратора SmartDNS.
  • Это решение использует протокол IPv6 в направлении от прокси-сервера для разблокировки сервисов с поддержкой IPv6, таких как Netflix. Для этого не требуется поддержка IPv6 на стороне клиента, достаточно только сервер VPS с общедоступным подключением IPv6. Вам также может потребоваться отключить IPv6 в локальной сети (и / или соответствующих устройствах).
  • В сетевых настройках адаптера нужно указывать только один, а именно полученный DNS сервер. В качестве альтернативного сервера ничего указывать не надо.

Итак, установка завершена, мы получили данные для авторизации.

Копируем полученную ссылку и авторизуемся в учетной записи администратора.

В опции Add IP добавляем наш или клиента IP-адреса и при необходимости в опции DynDNS добавляем домен динамического IP-адреса.

Список сайтов для разблокировки расположен в файле ~/netflix-proxy/dnsmasq.conf.

Данный список можно отредактировать на свой, а затем обновить командой:

docker restart dnsmasq

SmartDNS proxy через OpenVPN

В первую очередь данное решение стоит рассматривать в качестве решения для выборочной разблокировки сайтов. Сейчас все больше сайтов используют Cloudflare в качестве DNS сервера своего домена, что делает невозможным его разблокировку по IP-адресу. В таком случае гораздо удобнее будет разблокировка с помощью SmartDNS, но обернутая в OpenVPN. Кроме того, OpenVPN использует шифрование, а это значит, что провайдер не увидит ваши сетевые запросы и соответственно не сможет их заблокировать.

Такое решение еще удобно тем, что позволяет в одном конфигурационном файле OpenVPN задействовать второй сервер для разблокировки. Например, такие сайты как Вконтакте, Яндекс мы можем пустить непосредственно с сервера OpenVPN, расположенного в РФ, а в нем указать использование нашего SmartDNS сервера, который будет разблокировать сайты для РФ.

В созданный конфигурационный файл server.conf добавляем следующие изменения:

push "dhcp-option DNS xxx.xxx.xxx.xxx" push "route xxx.xxx.xxx.xxx"

Где xxx... это наш SmartDNS сервер. Первая строчка будет создана и в ней мы заменим DNS сервер на свой, а вторую строчку добавим самостоятельно.

Важно: В настройках учетной записи администратора SmartDNS не забудьте добавить IP-адрес сервера OpenVPN. Так как сервер OpenVPN будет являться клиентом для SmartDNS, то перед установкой OpenVPN сервера отключите поддержку IPV6 на сервере.

Бесплатный SmartDNS через OpenVPN сервер

В качестве теста предлагаю протестировать OpenVPN конфигурационный файл, в котором популярные российские сервисы работают через маршрутизацию OpenVPN, а некоторые другие сайты (например seasonvar) через SmartDNS.

Скачайте файл test_vpn_comss_one.ovpn, установите приложение OpenVPN, затем нажмите на ярлык OpenVPN в системном трее и выберите опцию Импортировать конфигурацию. В открывшемся окне добавьте файл test_vpn_comss_one.ovpn.