Клиент OpenVPN, не получающий информацию DNS

Я использую сервер OpenVPN, работающий на маршрутизаторе, установленном с DD-WRT, и я использую его для маршрутизации всего трафика через сервер VPN. Я соединяюсь с ним от нескольких устройств: ноутбук Windows, устройства на базе Android и машины Linux. Проблема, которую я имею теперь, является недавней, и ранее все хорошо работало. Эта проблема происходит только на клиентских машинах с Linux (человечность 16.04). Клиент человечности не получает адреса сервера DNS автоматически. После некоторого исследования я узнал, что должен добавить следующее в конец клиентской конфигурации:

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

Это не помогло так, я добавил также:

dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h

IP взят от маршрутизатора, и он делает вещи, работающие. До сих пор было достаточно иметь "шлюз перенаправления def1" в клиентской конфигурации.

Я не люблю это решение добавления "dhcp-опции DNS" команды, потому что я должен наблюдать за любыми изменениями сервера DNS. Там какой-либо путь состоит в том, чтобы избавиться от добавляющей "dhcp-опции DNS" опция?

3
задан 4 November 2017 в 16:07

2 ответа

Я имел ту же проблему, но сумел решить ее с помощью следующего взлома: Вместо up /etc/openvpn/update-resolv-conf Я создал файл, названный up.sh в/etc/openvpn. Выполните команду sudo gedit /etc/openvpn/up.sh и вставьте следующее:

#! /bin/bash
DEV=$1

if [ ! -d /tmp/openvpn ]; then
mkdir /tmp/openvpn
fi
CACHE_NAMESERVER="/tmp/openvpn/$DEV.nameserver"
echo -n "" > $CACHE_NAMESERVER

dns=dns
for opt in ${!foreign_option_*}
do
eval "dns=\${$opt#dhcp-option DNS }"
if [[ $dns =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then
if [ ! -f /etc/resolv.conf.default ]; then
cp /etc/resolv.conf /etc/resolv.conf.default
fi

cat /etc/resolv.conf | grep -v ^# | grep -v ^nameserver > /tmp/resolv.conf
echo "nameserver $dns" >> /tmp/resolv.conf
echo $dns >> $CACHE_NAMESERVER
cat /etc/resolv.conf | grep -v ^# | grep -v "nameserver $dns" | grep nameserver >> /tmp/resolv.conf
mv /tmp/resolv.conf /etc/resolv.conf

fi
done

Сохраните его и работайте sudo chmod +x /etc/openvpn/up.sh Затем создайте другой файл /etc/openvpn/down.sh и вставьте следующее в нем

#! /bin/bash
echo "Restoring original nameservers"
rm -f /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf 
echo "Done restoring nameservers cheers"

Сохраните его и работайте sudo chmod +x /etc/openvpn/down.sh

Теперь удалите строки:

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

И замените их:

 script-security 2
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh
4
ответ дан 1 December 2019 в 15:50

Отредактируйте свой/etc/systemd/resolved.conf - добавляет запись DNS:

DNS=8.8.8.8 8.8.4.4

Если Вы теряете свой DNS при переводе в рабочее состояние или приведении в нерабочее состояние соединения OpenVPN, работаете:

sudo systemctl restart systemd-resolved

(мог, вероятно, пихнуть это в/вниз сценарий для Вашего соединения OpenVPN).

0
ответ дан 1 December 2019 в 15:50

Другие вопросы по тегам:

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