После покупки сервера и установки на него Wireguard с дашбоардом я задумался что неплохо было бы выжать из сервера побольше. Да и сам дашбоард для впн сделать немного удобнее.
На глаза попались вопросы об использовании DNS over HTTPS, а почему бы и да, подумал я. В результате чего и получилась эта статья.
Все сайты в интернете имеют доменное имя, каждому доменному имени соответсвует IP адрес, по которому браузер сайт и находит, но IP адреса запоминать сложно, а доменные имена довольно легко. Перед подключением к сайту браузер сначала по открытому протоколу обращается к DNS серверу узнает IP и уже затем напрямую по IP обращается к сайту. Т.к. протокол открытый он легко перехватывается и просматривается его содержимое, на основе чего можно подменять ответы и перенаправлять трафик. И даже при использовании разных VPN DNS трафик зачастую идет мимо зашиврованного канала и может перехватываться.
Что бы немного усложнить задачу перехватчикам был разработан протокол DNS over HTTPS или DoH, суть его заключается в следущем, запрос на разрешение имени идет через HTTPS протокол и он уже зашифрован, а т.к. это не стандартный DNS трафик он в любом случае пойдет через VPN если вы его используете.
Поддержка протокола довольно быстро появилась во всех ОС и браузерах, при этом можно выбрать одного из публичных провайдеров DNS, включить ее довольно просто. И мне идея понравилась, но использовать публичные серверы ну совсем не хочется.
Что понадобится:
Собственный сервер с ОС Ubuntu 22 на борту
2. Доменное имя - ниже расскажу где как и забесплатно
3. 10 минут времени на настройку и небоязнь подключаться по ssh, нужно будет выполнить несколько команду, всю настройку я подготовил и завернул в простые башскрипты выложенные на гитхаб
Пункт 1
И так, нам понадобится сервер, где купить и как купить решайте сами. RuVDS, VDSina, Veesp т.д.
Можете воспользоваться моей реферальной ссылкой на Veesp, в благодарность так сказать. Как купить у них я рассказывал в прошлой статье.
В общем покупаем или не покупаем сервер, находим его IP адрес и пароль пользователя root в письме от провайдера или панели управления вашего хостинга.
Пункт 2
Тут нам понадобится доменное имя, но бесплатных доменных имен второго уровня к сожалению не бывает, зато есть бесплатные доменные именя третьего уровня, или субдомены. Для этих целей более чем и главное бесплатно.
Идем на https://www.duckdns.org/ и авторизуемся одним из предложенных способов, есть Google, persona, github или twitter
Далее придумываем своему серверу доменное имя, нажимаем кнопку add, если такой субдомен свободен то он появится в списке ниже, если нет нужно будет придумать что-то еще, главное что бы вы легко его запомнили. Потом в списке вводим IP адрес вашего сервера и нажимаем кнопку update ip.
Доменное имя получили и настроили, теперь можно проверить заработало ли оно, открываем терминал или cmd в windows и пробуем пропинговать его командой:
Вместо test-vps нужно указывать домен который вы придумали. Если видите ответы от IP адреса вашего сервера как на скришоте снизу значит все хорошо и можно переходить к следующему шагу
Пункт 3
Подключаемся к вашему серверу по SSH, как это сделать можно узнать в интернетах и приступаем к настройке
1. Скачиваем скрипты и заходим в папку со скриптами
Если git не установлен, то его нужно установить
2. Выдаем права на исполнение
3. Запускаем первый скрипт, который установит установит необходимое ПО для получения SSL сертификата, получит его и настроит автопродление
test-vps.duckdns.org нужно заменить на ваше доменное имя полученное ранее
4. Запускаем второй скрипт, который установит и настроит необходимое ПО для DoH
Опять для скрипта указываем доменное имя, что бы все прошло хорошо. Данный скрипт установит DNS load balancer dnsdist. На обычные DNS запросы он отвечать не будет, только по протоколу HTTPS, в качастве аплинков указан набор публичных открытых DNS серверов, каждый следующий запрос будет отправляться на случайно выбранный сервер из списка
5. Запускаем третий скрипт, он установит и настроит Wireguard и WGdashboard для управления
Важно, если у вас уже есть установленный Wireguard или Wireguard и WGdashboard, то скрипт может не отработать, либо сотрет текущие настройки, лучше запускать скрипт на чистой системе.
Если же вы все равно хотите его запустить то рекомендую забекапить настройки Wireguard например вот так:
mkdir -p /root/backup
cp -r /etc/wireguard/* /root/backup
cp /wgdashboard/src/wg-dashboard.ini /root/backup/
А после выполнения скрипта положить бекапы на место
rm -rf /etc/wireguard/*
rm -rf /wgdashboard/src/wg-dashboard.ini
cp -r /root/backup/* /etc/wireguard/
cp /root/backup//wg-dashboard.ini /wgdashboard/src/wg-dashboard.ini
wg-quick down wg0
wg-quick up wg0
systemctl restart wg-dash
На этом можно считать настройку сервера законченной, теперь к интерфейс WGdashboard можно зайти по доменному имени, https://test-vps.duckdns.org:10086, ни каких ошибок сертификата и прочего. Какие настройки нужно произвести в панели управления и настроить клиентские подключения можно посмотреть в моей прошлой статье
Настройка DoH в браузере
Теперь настроим то ради чего была написана эта статья
Открываем настройки браузера, в поле поиска вводим dns. Я покажу на примере Firefox, в Chrome и Opera настройки примерно в том же месте и выглядят примерно аналогичным образом.
Ставим галочку Enable DNS over HTTPS, в поле Use Provider выбираем Custom, в поле Custom вводим адрес нашего сервера https://ДОМЕННОЕ-ИМЯ-ВАШЕГО-СЕРВЕРА/dns-query
Нажимаем ОК
Если не хотите делать свой сервер вполне можно остаться на дефолтном, но включить этот функционал я рекомендую в любом случае.
Проверить работу можно здесь
Заходим, нажимаем большую оранжевую кнопку Check My Browser, в результатах должно быть примерно такое:
Вот эти три галочки должны стоять, там есть еще четвертая, но на нее можно не обращать внимания.
Вот собственно и все, спасибо за внимание.