Consentire al client OpenVPN di eseguire il push dei propri server DNS, indipendentemente dal DNS push del server OpenVPN?


9

Esiste un server OpenVPN in esecuzione su un Debian e invia un DNS nel file di configurazione del server:

push "opzione dhcp DNS 8.8.8.8"

Esiste un'opzione per consentire agli utenti di modificare i server DNS sul lato client?

Ecco il problema, il server openvpn deve inviare un DNS perché altrimenti molti client OpenVPN non saranno in grado di aprire pagine Web fino a quando i server DNS impostati manualmente nelle impostazioni di rete del sistema.

Il mio obiettivo è applicare automaticamente un server DNS predefinito a utenti non tecnicamente qualificati, consentendo anche agli utenti di computer esperti di impostare i propri server DNS.

Notare che semplicemente cambiare le impostazioni DNS sul PC mentre l'opzione 'push "dhcp-DNS DNS 8.8.8.8" è attiva sul server openvpn, non fa nulla. Il DNS inviato dal server rimane indipendentemente dalle impostazioni DNS locali.

Qualche idea?

Configurazione del server OpenVPN:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#push "route 0.0.0.0 0.0.0.0"
#push "redirect-gateway"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

AGGIORNAMENTO: i sistemi operativi client sono Windows e Mac


Non hai specificato il sistema operativo principale dei tuoi client DHCP, quindi tutto ciò che possiamo veramente dire è "sì, sovrascrivere i server DNS forniti da DHCP è di solito piuttosto banale". Cosa stavi vivendo suggerendo che non era così?
Andrew B,

Siamo spiacenti, i sistemi operativi sono Windows e Mac. Quando connesso al server openvpn non sarei in grado di modificare efficacemente le impostazioni DNS. Ad esempio il server openvpn fornisce DNS: 8.8.8.8 e quando cambio ad un DNS in Sudafrica (localmente) per esempio, il mio server DNS ufficiale rimane 8.8.8.8 (o analogo di google). Si può testare il server DNS su dnsleaktest c0m
Dimi

Risposte:


15

A partire dal 2017 (OpenVPN 2.4) questo è ora possibile. Aggiungi questa riga al tuo file di configurazione del client:

pull-filter ignore "dhcp-option DNS"

e ignorerà tutte le righe di configurazione inviate che iniziano con il testo tra virgolette.

Le opzioni sono abbinate dall'alto verso il basso, quindi viene utilizzata la prima corrispondenza. Puoi usarlo per consentire alcuni percorsi e rifiutarne altri, se si adattano alle tue esigenze.

Le tre parole chiave di azione sono accept, ignoree reject. Non ho scoperto un caso d'uso per reject.


4

Nella documentazione ufficiale di OpenVPN puoi trovare:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Sfortunatamente, oltre a quello che stai chiedendo, questo ha l'effetto collaterale di disabilitare anche il gateway di reindirizzamento fornito dalla tua configurazione e questo può rappresentare un problema, per il tuo caso.

Quello che suggerisco è un approccio completamente diverso.

Come hai detto esplicitamente: "Il mio obiettivo è applicare automaticamente un server DNS predefinito a utenti non tecnicamente qualificati, consentendo allo stesso tempo agli utenti di computer esperti di impostare i propri server DNS " . Sembra che tu sappia esattamente quali utenti desideri fornire una configurazione DNS e quali utenti non si desidera fornire tale configurazione.

Quindi, invece di inviare la tua configurazione direttamente nel file di configurazione principale di OpenVpn (... e, come tale, fornire tale configurazione a TUTTI i tuoi utenti), puoi implementare una configurazione per utente . Puoi farlo con:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --push, --push-reset, 
  --iroute, --ifconfig-push, and --config.

Quindi, come per la configurazione principale, è necessario rimuovere :

  [**** to be removed from the main config***]
  push "dhcp-option DNS 8.8.8.8"
  push "dhcp-option DNS 8.8.4.4"

e aggiungi un riferimento alla directory / etc / openvpn / userconf (come esempio. Sentiti libero di scegliere quello che preferisci):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Quindi, in tale directory userconf, creare un file per ciascuno degli utenti che si desidera fornire tale DNS, includendo in tale file le due righe eliminate sopra.

Ovviamente sei libero di mettere a punto la configurazione di openvpn per ogni utente, senza limitare la personalizzazione alle due righe sopra.

Come nota finale, potresti essere interessato anche al parametro esclusivo ccd .


Grazie per l'impegno Damiano, ma temo che la risposta corretta sia che il server DNS dell'adattatore TAP dovrebbe essere modificato, poiché la modifica delle proprietà IPv4 della connessione Internet in server DNS personalizzati non aiuta quando è collegato a un server OpenVPN che spinge i server DNS. In questo modo non è necessario rimuovere nulla dalle configurazioni del server, ma semplicemente modificare le proprietà IPv4 degli adattatori TAP della macchina Windows.
Dimi,

@Dimi: in realtà quella soluzione è molto più limitata di come la fai apparire. Poiché connessioni VPN diverse utilizzano server DNS diversi e l'ordine di stabilire i collegamenti determinerà quale adattatore TAP viene utilizzato, non posso preconfigurare gli adattatori TAP in modo da utilizzare un set specifico di DNS, poiché i DNS che sto configurando potrebbero non applicarsi nemmeno al connessione stabilita utilizzando quel particolare adattatore TAP. In breve, la soluzione alternativa funziona solo se esiste una sola connessione VPN stabilita sempre tramite lo stesso adattatore TAP.
0xC0000022L

1

Il mio problema non era esattamente lo stesso, ma i sintomi erano abbastanza simili da far apparire questa domanda nei risultati di ricerca, quindi nel caso in cui qualcun altro finisca qui per lo stesso motivo:

Sto usando Tunnelblick , una GUI OpenVPN per Mac OS. Il mio server OpenVPN non era impostato per inviare alcuna opzione DHCP o DNS, ma il client utilizzava ancora il server DNS su VPN, anziché il server DNS locale non VPN che volevo che usasse.

La soluzione era accedere alla scheda Configurazioni → Impostazioni di Tunnelblick e modificare Imposta DNS / WINS su Non impostare nameserver .


0

Grazie per @aldaviva, sta funzionando sul mio macOS 10.11.

Allega il mio screenshot.

inserisci qui la descrizione dell'immagine

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.