LINUX.ORG.RU

Предотвращение утечки DNS на VPN

 , , ,


0

1

Что уже сделано:

В конфиге сервера, прописано:

push "block-outside-dns"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Если прописывать

--block-outside-dns
то сервер не понимает синтаксис команды.

В клиенте, если указать следующее:

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

То на хостовой системе, Debian, клиент не запускается, с ошибкой:

Options error: Unrecognized option or missing or extra parameter(s)

Но если запустить на виртуальной машине, так же с Debian, то запускается. Но утечка DNS все равно присутствует.

Как мне исправить данную утечку?

★★

На клиенте systemd-resolved? Уже не помню всех деталей, но на клиенте у меня в файле /etc/NetworkManager/dispatcher.d/flush-dns-cache

#!/usr/bin/bash

/usr/bin/echo "NM-SCRIPT-DEBUG: DEVICE_IFACE=$DEVICE_IFACE NM_DISPATCHER_ACTION=$NM_DISPATCHER_ACTION" | /usr/bin/systemd-cat

case $NM_DISPATCHER_ACTION in
    up)
        [[ $DEVICE_IFACE =~ ^tun[0-9]+$ ]] && {
            /usr/bin/resolvectl default-route $DEVICE_IFACE true
            /usr/bin/resolvectl domain $DEVICE_IFACE '~.'
            /usr/bin/resolvectl dns $DEVICE_IFACE 8.8.8.8
    ;;
    vpn-up)
            /usr/bin/resolvectl default-route $DEVICE_IFACE false
            /usr/bin/resolvectl domain $DEVICE_IFACE 'skip.'
            /usr/bin/resolvectl flush-caches
    ;;
    vpn-down)
            /usr/bin/resolvectl flush-caches
            /usr/bin/resolvectl default-route $DEVICE_IFACE true
            /usr/bin/resolvectl domain $DEVICE_IFACE '~.'
            /usr/bin/resolvectl dns $DEVICE_IFACE 77.88.8.8
    ;;
esac
exit 0

# Send signal USR1 to systemd-resolve, it should print DNS cache into syslog:
#     sudo killall -SIGUSR1 systemd-resolve 
# Check syslogs for results:
#     journalctl -b-0 -u systemd-resolved -f | grep -iE "google|yandex|ya|cache|flush"

И наверное весь смысл этого скрипта был в том чтоб заставить systemd-resolved поменять default-route:

sudo resolvectl default-route wlp4s0 false
sudo resolvectl default-route tun0 true 

Ну и чтоб сбросить DNS кеш после включения/выключения тоннеля.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от Aber

На клиенте systemd-resolved?

Установил, сработало без скрипта. На виртуальной машине. На хосте, dnsleaktest не увидел утечки. Но скрипт сохранил, на всякий случай. Благодарю.

Riniko ★★
() автор топика
Последнее исправление: Riniko (всего исправлений: 1)