[Risolto] indirizzi dns in resolv.conf

Salve a tutti,

il problema riguarda fedora in generale ma dato che ho la 18 scrivo qui.

ultimamente per lavoro mi trovo a dover accedere ad alcune VPN che aggiungono ulteriori DNS a quelli forniti dal DHCP.
Il problema è che in resolv.h è definito MAXNS = 3 (appena controllato nei sorgenti rpm).
Quindi alla fine dei giochi dei 5 nameserver che mi ritrovo configurati in resolv.conf solo 3 vengono utilizzati e sono costretto di volta in volta a editare il file e commentare quelli che al momento non mi servono.
Inoltre ogni volta che cambio vpn o sottorete (e quindi DHCP) il file resolv.conf viene ricreato da capo.

La mia necessità è quella di poter configurare qualcosa (datemi voi un consiglio) in modo che cambiando rete (casa, ufficio1, ufficio2, etc …) e VPN la risoluzione dei DNS sia automatica.
Ovviamente vorrei evitare di ricompilare le glibc ad ogni update :slight_smile:

P.S.: certo che il resolv.h con “define MAXNS 3” è una cosa da programmi anni 80 :smiley:

Ma scusa, non basta che imposti in NetworkManager il dns per ogni singola rete che crei?

Non credo,

casa, sedeUfficio1, sedeUfficio2 etc… utilizzano il DHCP e quindi il dns mi viene assegnato dal DHCP.
Inoltre anche se metto i DNS in modo statico quando mi collego in VPN avrei più di 3 nameserver e starei punto e a capo.

sempre con networkmanager è possibile indicare nella vpn gli indirizzi e i dns.

possiamo scrivere i titoli in italiano ? grazie

i dns che me li passi il DHCP/VPN o che li imposti io a mano sempre 5 rimangono :slight_smile:

sono 5 per singola connessione ?

sono 3 forniti dal DHCP e 2 (anche 3) per ogni VPN.

Ovviamente il problema ce l’ho solo se mi connetto in vpn.
In questo caso devo, a seconda dell’esigenza, editare il resolv.conf e commentarne almeno 2 di cui potrei farne a meno.
Ma per ogni sessione di VPN (anche se non mi stacco) devo editare il file continuamente :frowning: per riabilitare il dns che mi serve.

se non ricordo male in networkmanager puoi mettere più dns separati da virgole ma non ricordo se c’è un limite.
puoi fare una prova e vedere.

Il problema è che NetworkManager ad ogni connessione riscrive il file /etc/resolv.conf mettendoci dentro i dati della configurazione.
Quindi il problema rimane sempre il numero massimo di nameserver che si possono mettere in /etc/resolv.conf e questo numero è definito staticamente in resolv.h .

Si…ma è necessario avere tutti sti server dns a cui connettersi? Non te ne basta uno?

secondo te ? :smiley: :smiley:

Faccio un piccolo esempio per far capire (ma la realtà è anche più complessa :()
Una VPN mi fornisce 3 DNS per la risoluzione dei nomi macchina degli ambienti di DEV, SIT, PREPROD e PROD. Ma mi serve il DNS pubblico (quello del DHCP per intenderci) per connettermi in VPN altrimenti non risolvo il server VPN.
Quindi di quelli pubblici (il DHCP me ne da 3) di almeno 1 non ne posso fare a meno.
Devo lavorare in DEV ? Commento SIT.
Devo lavorare in SIT ? Decommento SIT e commento DEV.
e così via per tutta la giornata.

Per giunta i DNS riguardanti la VPN mi vengono forniti dalla connessione stessa.

Ovviamente la VPN non la gestisco io, quindi evitiamo commenti a riguardo :stuck_out_tongue:

Temo tu ti stia complicando le cose per niente…

Puoi spiegare meglio di cosa hai bisogno e perché tu hai bisogno di 3 differenti DNS? Non ne puoi configurare uno tuo personale cui allacciarti per ottenere la risoluzione di tutti i nomi?

Allora, a me servono 4 DNS per poter vivere e lavorare senza impazzimenti.
Il perché, lasciami dire, è relativo.

La mia necessità è quella di poter configurare qualcosa (datemi voi un consiglio) in modo che cambiando rete (casa, ufficio1, ufficio2, etc …) e VPN la risoluzione dei DNS sia automatica.

Allora, non sono un esperto di configurazioni DNS ma con un po’ di ragionamento ci arriviamo…
Il DNS non fa altro che associare un indirizzo alfanumerico ad un indirizzo ip:

nome -> ip1
nome2 -> ip2
ecc...

Potrebbe anche essere che esista un nome3 -> ip1 eh!

Ora, fammi capire, tu hai 3 reti:

  1. casa con n pc ed una classe di indirizzi ip
  2. ufficio1 con m pc ed una classe di indirizzi ip: stessa classe della rete di casa?
  3. ufficio2 con x pc ed una classe di indirizzi ip: stessa classe della rete casa e della rete ufficio1?

Se sono tutte diverse io direi di configurare un DNS unico…no?
Se invece hai le classi uguali allora posso iniziare a capire il tuo problema…

Immagino che le reti del tuo ufficio tu non possa modificarle…

Ci descrivi meglio la situazione?

No, la situazione non è questa.

Si tratta sempre del mio laptop (f18) con cui lavoro e dal quale mi collego in VPN per poter accedere ai server di sviluppo, sit, collaudo etc… .
Ora, io vado in trasferta, cambio ufficio, lavoro da casa etc … etc … e mi collego alla rete quasi sempre tramite un DHCP che mi da la configurazione (tra cui almeno 2 DNS).
Una volta collegato alla rete, per raggiungere i server di lavoro necessito di una VPN la quale, in automatico, mi fornisce ulteriori 3 DNS.
i server del tipo server1-dev vengono risolti tramite il DNS1
i server del tipo server2-sit vengono risolti tramite il DNS2
i server del tipo server3-prod vengono risolti tramite il DNS3

quindi riassumendo:
mi collego alla rete (ottengo 2 DNS), accedo alla VPN (ottengo 3 DNS) e mi ritrovo almeno 5 DNS.
Il NetworkManager scrive questi DNS nel file /etc/resolv.conf in modo automatico.
Dato che l’utilizzo dei nameserver in resolv.conf è sequenziale, i server server2-sit e server3-prod non li risolvo, perché DNS2 e DNS3 non sono proprio presi in considerazione.
Per accedervi devo commentare 1 DNS pubblico (non tutti altrimenti mi salta la VPN) e 1 DNS della VPN (quello che in quel momento non mi serve).

Sebbene vi possa sembrare una situazione atipica non lo è. Soprattutto per chi deve lavorare con ambienti virtualizzati dove è comune trovare queste situazioni.
Leggendo in giro mi pare di aver capito che ci sono distro che gia applicano meccanismi per oltrepassare questo limite. E se lo fanno un motivo c’è :slight_smile:

Ma io continuo a non capire…il dns secondario, terziario ecc. sono dns di “ripiego”. Quando non si riesce a connettere al primo si passa al secondo, o se non si trova il nome sul primo si passa al secondo.
Quindi, non riesco a capire perché ti vengano forniti 3 server DNS a cui connetterti e poi hai bisogno di tutti e 3…ti dovrebbe bastare il primo…

Caso A

DNS_DHCP_1: risolve TUTTO il mondo pubblico
DNS_DHCP_2: risolve TUTTO il mondo pubblico
DNS_VPN_1: risolve TUTTI i server di lavoro
DNS_VPN_2: risolve TUTTI i server di lavoro
DNS_VPN_3: risolve TUTTI i server di lavoro

Caso B

DNS_DHCP_1: risolve TUTTO il mondo pubblico
DNS_DHCP_2: risolve TUTTO il mondo pubblico
DNS_VPN_1: risolve SOLO i server di SVILUPPO
DNS_VPN_2: risolve SOLO i server di COLLAUDO
DNS_VPN_3: risolve SOLO i server di PRODUZIONE

nel Caso A hai ragione, ma non è la mia situazione.

nel caso B se non commento DNS_DHCP_2 e DNS_VPN_1 mi spieghi come faccio a risolvere i nomi dei server di produzione ? :wink:
Questo perché il resolver delle glibc prende SOLO i primi 3 nameserver della lista.

In ogni caso, a prescindere dal caso specifico (che ripeto è l’esempio più semplice), a me serve qualcosa che possa permettere l’utilizzo di più di 3 DNS.
Tanto per fare un esempio, le distro basate su debian si affidano a resolvconf che (a quantoho capito) permette di avere un resolv.conf per ogni interfaccia di rete.
Solo che resolvconf non esiste per fedora e nemmeno credo si possa usare senza mettere mano al NetworkManager.

[quote=halloween] a me serve qualcosa che possa permettere l’utilizzo di più di 3 DNS.
Tanto per fare un esempio, le distro basate su debian si affidano a resolvconf che (a quantoho capito) permette di avere un resolv.conf per ogni interfaccia di rete.
Solo che resolvconf non esiste per fedora e nemmeno credo si possa usare senza mettere mano al NetworkManager.[/quote]

E perché non mettere mano al NetworkManager? Io ho 2 schede di rete (e due connessioni di rete corrispondenti definite da NetworkManager): la prima si collega ad internet, ed alla scheda “Impostazioni IPv4” riporta i 2 dns che uso, mentre la seconda è collegata agli altri PC tramite uno switch gigabit (mi serve solo per trasferire rapidamente files di grandi dimensioni da PC a PC internamente alla rete), e alla riga corrispondente di “Impostazioni IPv4” non riporta nessun DNS. Quindi i DNS sono attribuiti alla singola connessione, non al sistema in generale. Non so se dovresti disabilitare (o riabilitare) le connessioni che non ti servono cliccando su “On”/“Off” in alto a destra quando una singola connessione non viene usata per superare il problema dei 3 dns totali che dicevi, ma mi sembra più semplice che editare a mano ogni volta il files resolv.conf…

Si in effetti ho risolto mettendo mano al NetworkManager.

Dalla doc del NetworkManager

[code]ignore-auto-dns

When the method is set to ‘auto’ and this property to TRUE, automatically configured nameservers and search domains are ignored
and only nameservers and search domains specified in the ‘dns’ and ‘dns-search’ properties, if any, are used.[/code]

Ora sono l’uomo più felice del mondo :slight_smile:

Grazie mille a tutti,
si può chiudere :slight_smile: