Cliente OpenVPN não obtendo informações de DNS

2

Estou usando um servidor OpenVPN em execução em um roteador instalado com o DD-WRT e estou usando-o para rotear todo o tráfego pelo servidor VPN. Estou conectando a partir de vários dispositivos: laptop Windows, dispositivos Android e máquinas Linux. O problema que tenho agora é recente e anteriormente tudo funcionou bem. Esse problema acontece apenas nas máquinas clientes com o Linux (Ubuntu 16.04). O cliente Ubuntu não obtém os endereços dos servidores DNS automaticamente. Após algumas pesquisas, descobri que devo adicionar o seguinte ao final da configuração do cliente:

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

Isso não ajudou, então também adicionei:

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

O IP é retirado do roteador e faz as coisas funcionarem. Até agora, bastava ter o "redirecionamento-gateway def1" na configuração do cliente.

Eu não gosto desta solução de adicionar os comandos "dhcp-option DNS" porque eu tenho que prestar atenção para quaisquer alterações do servidor DNS. Existe alguma maneira de se livrar de adicionar a opção "dhcp-option DNS"?

    
por lorandsm 04.11.2017 / 14:01

2 respostas

2

Eu tive o mesmo problema, mas consegui resolvê-lo usando o seguinte hack: Em vez de up /etc/openvpn/update-resolv-conf , criei um arquivo chamado up.sh em / etc / openvpn. Execute o comando sudo gedit /etc/openvpn/up.sh e cole o seguinte:

#! /bin/bash
DEV=

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

Salve e execute sudo chmod +x /etc/openvpn/up.sh Em seguida, crie outro arquivo /etc/openvpn/down.sh e cole o seguinte nele

#! /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"

Salve e execute sudo chmod +x /etc/openvpn/down.sh

Agora remova as linhas:

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

E substitua-os por:

 script-security 2
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh
    
por Garikai Dzoma 08.11.2017 / 16:42
0

Edite seu /etc/systemd/resolved.conf - adicione uma entrada de DNS:

DNS=8.8.8.8 8.8.4.4

Se você perder seu DNS ao exibir ou remover sua conexão do OpenVPN, execute:

sudo systemctl restart systemd-resolved

(provavelmente poderia colocar isso em um script up / down para sua conexão OpenVPN).

    
por Vanessa Deagan 12.01.2018 / 00:09