OpenVPN-, resolvconf- und DNS-Domänenauflösung


8

Während ich an Site1 bin, muss ich mich über OpenVPN mit Site2 verbinden. Sobald die Verbindung hergestellt ist, überträgt die OpenVPN-Site2 einen DNS-Nameserver und Domänensuchoptionen. Dies führt dazu, dass alle Namensauflösungen für site1 fehlschlagen.

Beispiel:

  1. DHCP ist an Standort1 physisch verbunden und pusht DNS-Optionen und resolvconf verwaltet sie.
    /etc/resolv.conf

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 172.16.1.101
    nameserver 172.16.1.102
    search site1.internal.domain
    
  2. OpenVPN-Tunnel zu Site2 öffnen, OpenVPN pusht die DHCP-Option DNS und DOMAIN für Site2 und pusht /etc/openvpn/update-resolv-confsie zu Resolvconf.
    /etc/resolv.conf

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    nameserver 192.168.1.5
    nameserver 172.16.1.101
    nameserver 172.16.1.102
    search site2.internal.domain site1.internal.domain
    
  3. Die DNS-Auflösung funktioniert für server.site2.internal.domain, schlägt jedoch für server.site1.internal.domain fehl

Gibt es eine Möglichkeit, dass eine fehlgeschlagene DNS-Anforderung an Site21 an die DNS-Server von Site1 weitergeleitet wird? Oder konfigurieren Sie resolvconf so, dass nur Abfragen für site2.internal.domain an den site2-Nameserver übergeben werden sollen?

Ich verwende einen Ubuntu 14.04-Computer an Standort1, und der OpenVPN-Server an Standort2 ist eine pfSense 2.2-Box. Ich verwalte beide Websites, sodass Änderungen an beiden Seiten kein Problem darstellen. Beide Domains sind nicht öffentlich und nur für den internen Gebrauch bestimmt.


Ich sollte hinzufügen, dass ich, obwohl der Laptop Ubuntu 14.04 ist, keinen NetworkManager verwende.
Tim Jones

1
Ich bin interessiert zu sehen, ob es eine flexible Möglichkeit gibt, DNS-Anfragen an verschiedene Server umzuleiten, zum Beispiel durch Überprüfen des FQDN .. :)
nass

Antworten:


1

Sie können einen lokalen Caching-Server einrichten, der überwacht /etc/resolv.conf, wie er durch resolvconfSkripte geändert wird , und versuchen, seine Antworten von allen dort aufgeführten Nameservern abzurufen.

Auf vielen Systemen wird es genug sein , um die Installation dnsmasq Paket, zusätzlich zu resolvconf.

Die Standardwerte sollten „nur Arbeit“ vorausgesetzt , dass no-resolvund no-pollRichtlinien fehlen aus /etc/dnsmasq.confund loSchnittstelle ist an der Spitze /etc/resolvconf/interface-order. Wenn ein Upstream-Nameserver beliebige IP-Adressen für nicht strict-orderauflösbare Adressen zurückgibt, kann dies in der Datei dnsmasq.conf hilfreich sein. Du /etc/resolv.confsolltest nur zeigen nameserver 127.0.0.1.

Wenn Sie ein festes Setup bevorzugen oder eine Verbindung zu mehreren nicht verwandten Netzwerken herstellen möchten und vermeiden möchten, dass Ihre privaten Netzwerknamen auch bei allen Nameservern verloren gehen, sollten Sie dnsmasq so konfigurieren, dass bestimmte Server basierend auf der Domäne abgefragt werden:

# /etc/dnsmasq.conf

# site1 servers
nameserver=/site1.internal.domain/172.16.1.101
nameserver=/site1.internal.domain/172.16.1.102

# site2 servers
nameserver=/site2.internal.domain/192.168.1.5

# default OpenNIC (optional, unless 'no-resolv' is set). 
server=51.15.98.97
server=172.104.136.243

Weitere Informationen zu dnsmasq-Optionen finden Sie hier: http://oss.segetech.com/intra/srv/dnsmasq.conf


0

resolv.conf listet alle verfügbaren DNS-Server auf. Solange der erste in der Liste aktiv ist, werden alle Abfragen an ihn gesendet. Nichts für die anderen, es sei denn, der erste ist ausgefallen. Wenn also der erste DNS-Server in der Liste aktiv ist und die Antwort kennt, antwortet er "Ich weiß es!", Sonst sagt er "Ich fürchte, ich weiß nicht ...". Und das ist alles. Sie müssen 192.168.1.5 (den DNS-Server von Site2) auf alle Einträge von Site1 aufmerksam machen und natürlich umgekehrt. Schöne Grüße


0

Ich habe dies unter Ubuntu nicht versucht, aber ich konnte ein ähnliches Setup unter Arch Linux mit openresolv und dnsmasq zum Laufen bringen.

Alle Änderungen werden auf dem VPN-Client-Computer vorgenommen. Der VPN-Server sollte keine Änderungen benötigen, da er bereits die Suchoptionen für DNS-Nameserver und Domänen enthält.

  1. Verwenden Sie resolvconf -l, während Sie mit dem VPN verbunden sind, um alle resolv.conf-Dateien anzuzeigen. Ermitteln Sie den resolvconf-Namen Ihrer VPN-Schnittstelle (dh das X in "resolv.conf from X"). In meinem Fall war es das tun0, was ich in der restlichen Konfiguration verwenden werde.
  2. Installieren Sie dnsmasq
  3. Bearbeiten /etc/resolvconf.conf, um diese Optionen hinzuzufügen:

    private_interfaces=tun0
    name_servers="::1 127.0.0.1"
    dnsmasq_conf=/etc/dnsmasq-conf.conf
    dnsmasq_resolv=/etc/dnsmasq-resolv.conf
    
  4. Bearbeiten /etc/dnsmasq.conf, um diese Optionen hinzuzufügen:

    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf
    
  5. Führen Sie resolvconf -udiese Option aus, um die dnsmasq-Konfigurationsdateien zu generieren.

  6. Starten Sie den dnsmasqDienst und konfigurieren Sie ihn so, dass er beim Booten gestartet wird. Auf Arch geschieht dies durch Ausführen von:

    systemctl start dnsmasq.service
    systemctl enable dnsmasq.service
    

Die name_serversOption weist resolvconf an, nur die Nameserver in aufzulisten /etc/resolv.conf(dh sie zeigt auf Ihre lokale dnsmasq-Instanz). Die dnsmasq_Optionen weisen resolvconf an, die Nameserver zu schreiben, die /etc/resolv.confstattdessen in dnsmasq-Konfigurationsdateien gespeichert worden wären .

Die private_interfaceOption teilt resolvconf mit, dass die von dieser Schnittstelle (Ihrem VPN) bereitgestellten Nameserver nur zum Auflösen von Hostnamen verwendet werden sollen, die sich in einer der in der searchZeile angegebenen Domänen befinden . Es wird die entsprechende dnsmasq-Konfiguration generiert, um dies zu ermöglichen.

Mit dieser Konfiguration sollten Anforderungen für Hosts unter site2.internal.domain an 192.168.1.5 und alle anderen Anforderungen an 172.16.1.101 oder 172.16.1.102 gesendet werden.

Wenn Ihr System IPv6 nicht verwendet, entfernen Sie :: 1 aus der name_serversOption.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.