Устраняем утечку DNS при использовании OpenVPN в GNU/Linux

2020-02-03 18642 комментарии
Решение проблемы утечки DNS (DNS Leak) и, как следствие, неправильной работы некоторых VPN-сервисов в дистрибутивах GNU/Linux

В дистрибутивах GNU/Linux, использующих новые версии системы инициализации systemd, можно встретить проблему утечки DNS. А при использовании некоторых VPN-сервисов, например Антизапрет, можно столкнутся с проблемой отсутствия разблокирования сайтов, т.к для разблокировки активно используется DNS внутри туннеля OpenVPN.

Примечание

Если у вас нет проблемы с утечкой DNS в работе OpenVPN, то выполнять следующие решения вам не стоит.

В сети можно встретить различные решения данной проблемы, например список вариантов на сайте ArchLinux. Мне же помогло следующее решение:

1. Устанавливаем пакет openresolv:

для дистрибутивов Ubuntu и подобных:

sudo apt install openresolv

для дистрибутивов Arch и подобных:

sudo pacman -S openresolv

2. Отключаем systemd-resolved:

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved

Редактируем файл NetworkManager.conf

sudo nano /etc/NetworkManager/NetworkManager.conf

Сразу под Main дописываем строчку:

dns=none

Сохраняем изменения с помощью комбинации клавиш Ctrl+O и Ctrl+X.

3. Перезагружаем систему и выполняем следующие команды. Так как на resolv.conf создан симлинк, то мы его удаляем:

sudo rm /etc/resolv.conf

И создаём новый:

sudo nano /etc/resolv.conf

Отобразится терминал с пустым файлом. Дописываем (можно указать любой DNS-сервер):

nameserver 1.1.1.1

Сохраняем изменения с помощью комбинации клавиш Ctrl+O и Ctrl+X.

Перезагружаем систему.

4. Устанавливаем скрипт:

sudo wget -O /etc/openvpn/update-resolv-conf https://raw.githubusercontent.com/alfredopalhares/openvpn-update-resolv-conf/master/update-resolv-conf.sh
sudo chmod +x /etc/openvpn/update-resolv-conf

5. Редактируем конфигурационный файл клиента с расширением .ovpn . Для редактирования файла нужно открыть его в любом текстовом редакторе.

Добавляем в файл следующие команды:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Примечание

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

Дополнительно отмечу, что в последнее время можно встретить проблему с неработающим OpenVPN клиентом через менеджер сети (NetworkManager). В таком случае запустить vpn соединение можно через терминал, миную менеджер сети. Запускаем следующим образом:

sudo openvpn --config название.ovpn

Остановить соединение можно с помощью прерывания процесса через комбинацию клавиш Ctrl+C.

© . Анатолий Гусляков

Комментарии и отзывы

Добавляя комментарий, ознакомьтесь с Правилами сообщества

Нашли ошибку?