I server DNS esterni, o pubblici, mappano gli hostname in indirizzi IP e, nel caso dei record PTR (noti come "pointer" o "reverse"), mappano gli indirizzi IP in hostname. Si tratta di una parte essenziale di Internet. Fa sì che il server di posta, il server web, il server FTP o molti altri server e servizi funzionino come previsto, indipendentemente da dove ci si trovi.
Su una rete privata, in particolare una rete per lo sviluppo di molti sistemi, è possibile utilizzare il file /etc/hosts della propria workstation Rocky Linux per mappare un nome a un indirizzo IP.
Questo funzionerà per la vostra workstation, ma non per qualsiasi altro computer della rete. Il metodo migliore per rendere le cose universalmente applicabili è quello di prendersi un po' di tempo e creare un server DNS locale e privato per gestire questo aspetto per tutti i vostri computer.
Supponiamo di creare server e resolver DNS pubblici a livello di produzione. In questo caso, l'autore raccomanda il più robusto PowerDNS DNS autorevole e ricorsivo, installabile sui server Rocky Linux. Tuttavia, questo documento si riferisce a una rete locale che non espone i propri server DNS al mondo esterno. Ecco perché l'autore ha scelto bind per questo esempio.
Il DNS separa i servizi in server autoritari e ricorsivi. Attualmente si consiglia di separare questi servizi su hardware o container distinti.
Il server autorevole è l'area di archiviazione di tutti gli indirizzi IP e i nomi host, mentre il server ricorsivo cerca gli indirizzi e i nomi host. Nel caso del nostro server DNS privato, i servizi di server autorevole e ricorsivo lavoreranno insieme.
Prima di apportare modifiche a qualsiasi file di configurazione, creare una copia di backup del file di lavoro originale installato, named.conf:
cp /etc/named.conf /etc/named.conf.orig
Questo aiuterà in futuro se si verificano errori nel file di configurazione. È sempre una buona idea fare una copia di backup prima di apportare modifiche.
Modificare il file named.conf. L'autore utilizza vi , ma è possibile sostituire l'editor a riga di comando preferito:
vi /etc/named.conf
Disattivare l'ascolto su localhost. Per farlo, contrassegnate con il segno "#" queste due righe nella sezione "options". In questo modo si interrompe qualsiasi connessione con il mondo esterno.
Questo è utile, soprattutto quando si aggiunge questo DNS alle nostre postazioni di lavoro, perché si vuole che il server DNS risponda solo quando l'indirizzo IP che richiede il servizio è locale e non reagisca se il server o il servizio si trova su Internet.
In questo modo, gli altri server DNS configurati subentreranno quasi immediatamente per cercare i servizi basati su Internet:
options {
# listen-on port 53 { 127.0.0.1; };
# listen-on-v6 port 53 { ::1; };
Infine, si può andare in fondo al file named.conf e aggiungere una sezione per la vostra rete. Il nostro esempio è "ourdomain", quindi inserite il nome che volete dare agli host della vostra LAN:
# primary forward and reverse zones
//forward zone
zone "ourdomain.lan" IN {
type master;
file "ourdomain.lan.db";
allow-update { none; };
allow-query {any; };
};
//reverse zone
zone "1.168.192.in-addr.arpa" IN {
type master;
file "ourdomain.lan.rev";
allow-update { none; };
allow-query { any; };
};
È necessario creare due file in /var/named. Questi file verranno modificati se si aggiungono macchine alla rete per includerle nel DNS.
Il primo è il file forward per mappare il nostro indirizzo IP al nome dell'host. Anche in questo caso, il nostro esempio è "ourdomain". Si noti che l'IP del nostro DNS locale è 192.168.1.136. Aggiungere gli host in fondo a questo file.
vi /var/named/ourdomain.lan.db
Una volta completato, il file avrà un aspetto simile a questo:
$TTL 86400
@ IN SOA dns-primary.ourdomain.lan. admin.ourdomain.lan. (
2019061800 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns-primary.ourdomain.lan.
;IP for Name Server
dns-primary IN A 192.168.1.136
;A Record for IP address to Hostname
wiki IN A 192.168.1.13
www IN A 192.168.1.14
devel IN A 192.168.1.15
Aggiungere tutti gli host e gli indirizzi IP necessari e salvare le modifiche.
È necessario un file reverse per mappare il nostro hostname all'indirizzo IP. In questo caso, l'unica parte dell'IP di cui si ha bisogno è l'ultimo ottetto (in un indirizzo IPv4 ogni numero separato da un "." è un ottetto) dell'host, il PTR e l'hostname.
vi /var/named/ourdomain.lan.rev
Una volta completato, il file avrà un aspetto simile a questo:
$TTL 86400
@ IN SOA dns-primary.ourdomain.lan. admin.ourdomain.lan. (
2019061800 ;Serial
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns-primary.ourdomain.lan.
;Reverse lookup for Name Server
136 IN PTR dns-primary.ourdomain.lan.
;PTR Record IP address to HostName
13 IN PTR wiki.ourdomain.lan.
14 IN PTR www.ourdomain.lan.
15 IN PTR devel.ourdomain.lan.
Aggiungere tutti i nomi di host presenti nel file forward e salvare le modifiche.
Dal momento che tutto questo è stato aggiunto e ci si sta preparando a riavviare il nostro server DNS bind, esploriamo alcune delle terminologie utilizzate in questi due file.
Far funzionare le cose non è sufficiente se non si conosce il significato di ogni termine, giusto?
TTL sta per "Time To Live". Il TTL indica al server DNS per quanto tempo conservare la cache prima di richiederne una nuova copia. In questo caso, il TTL è l'impostazione predefinita per tutti i record, a meno che non si inserisca manualmente un TTL specifico. L'impostazione predefinita è 86400 secondi o 24 ore.
IN sta per Internet. In questo caso, Internet non viene utilizzato. Consideratela invece come una Intranet.
SOA sta per "Start Of Authority" o per il server DNS primario del dominio
NS sta per "name server"
Serial è il valore utilizzato dal server DNS per verificare che il contenuto del file di zona sia aggiornato
Refresh specifica la frequenza con cui un server DNS slave richiede il trasferimento di una zona dal server master
Retry specifica il tempo di attesa, in secondi, prima di ritentare un trasferimento di zona non riuscito
Expire specifica quanto tempo un server slave aspetterà per rispondere a una query quando il master non è raggiungibile
A È l'indirizzo host o il record di inoltro e si trova solo nel file di inoltro
PTR Il record del puntatore è meglio conosciuto come "reverse " e si trova solo nel nostro file reverse
Una volta creati tutti i file, è necessario assicurarsi che i file di configurazione e le zone siano in ordine prima di avviare nuovamente il servizio bind.
Controllare la configurazione principale:
named-checkconf
Questo restituirà un risultato vuoto se tutto è a posto.
È necessario aggiungere il server DNS (nel nostro esempio 192.168.1.136) a ogni macchina che si desidera abbia accesso ai server aggiunti al DNS locale. L'autore mostra solo un esempio di come farlo su una workstation Rocky Linux. Metodi simili esistono per altre distribuzioni Linux, Windows e Mac.
È necessario aggiungere i server DNS all'elenco, non sostituire quelli attualmente presenti, in quanto sarà comunque necessario l'accesso a Internet, che richiederà i server DNS attualmente assegnati. I servizi DHCP (Dynamic Host Configuration Protocol) in genere li assegnano o sono assegnati staticamente.
Si aggiungerà il nostro DNS locale con nmcli e poi si riavvierà la connessione.
"Nomi di profilo stupidi"
In NetworkManager, le connessioni non vengono modificate dal nome del dispositivo, ma dal nome del profilo. Può trattarsi di "Connessione cablata 1" o "Connessione wireless 1". È possibile vedere il profilo eseguendo nmcli senza alcun parametro:
Prima ancora di iniziare a modificare la connessione, si dovrebbe dare a questa un nome sensato, come il nome dell'interfaccia (notare che la "\" in basso evita gli spazi nel nome):
Questo renderà molto più semplice la restante configurazione del DNS!
Supponendo che il nome del profilo di connessione sia "enp0s3", includeremo il DNS già configurato, ma aggiungeremo prima il nostro server DNS locale:
nmcli con mod enp0s3 ipv4.dns '192.168.1.138,192.168.1.1'
È possibile avere più server DNS. Per una macchina configurata con server DNS pubblici, ad esempio l'open DNS di Google, si potrebbe invece avere questo problema:
nmcli con mod enp0s3 ipv4.dns '192.168.1.138,8.8.8.8,8.8.4.4'
Una volta aggiunti i server DNS desiderati alla connessione, si dovrebbe essere in grado di risolvere gli host in ourdomain.lan, così come gli host di Internet.
Se si utilizza solo IPv4 sulla LAN, è necessario apportare due modifiche. Il primo si trova in /etc/named.conf e la seconda in /etc/sysconfig/named.
Per prima cosa, si può accedere nuovamente al file named.conf con vi /etc/named.conf. È necessario aggiungere la seguente opzione in un punto qualsiasi della sezione delle opzioni.
filter-aaaa-on-v4 yes;
Mostrato qui sotto:
Una volta effettuata questa modifica, salvarla e uscire da named.conf (per vi, SHIFT:wq!).
È necessario apportare una modifica simile in /etc/sysconfig/named:
vi /etc/sysconfig/named
Aggiungete questo in fondo al file:
OPTIONS="-4"
Salvare le modifiche (di nuovo, per vi, SHIFT:wq!).
È necessario aggiungere il server DNS (nel nostro esempio 192.168.1.136) a ogni macchina che si desidera abbia accesso ai server aggiunti al DNS locale. L'autore mostra solo un esempio di come farlo su una workstation Rocky Linux. Metodi simili esistono per altre distribuzioni Linux, Windows e Mac.
È necessario aggiungere il server DNS all'elenco, in quanto è ancora necessario l'accesso a Internet, che richiede i server DNS attualmente assegnati. In genere è il DHCP (Dynamic Host Configuration Protocol) ad assegnarli, oppure sono assegnati staticamente.
Su una workstation Rocky Linux in cui l'interfaccia di rete abilitata è eth0, utilizzare:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
Se l'interfaccia di rete attivata è diversa, è necessario sostituire il nome dell'interfaccia. Il file di configurazione che si apre avrà un aspetto simile a questo per un IP assegnato staticamente (non DHCP come detto sopra). Nell'esempio seguente, l'indirizzo IP della nostra macchina è 192.168.1.151:
Dopo aver completato le modifiche, riavviare la macchina o riavviare la rete con:
systemctl restart network
Ora sarete in grado di raggiungere qualsiasi cosa nel dominio ourdomain.lan dalle vostre postazioni di lavoro, oltre a poter risolvere e raggiungere gli indirizzi Internet.
Con Rocky Linux 9.0 e successivi, l'uso delle regole iptables è deprecato. Si dovrebbe invece usare firewalld.
L'autore non fa alcuna ipotesi sulla rete o sui servizi di cui potreste avere bisogno, tranne che per l'attivazione dell'accesso SSH e dell'accesso DNS solo per la nostra rete LAN. Per questo, si utilizzerà la zona incorporata di firewalld, "trusted". È necessario apportare modifiche al servizio nella zona "pubblica" per limitare l'accesso SSH alla LAN.
Il primo passo è aggiungere la nostra rete LAN alla zona "trusted":
Questo mostrerà che i servizi e la rete di origine sono stati aggiunti correttamente:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 192.168.1.0/24
services: dns ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
L'elenco della zona "public " mostrerà che l'accesso SSH non è più consentito:
firewall-cmd --zone=public --list-all
Mostra:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Queste regole consentono di ottenere la risoluzione DNS sul server DNS privato da parte degli host della rete 192.168.1.0/24. Inoltre, sarete in grado di accedere al vostro server DNS privato tramite SSH da uno qualsiasi di questi host.
Modificando /etc/hosts su una singola workstation si ottiene l'accesso a una macchina della rete interna, ma si può usare solo su quella macchina. Un server DNS privato che utilizza bind consente di aggiungere host al DNS e, a condizione che le workstation abbiano accesso a quel server DNS privato, saranno in grado di raggiungere questi server locali.
Se non avete bisogno che le macchine risolvano su Internet, ma avete bisogno di un accesso locale da diverse macchine ai server locali, prendete in considerazione un server DNS privato.