OpenVPN, resolvconf e risoluzione del dominio DNS


8

Mentre nel sito1, devo collegarmi al sito2 tramite OpenVPN. Una volta connesso, il sito OpenVPN2 invia un nameserver DNS e opzioni di ricerca del dominio. Ciò causa il fallimento di tutte le risoluzioni dei nomi per site1.

Esempio:

  1. Fisicamente connesso al sito1, DHCP invia le opzioni DNS e resolvconf le gestisce.
    /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. Apri il tunnel OpenVPN su site2, OpenVPN invia DNS e DOMAIN con opzione dhcp per site2 e /etc/openvpn/update-resolv-confli invia a 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. La risoluzione DNS funziona per server.site2.internal.domain ma non riesce per server.site1.internal.domain

Esiste un modo in cui qualsiasi richiesta DNS non riuscita al sito21 deve passare ai server DNS del sito1? O configurare resolvconf che solo le query per site2.internal.domain devono essere passate al nameserver site2?

Uso una macchina Ubuntu 14.04 in site1 e il server OpenVPN in site2 è una scatola di pfSense 2.2. Gestisco entrambi i siti, quindi apportare modifiche a entrambe le parti non è un problema. Entrambi i domini sono solo per uso non pubblico e interno.


Dovrei aggiungere che, sebbene il laptop sia Ubuntu 14.04, non uso NetworkManager.
Tim Jones,

1
sono interessato a vedere se esiste un modo flessibile per reindirizzare le query DNS a server diversi, ad esempio controllando il nome FQDN .. :)
nass

Risposte:


1

Puoi configurare un server di memorizzazione nella cache locale che controllerà il tuo /etc/resolv.conf, poiché viene modificato dagli resolvconfscript e provare a ottenere le risposte da tutti i server dei nomi elencati lì.

Su molti sistemi sarà sufficiente installare il pacchetto dnsmasq , oltre a resolvconf.

Le impostazioni predefinite dovrebbero "solo lavoro" a condizione che no-resolve no-polldirettive sono assenti /etc/dnsmasq.confe lol'interfaccia è in cima /etc/resolvconf/interface-order. Se un nameserver a monte restituisce alcuni IP arbitrari per indirizzi irrisolvibili, strict-orderin dnsmasq.conf può essere d'aiuto. Il tuo /etc/resolv.confdovrebbe mostrare solo nameserver 127.0.0.1.

Se si preferisce una configurazione fissa o ci si connette a più reti non correlate e si desidera evitare la perdita dei nomi di rete privata anche per tutti i nameserver, è necessario configurare dnsmasq per eseguire query su server specifici in base al dominio:

# /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

Per maggiori informazioni sulle opzioni di dnsmasq consultare qui: http://oss.segetech.com/intra/srv/dnsmasq.conf


0

resolv.conf elenca tutti i server DNS disponibili. Finché il primo nell'elenco è attivo e funzionante, tutte le query verranno inviate ad esso. Niente per gli altri a meno che il primo non sia inattivo. Quindi, se il primo server DNS nell'elenco è attivo e conosce la risposta, risponde "Lo so!", Altrimenti dirà "Temo di non sapere ...". E questo è tutto. Devi rendere 192.168.1.5 (il server DNS di site2) a conoscenza di tutte le voci di site1, e viceversa ovviamente. Saluti


0

Non ho provato questo su Ubuntu, ma sono stato in grado di ottenere una configurazione simile lavorando su Arch Linux usando openresolv e dnsmasq.

Tutte le modifiche saranno sul computer client VPN. Il server VPN non dovrebbe richiedere alcuna modifica poiché include già il nameserver DNS e le opzioni di ricerca del dominio.

  1. Mentre sei connesso alla VPN, usa resolvconf -lper vedere tutti i file resolv.conf. Capire il nome resolvconf dell'interfaccia VPN (ovvero la X in "resolv.conf da X"). Nel mio caso, lo è stato tun0, che userò nella configurazione rimanente.
  2. Installa dnsmasq
  3. Modifica /etc/resolvconf.confper aggiungere queste opzioni:

    private_interfaces=tun0
    name_servers="::1 127.0.0.1"
    dnsmasq_conf=/etc/dnsmasq-conf.conf
    dnsmasq_resolv=/etc/dnsmasq-resolv.conf
    
  4. Modifica /etc/dnsmasq.confper aggiungere queste opzioni:

    conf-file=/etc/dnsmasq-conf.conf
    resolv-file=/etc/dnsmasq-resolv.conf
    
  5. Esegui resolvconf -uper generare i file di configurazione di dnsmasq.

  6. Avviare il dnsmasqservizio e configurarlo per l'avvio all'avvio. Su Arch, questo viene eseguito eseguendo:

    systemctl start dnsmasq.service
    systemctl enable dnsmasq.service
    

L' name_serversopzione dice a resolvconf di elencare solo quei nameserver in /etc/resolv.conf(cioè punta all'istanza dnsmasq locale). Le dnsmasq_opzioni indicano a resolvconf di scrivere invece i nameserver che sarebbero entrati nei /etc/resolv.conffile di configurazione di dnsmasq.

L' private_interfaceopzione dice a resolvconf che i nameserver forniti da quella interfaccia (la tua VPN) dovrebbero essere usati solo quando si risolvono nomi host che si trovano in uno dei domini specificati sulla searchlinea. Genererà la configurazione dnsmasq appropriata per farlo accadere.

Con questa configurazione, le richieste di host in site2.internal.domain dovrebbero andare a 192.168.1.5 e tutte le altre richieste dovrebbero andare a 172.16.1.101 o 172.16.1.102.

Se il tuo sistema non utilizza IPv6, rimuovi :: 1 name_serversdall'opzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.