GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Openvpn-Client erhält keine DNS-Informationen?

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

Ubuntu
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Was überschreibt /etc/resolv.conf bei jedem Start?

  3. Was ist mit /etc/apt/apt.conf passiert?

  4. /etc/x11/xorg.conf existiert nicht??

  5. Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

Host:Analyse von /etc/resolv.conf fehlgeschlagen

Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

Was genau macht die Suchkonfigurationsoption in /etc/resolv.conf?

Wie mache ich die Nameserver-Adresse in /etc/resolv.conf dauerhaft?

Warum zeigt /etc/resolv.conf auf 127.0.0.53?

Unterschied zwischen /etc/hosts und /etc/resolv.conf