Ich verwende einen OpenVPN-Server, der auf einem Router läuft, auf dem DD-WRT installiert ist, und ich verwende ihn, um den gesamten Datenverkehr über den VPN-Server zu leiten. Ich verbinde mich von mehreren Geräten aus damit:Windows-Laptop, Android-Geräte und Linux-Maschinen. Das Problem, das ich jetzt habe, ist neu und vorher hat alles gut funktioniert. Dieses Problem tritt nur auf den Client-Rechnern mit Linux (Ubuntu 16.04) auf. Der Ubuntu-Client erhält die DNS-Serveradressen nicht automatisch. Nach einiger Recherche habe ich herausgefunden, dass ich am Ende der Client-Konfiguration Folgendes hinzufügen sollte:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Das hat nicht geholfen, also habe ich auch hinzugefügt:
dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h
Die IPs werden vom Router genommen und es funktioniert. Bisher hat es gereicht, „redirect-gateway def1“ in der Client-Konfiguration zu haben.
Ich mag diese Lösung des Hinzufügens der „dhcp-option DNS“-Befehle nicht, weil ich auf Änderungen des DNS-Servers achten muss. Gibt es eine Möglichkeit, das Hinzufügen der Option „dhcp-option DNS“ loszuwerden?
Akzeptierte Antwort:
Ich hatte das gleiche Problem, konnte es aber mit folgendem Hack lösen:
Statt up /etc/openvpn/update-resolv-conf
Ich habe eine Datei namens up.sh in /etc/openvpn erstellt.
Führen Sie den Befehl sudo gedit /etc/openvpn/up.sh
aus und fügen Sie Folgendes ein:
#! /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
Speichern Sie es und führen Sie sudo chmod +x /etc/openvpn/up.sh
aus Erstellen Sie dann eine weitere Datei /etc/openvpn/down.sh
und fügen Sie Folgendes ein
#! /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"
Speichern Sie es und führen Sie sudo chmod +x /etc/openvpn/down.sh
aus
Entfernen Sie nun die Zeilen:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Und ersetzen Sie sie durch:
script-security 2
up /etc/openvpn/up.sh
down /etc/openvpn/down.sh