Sto utilizzando un server OpenVPN in esecuzione su un router installato con DD-WRT e lo sto utilizzando per instradare tutto il traffico attraverso il server VPN. Mi sto collegando ad esso da diversi dispositivi:laptop Windows, dispositivi Android e macchine Linux. Il problema che ho ora è recente e prima tutto funzionava bene. Questo problema si verifica solo sulle macchine client con Linux (ubuntu 16.04). Il client Ubuntu non ottiene automaticamente gli indirizzi del server DNS. Dopo alcune ricerche, ho scoperto che dovrei aggiungere quanto segue alla fine della configurazione del client:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Questo non ha aiutato, quindi ho aggiunto anche:
dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h
Gli IP vengono presi dal router e fa funzionare le cose. Finora era sufficiente avere “redirect-gateway def1” nella configurazione del client.
Non mi piace questa soluzione di aggiungere i comandi "dhcp-option DNS" perché devo guardare eventuali modifiche del server DNS. C'è un modo per eliminare l'aggiunta dell'opzione "dhcp-option DNS"?
Risposta accettata:
Ho avuto lo stesso problema ma sono riuscito a risolverlo usando il seguente hack:
Invece di up /etc/openvpn/update-resolv-conf
Ho creato un file chiamato up.sh in /etc/openvpn.
Esegui il comando sudo gedit /etc/openvpn/up.sh
e incolla quanto segue:
#! /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
Salvalo ed esegui sudo chmod +x /etc/openvpn/up.sh
Quindi crea un altro file /etc/openvpn/down.sh
e incolla quanto segue
#! /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"
Salvalo ed esegui sudo chmod +x /etc/openvpn/down.sh
Ora rimuovi le linee:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
E sostituiscili con:
script-security 2
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh