Как исправить утечку DNS OpenVPN

Вы можете попробовать следующее awk:

awk '{ for (i = 6; i <= NF; i++) { if ($i == $4) { $i = 0; } else if ($i == $5) { $i = 1; } } } 1' file

или:

awk '{ for (i = 6; i <= NF; i++) { $i = ($i == $4) ? 0 : 1; } } 1' file
7
02.04.2018, 13:34
6 ответов

У меня была проблема с утечкой DNS в Ubuntu 17.10, а теперь и в 18.04 LTS. Должно быть, это началось, когда я обновился с 16.10 некоторое время назад, и я никогда не думал проверять до сих пор случайно. Ничего из вышеперечисленного (и других вещей, которые я нашел и попробовал ), не помогли, пока я не наткнулся на этот URL ниже, прочитав отчет об ошибке. Комментарий о добавлении строки приоритета dns -у меня сработал.

https://bugs.launchpad.net/network-manager/+bug/1624317см. комментарий #103.

Найдите установленные VPN-подключения NetworkManager («$» — это просто моя системная подсказка, чтобы показать, что вы находитесь в командной строке в окне терминала):

$ ls -la /etc/NetworkManager/system-connections/*

Затем выберите тот, который вы хотите исправить, и запустите на нем эту команду (или вы можете просто отредактировать файл конфигурации вручную, так как эта команда просто добавляет запись приоритета dns -в разделе ipv4):

$ sudo nmcli connection modify <vpn-connection-name> ipv4.dns-priority -42

И перезапустить:

$ sudo service network-manager restart

Обратите внимание, что, по крайней мере для меня, помещение его в конфигурационный файл OpenVPN.ovpn, полученный из моей VPN (ProtonVPN ), не сработало. По какой-то причине он не попал в конфигурацию NetworkManager, когда он был установлен с помощью диалогового окна GUI. Только обновив конфиг после его установки, а затем перезапустив NetworkManager, заработало. И вам нужно сделать это для каждой установленной конфигурации VPN, которую вы хотите использовать.

4
27.01.2020, 20:17

Тааааак, ответ таков: внимательно следуйте инструкциям всегда -на -из вики ArchLinux:

https://wiki.archlinux.org/index.php/OpenVPN#Update_systemd-resolved_script

и к добавить соответствующие строки.

Итак, в два приема:

sudo apt install openvpn-systemd-resolved

и добавьте следующие строки в ваш файл.ovpn:

script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

Если это неясно, теперь ваш файл должен содержать две строки «вверх» и две строки «вниз»:

# old lines
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
# new lines
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

[Редактировать 1 :На самом деле НЕТ, это не было причиной, по которой это сработало]

См. Редактировать 1 в моем вопросе.

[Редактировать 2 :Думаю, на этот раз я правильно понял]

Эта проблема странного systemd-resolved.serviceповедения упоминается здесь .

Кажется, в конфигурационный файл клиента можно добавить следующую опцию:

dhcp-option DOMAIN-ROUTE.

, который, очевидно, направляет все DNS через выбранное соединение...

7
27.01.2020, 20:17

Похоже, это ошибка из-за того, что Ubuntu переключился на systemd -resolve до того, как пакет openvpn -manager -openvpn был обновлен, чтобы он знал о systemd -resolve. Ubuntu 18.10, кажется, решил эту проблему с помощью сетевого -менеджера 1.12.2 -0ubuntu5. Подробнее здесь :https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/10.

До тех пор, пока это не будет опубликовано, ответ @Bob Willan работал на меня.

2
27.01.2020, 20:17

Мне удалось решить эту проблему, добавив эти строки в мой конфигурационный файл OpenVPN:

script-security 2

up /etc/openvpn/update-resolv-conf

down /etc/openvpn/update-resolv-conf

из @ Как устранить утечку DNS OpenVPN в Linux

А для пользователей Windows (OpenVPN +2.3.9):

block-outside-dns

0
27.01.2020, 20:17

Я также столкнулся с -проблемой утечки DNS. Модификация моего файла ovpn не помогла. Причина - отсутствие пакета. OpenVPN не предупредил меня об этом.

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

Взглянув на скрипт cat /etc/openvpn/update-resolv-conf, я увидел, что он вызывает другую программу по адресу /sbin/resolvconf. Выполнение ls /sbin/resolvconfпоказало мне, что мне не хватает этого файла. Быстрый поиск привел меня к пропавшему пакету.

После установки с помощью apt install openresolvизменения в моем скрипте ovpn вступили в силу.

1
27.01.2020, 20:17

Если -как и я -у вас не установлен пакет resolvconfи вы не хотите его устанавливать, вы можете использовать приведенный ниже сценарий для обновления файла resolv.conf.

#!/bin/bash

# ------------------------------------------------------------------------------
# EN: Update resolv.conf to use the DNS defined by the VPN
# PT: Atualiza os DNS do resolv.conf para usar os definidos pela VPN
# ------------------------------------------------------------------------------

# ------------------------------------------------------------------------------
# Get DNS defined by the VPN service
# Exit with error if the DNS array is empty
# ------------------------------------------------------------------------------

function getVpnDns() {
    for frgn_optn in ${!foreign_option_*} ; do
        for fo in "${!frgn_optn}" ; do
            DNSARRAY+=( $(echo $fo | awk '/dhcp-option DNS/{print $3}') )
        done
    done
    [ -z "$DNSARRAY" ] && exit 1
}

# ------------------------------------------------------------------------------
# Write DNS to resolv.conf
# ------------------------------------------------------------------------------

function writeResolvConf() {
    getVpnDns
    for DNS in ${DNSARRAY[@]} ; do
        echo "nameserver $DNS"
    done | tee /etc/resolv.conf
}

# ------------------------------------------------------------------------------
# Switch between resolv.conf configs on 'up' and 'down' events
# ------------------------------------------------------------------------------

case "$script_type" in
    up)
        mv -v /etc/resolv.conf /etc/resolv.conf.rag && writeResolvConf
    ;;
    down)
        mv -fv /etc/resolv.conf.rag /etc/resolv.conf
    ;;
esac
0
11.08.2020, 04:00

Теги

Похожие вопросы