Frage NetworkManager ändert nicht /etc/resolv.conf nach Openvpn DNS drücken


Ich habe ein Problem, bei dem "NetworkManager nicht aktualisiert wird /etc/resolv.conf nach openvpn Verbindung mit DNS drücken konfiguriert ".

Hier ist meine openvpn Serverkonfiguration: (Ich habe den Domain-Namen aus Sicherheitsgründen in ABC.COM geändert;))

########################################
# Sample OpenVPN config file for
# 2.0-style multi-client udp server
#
# Adapted from http://openvpn.sourceforge.net/20notes.html
#
# tun-style tunnel

port 1194
dev tun

# Use "local" to set the source address on multi-homed hosts
#local [IP address]

# TLS parms
tls-server 
ca keys/ca.crt
cert keys/static.crt
key keys/static.key
dh keys/dh1024.pem
proto tcp-server

# Tell OpenVPN to be a multi-client udp server
mode server

# The server's virtual endpoints
ifconfig 10.8.0.1 10.8.0.2

# Pool of /30 subnets to be allocated to clients.
# When a client connects, an --ifconfig command
# will be automatically generated and pushed back to
# the client.
ifconfig-pool 10.8.0.4 10.8.0.255

# Push route to client to bind it to our local
# virtual endpoint.
push "route 10.8.0.1 255.255.255.255"

push "dhcp-option DNS 10.8.0.1"

# Push any routes the client needs to get in
# to the local network.
#push "route 192.168.0.0 255.255.255.0"

# Push DHCP options to Windows clients.
push "dhcp-option DOMAIN ABC.COM"
#push "dhcp-option DNS 192.168.0.1"
#push "dhcp-option WINS 192.168.0.1"

# Client should attempt reconnection on link
# failure.
keepalive 10 60

# Delete client instances after some period
# of inactivity.
inactive 600

# Route the --ifconfig pool range into the
# OpenVPN server.
route 10.8.0.0 255.255.255.0

# The server doesn't need privileges
user openvpn
group openvpn

# Keep TUN devices and keys open across restarts.
persist-tun
persist-key

verb 4

Wie Sie sehen können, ist es eine einfache Beispielkonfiguration mit wenig Abstimmung.

Jetzt..

Auf meinem Rechner (openvpn-Client) kann ich sehen, dass DNS in Ordnung ist:

{17:12}/etc/NetworkManager ➭ nslookup git.ABC.COM 10.8.0.1
Server:     10.8.0.1
Address:    10.8.0.1#53

Name:   git.ABC.COM
Address: 10.8.0.1

{17:18}/etc/NetworkManager ➭ nslookup ABC.COM 10.8.0.1   
Server:     10.8.0.1
Address:    10.8.0.1#53

Name:   ABC.COM
Address: 18X.XX.XX.71

openvpn meldet sich auf der Serverseite an (wenn ich das richtig verstanden habe), dass DNS gepusht wurde:

openvpn[13257]: TCPv4_SERVER link remote: [AF_INET]83.30.135.214:37658
openvpn[13257]: 83.30.135.214:37658 TLS: Initial packet from [AF_INET]83.30.135.214:37658, sid=3251df51 915772f3
openvpn[13257]: 83.30.135.214:37658 VERIFY OK: depth=1, C=XX, ST=XX, L=XXX, O=XXX, OU=XXX, CN=XXX, name=XXX, emailAddress=mail@ABC.COM
openvpn[13257]: 83.30.135.214:37658 VERIFY OK: depth=0, C=XX, ST=XX, L=XXX, O=XXX, OU=XXX, CN=XXX, name=XXX, emailAddress=mail@ABC.COM
openvpn[13257]: 83.30.135.214:37658 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
openvpn[13257]: 83.30.135.214:37658 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[13257]: 83.30.135.214:37658 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
openvpn[13257]: 83.30.135.214:37658 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[13257]: 83.30.135.214:37658 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
openvpn[13257]: 83.30.135.214:37658 [jacek] Peer Connection Initiated with [AF_INET]83.30.135.214:37658
openvpn[13257]: jacek/83.30.135.214:37658 MULTI_sva: pool returned IPv4=10.8.0.10, IPv6=(Not enabled)
openvpn[13257]: jacek/83.30.135.214:37658 MULTI: Learn: 10.8.0.10 -> jacek/83.30.135.214:37658
openvpn[13257]: jacek/83.30.135.214:37658 MULTI: primary virtual IP for jacek/83.30.135.214:37658: 10.8.0.10
openvpn[13257]: jacek/83.30.135.214:37658 PUSH: Received control message: 'PUSH_REQUEST'
openvpn[13257]: jacek/83.30.135.214:37658 send_push_reply(): safe_cap=940
openvpn[13257]: jacek/83.30.135.214:37658 SENT CONTROL [jacek]: 'PUSH_REPLY,route 10.8.0.1 255.255.255.255,dhcp-option DNS 10.8.0.1,dhcp-option DOMAIN ABC.COM,ping 10,ping-restart 60,ifconfig 10.8.0.10 10.8.0.9' (status=1)

openvp meldet sich auf meiner Seite an:

Aug 05 17:13:55 localhost.localdomain openvpn[1198]: TCPv4_CLIENT link remote: [AF_INET]XXX.XX.37.71:1194
Aug 05 17:13:55 localhost.localdomain openvpn[1198]: TLS: Initial packet from [AF_INET]XXX.XX.37.71:1194, sid=89cc981c d57dd826
Aug 05 17:13:56 localhost.localdomain openvpn[1198]: VERIFY OK: depth=1, C=XX, ST=XX, L=XXX, O=XXX, OU=XXX, CN=XXX, name=XXX, emailAddress=mail@ABC.COM
Aug 05 17:13:56 localhost.localdomain openvpn[1198]: VERIFY OK: depth=0, C=XX, ST=XX, L=XXX, O=XXX, OU=XXX, CN=XXX, name=XXX, emailAddress=mail@ABC.COM
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Aug 05 17:13:58 localhost.localdomain openvpn[1198]: [static] Peer Connection Initiated with [AF_INET]XXX.XX.37.71:1194
Aug 05 17:14:00 localhost.localdomain openvpn[1198]: SENT CONTROL [static]: 'PUSH_REQUEST' (status=1)
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: PUSH: Received control message: 'PUSH_REPLY,route 10.8.0.1 255.255.255.255,dhcp-option DNS 10.8.0.1,dhcp-option DOMAIN ABC.COM,ping 10,ping-restart 60,ifconfig 10.8.0.10 10.8.0.9'
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: OPTIONS IMPORT: timers and/or timeouts modified
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: OPTIONS IMPORT: --ifconfig/up options modified
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: OPTIONS IMPORT: route options modified
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: ROUTE_GATEWAY 10.123.123.1/255.255.255.0 IFACE=wlan0 HWADDR=44:6d:57:32:81:2e
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: TUN/TAP device tun0 opened
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: TUN/TAP TX queue length set to 100
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: /usr/sbin/ip link set dev tun0 up mtu 1500
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: /usr/sbin/ip addr add dev tun0 local 10.8.0.10 peer 10.8.0.9
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: /usr/sbin/ip route add 10.8.0.1/32 via 10.8.0.9
Aug 05 17:14:01 localhost.localdomain openvpn[1198]: Initialization Sequence Completed

Es sieht so aus als wäre alles in Ordnung.

Aber. Ich überprüfte /var/log/messages auch ... und ich habe diese Zeile gefunden:

Aug  5 17:14:01 localhost NetworkManager[761]: <warn> /sys/devices/virtual/net/tun0: couldn't determine device driver; ignoring...

ip a kehrt zurück:

5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
    link/none 
    inet 10.8.0.10 peer 10.8.0.9/32 scope global tun0
       valid_lft forever preferred_lft forever

route -n kehrt zurück:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.123.123.1    0.0.0.0         UG    0      0        0 wlan0
10.8.0.1        10.8.0.9        255.255.255.255 UGH   0      0        0 tun0
10.8.0.9        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.123.123.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Also funktioniert im Prinzip alles, außer dass der DNS geschoben wird ... Oh! Richtig, und mein /etc/resolv.conf:

# Generated by NetworkManager
domain home
search home
nameserver 10.123.123.1

Wo ist das Problem?

(Ich habe eine Antwort von Windows-Benutzer mit openvpn Client, dass auf seiner Seite DNS gut funktioniert, so ist es ein Problem auf meiner Seite.

Ok, jetzt habe ich eine andere Antwort (nachdem ich openvpn-Dienst auf der Serverseite neu gestartet) - es funktioniert nicht.

Ich muss sagen, dass es gestern auch auf meiner Maschine geklappt hat. Habe ich also etwas auf dem Server vermasselt? Was könnte es sein? )

Bearbeiten: Okay, ich habe eine andere Windows-Benutzerantwort (derselbe Benutzer wie zuvor) - es funktioniert jetzt. Also .. ich denke, es wurde durch openvpn Neustart und einige Verzögerungen damit verursacht. Ich habe seitdem nichts getan. Also sind wir wieder auf meiner Maschine.

Ich verfolgte auch das seltsam tun0 Nachricht erschien auch gestern, und gestern hat es funktioniert. Oder vielleicht habe ich einen Eintrag hinzugefügt resolv.conf alleine? Ich erinnere mich nicht .. (verdammt)


19
2017-08-05 16:01


Ursprung


Ich habe gesehen, dass dies auf Systemen mit selinux enabled passiert ist und deren resolv.conf Datei den falschen selinux Sicherheitskontext hatte. Durch Ausführen von restorecon zum Wiederherstellen des Sicherheitskontexts für diese Datei wurde das Problem behoben. P.S .: es ist resolv.conf, nicht resolve.conf - natxo asenjo
Besondere Aufmerksamkeit schenken /etc/NetworkManager/NetworkManager.conf: Kommentarzeichen dns=dnsmasq und haben managed=true. Außerdem können Sie davon betroffen sein Fehler # 1294899 Gespeicherte VPN-Verbindung importieren wurde kürzlich abgebrochen trotz einer gemeldeten "etablierten" VPN-Verbindung. Überprüfen Sie Ihre VPN-Einstellungen: Geben Sie den Protokollnamen ein (:tcp oder :udp) in dem Gateway Feld. Überprüfen Sie vor allem die erweiterten Einstellungen Port number und LZO compression. Überprüfen Sie auch die Protokolle. Beenden Sie mit einem DNS-Lecktest. - KrisWebDev


Antworten:


Das funktioniert für mich: http://www.softwarepassion.com/solving-dns-problems-with-openvpn-on-ubuntu-box/

Der wichtige Schritt besteht darin, die folgenden zwei Konfigurationszeilen in Ihre hinzufügen Klient openvpn Konfigurationsdatei:

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Stellen Sie auch sicher, dass resolvconf Paket ist auf dem Client installiert, weil das update-resolv-conf Skript hängt davon ab.

Es funktioniert mit openvpn Client-Service oder Befehl, um es manuell zu starten.

Der Ubuntu Network Manager tut dies jedoch nicht. Es ist ein Problem bis jetzt: https://bugs.launchpad.net/ubuntu/+source/openvpn/+bug/1211110


21
2018-03-28 04:18



Das hat für mich funktioniert! Vielen Dank! - greuze
Vergessen Sie nicht, openvpn mit --script-security 2 auszuführen - kol
Oder auch gesagt script-security 2 in Ihrer Client-openvpn-Konfigurationsdatei. - KrisWebDev
Ich empfehle nicht, OpenVPN direkt zu verwenden, ohne den Netzwerk-Manager zu durchlaufen, oder Sie stehen davor Fehler # 691723 OpenVPN Client ignoriert DNS Das hat keine Lösung. In meinem Fall überschrieb Network Manager Resolvconf nach dem up Skript wurde gestartet ... Ein dreckiger # echo "nameserver 208.67.220.220" | /sbin/resolvconf -a "tun0.openvpn" Nach dem Ausführen von openvpn kann den Job erledigen ... bis es wieder überschrieben wird. Verwenden Sie OpenVPN nicht direkt. - KrisWebDev
up Befehl nicht gefunden !! - Pardeep Jain


Funktioniert für mich nach dem Deaktivieren von NetworkManager eigenen dnsmasq.

Bearbeiten /etc/NetworkManager/NetworkManager.conf

 #dns=dnsmasq

und starte NetworkManager neu

sudo restart network-manager

11
2017-10-08 13:44



Ich hatte bereits den Wechsel von Bruce Li in meiner Client-Konfiguration. Durch diese Änderung wurde auch das Problem behoben [Ubuntu 15.10]. - TheDauthi
Was für eine Art von Zauberei ist das? Was macht Dnsmasq? - GuySoft
Das funktionierte für mich in verschiedenen Versionen von Ubuntu. Ich verstehe nicht wirklich, was Dnsmasq macht, aber das Auskommentieren dieser Zeile von NetworkManager.conf löst das Problem sowohl für VPN-Verbindungen als auch für Wi-Fi-Verbindungen. - Simón
Das funktionierte für mich mit Linux Mint 18, obwohl ich meinen Rechner neu starten musste, da sudo neustart network-manager mit einem Fehler fehlschlug. Die angenommene Antwort hat bei mir nicht funktioniert. - trebormf
beim Neustart Befehlswurf Fehler restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused - Pardeep Jain


OpenVPN kann derzeit keine DNS-Einstellungen pushen. Sie müssen /etc/resolv.conf manuell ändern, um zu Ihrem (gesicherten) DNS-Server zu passen. Ich führe einfach einen BIND9-Dienst auf demselben Rechner wie mein Access Server aus und deute auf diesen über den Tunnel. Verwenden Sie Ihre lokale IP Adresse dieses Rechners zB 192.168.1.110

Viel Glück!

Jaspis


1
2017-12-15 17:52



Mit der Antwort von Bruce Li wird die /etc/resolv.conf automatisch modifiziert - greuze


Es ist möglich, DNS-Einstellungen in OpenVPN zu pushen. Wie Sie in Ihrer Konfiguration haben, geschieht dies in der Serverkonfiguration mit folgender Zeile:

push "dhcp-option DNS 10.20.30.40"

Für mich funktioniert das mit der Windows-GUI, aber für Linux-Systeme ist ein bisschen Nudging erforderlich. Für die Verbindung zu meinem Heimnetzwerk (mit Fedora 18) habe ich ein Skript von gronke auf GitHub verwendet (https://github.com/gronke/OpenVPN-linux-push) um den Aktualisierungsprozess zu automatisieren.

Um diese Skripts zu verwenden, habe ich meiner OpenVPN-Client-Datei Folgendes hinzugefügt:

up /home/gadgeteering/tools/vpn/up.sh
down /home/gadgeteering/tools/vpn/down.sh

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

down.sh:

#! /bin/bash
DEV=$1
CACHE_NAMESERVER="/tmp/openvpn/$DEV.nameserver"
echo $CACHE_NAMESERVER

if [ -f $CACHE_NAMESERVER ]; then
for ns in `cat $CACHE_NAMESERVER`; do
echo "Removing $ns from /etc/resolv.conf"
cat /etc/resolv.conf | grep -v "nameserver $ns" > /tmp/resolv.conf
mv /tmp/resolv.conf /etc/resolv.conf

done
fi

1
2017-12-23 19:08



warum du ... brauchst dns=dns ? - Wang
Das wäre eine Frage für Gronke, ich denke, es ist auch ein bisschen merkwürdig. Seit ich meinen Kommentar geschrieben habe, habe ich eine Anpassung dieses Skripts vorgenommen, die die Variable 'dns' überhaupt nicht verwendet. Ich habe wegen der Unterlassung keine Verhaltensänderung beobachtet. - Gadgeteering


Es besteht die Möglichkeit, den NetworkManager durch manuelles Ersetzen zu aktivieren /etc/resolv.conf. Beachten Sie, dass dies ein hack ist und nicht als eine gültige Lösung für jede Situation betrachtet werden kann.

#!/bin/bash
case "$2" in
    vpn-up)
    tmp=$(mktemp)
    func=$(mktemp)
    echo 'ping -c 1 -w 1 -q $1 > /dev/null ;
          if [ 0 -eq $? ]; then echo $1; fi' > $func
    grep -v "^#" /etc/resolv.conf > $tmp
    grep -rl type=vpn /etc/NetworkManager/system-connections \
        | xargs -n 1 sed -rne 's|dns=||p' \
        | sed -re 's|;|\n|g' \
        | grep -v "^\s*$" \
        | xargs -n 1 bash $func \
        | sed -re "s|(.*)|nameserver \1|" \
        | cat - $tmp \
        > /etc/resolv.conf
    rm -f $tmp $func;;
    vpn-down) resolvconf -u;;
esac

Dieses Skript sollte unter platziert werden /etc/NetworkManager/dispatcher.d; sollte ausführbar und im Besitz von root sein. Es liest alle NetworkManager vpn-Konfigurationen, die es finden und neu schreiben kann /etc/resolv.conf mit zugreifbaren Nameservern dort gefunden. Es schreibt nicht domain und search Linien; aber es erlaubt, den bösen NetworkManager Bug zu vergessen.

Ich benutze Ubuntu 16.04, es funktioniert.


1
2017-08-09 20:49