La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento viene descritto come configurare i server DNS in Bash in modo da consentire la risoluzione dei nomi host DNS in indirizzi IP.
I dispositivi Cisco Nexus serie 3000 e 9000 consentono l'accesso al sistema Linux sottostante di NX-OS tramite Bash (Bourne-Again SHell). Bash consente la gestione e il monitoraggio del sistema attraverso un ambiente Linux. Per ulteriori informazioni su Bash su NX-OS, fare riferimento al capitolo Bash della Guida alla programmabilità di Cisco Nexus serie 9000 NX-OS.
Potrebbe essere necessario convertire nomi di dominio descrittivi in indirizzi IP numerici durante l'esecuzione di normali attività nella shell Bash. Tali attività includono l'utilizzo delle utilità curl
o wget
per accedere alle risorse da un server Web o per scaricare immagini Docker utilizzando il comando docker pull
.
Il documento può essere consultato per tutte le versioni software o hardware.
Nota: La shell Bash deve essere abilitata sul dispositivo Cisco Nexus. Fare riferimento alla sezione "Accesso a Bash" del capitolo Bash nella Cisco Nexus 9000 NX-OS Programmability Guide per istruzioni su come abilitare la shell Bash.
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
L'ambiente Linux a cui si accede tramite la shell Bash utilizza il file /etc/resolv.conf per archiviare la configurazione DNS, in modo simile alla maggior parte degli altri sistemi operativi Unix-like.
1. Accedere alla shell Bash come utente root tramite il comando run bash sudo -
.
Nexus# run bash sudo su - root@Nexus#whoami root
2. Visualizzare il contenuto corrente del file /etc/resolv.conf. In questo esempio, il file è vuoto.
root@Nexus#cat /etc/resolv.conf root@Nexus#
3. Aprire il file /etc/resolv.conf per la modifica utilizzando l'editor di testo vi
.
root@Nexus#vi /etc/resolv.conf
4. Premere il tasto i
per accedere alla modalità INSERT, quindi immettere la configurazione desiderata. Per ulteriori informazioni sul formato di configurazione nel file /etc/resolv.conf, consultare la sezione /etc/resolv.conf del file.
5. Dopo aver modificato il file, premere il tasto ESC
per uscire dalla modalità INSERT, quindi immettere :x
per salvare tutte le modifiche apportate al file e chiuderlo.
Dopo aver apportato le modifiche alla configurazione DNS della shell Bash, verificare che le modifiche consentano di risolvere correttamente i nomi di dominio. Il metodo più semplice per verificare la risoluzione dei nomi di dominio consiste nell'utilizzare l'utilità ping
utilizzando un nome host di dominio come destinazione. In questo documento viene illustrato come verificare una configurazione DNS valida utilizzando un host di test di test.cisco.com e i server DNS di 192.168.2.1 e 192.168.2.2.
Per impostazione predefinita, la shell Bash utilizza lo spazio dei nomi di rete predefinito, se non diversamente specificato. Gli spazi dei nomi di rete sono equivalenti dal punto di vista logico ai VRF di NX-OS e ip netns
nel comando viene visualizzato un elenco di spazi dei nomi disponibili per la shell Bash, come illustrato di seguito:
root@Nexus#ip netns EXAMPLE-VRF (id: 2) management (id: 1) default (id: 0)
Uno spazio dei nomi di rete valido con cui eseguire il test dispone di connettività IP ai server dei nomi DNS configurati nel file /etc/resolv.conf, nonché connettività IP all'indirizzo IP a cui l'host di test esegue il test.
È possibile utilizzare il comando ip netns exec {namespace} {desired-command}
per eseguire un comando {desired-command}
nello spazio dei nomi {namespace}
. In alternativa, è possibile eseguire la shell Bash nel contesto di uno spazio dei nomi specifico con il comando ip netns exec {namespace} bash
. Nell'esempio riportato di seguito viene utilizzata la metodologia precedente. Viene verificato che lo spazio dei nomi di gestione disponga di connettività IP con l'indirizzo IP di proprietà dell'host test.cisco.com (ovvero 192.168.2.100) e di entrambi i server DNS (192.168.2.1 e 192.168.2.2).
root@Nexus#ip netns exec management ping 192.168.2.100 -c 5 PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data. 64 bytes from 192.168.2.100: icmp_seq=1 ttl=59 time=0.277 ms 64 bytes from 192.168.2.100: icmp_seq=2 ttl=59 time=0.284 ms 64 bytes from 192.168.2.100: icmp_seq=3 ttl=59 time=0.280 ms 64 bytes from 192.168.2.100: icmp_seq=4 ttl=59 time=0.274 ms 64 bytes from 192.168.2.100: icmp_seq=5 ttl=59 time=0.297 ms --- 192.168.2.100 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4001ms rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms root@Nexus#ip netns exec management ping 192.168.2.1 -c 5 PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data. 64 bytes from 192.168.2.1: icmp_seq=1 ttl=59 time=0.277 ms 64 bytes from 192.168.2.1: icmp_seq=2 ttl=59 time=0.284 ms 64 bytes from 192.168.2.1: icmp_seq=3 ttl=59 time=0.280 ms 64 bytes from 192.168.2.1: icmp_seq=4 ttl=59 time=0.274 ms 64 bytes from 192.168.2.1: icmp_seq=5 ttl=59 time=0.297 ms --- 192.168.2.1 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4001ms rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms root@Nexus#ip netns exec management ping 192.168.2.2 -c 5 PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data. 64 bytes from 192.168.2.2: icmp_seq=1 ttl=59 time=0.277 ms 64 bytes from 192.168.2.2: icmp_seq=2 ttl=59 time=0.284 ms 64 bytes from 192.168.2.2: icmp_seq=3 ttl=59 time=0.280 ms 64 bytes from 192.168.2.2: icmp_seq=4 ttl=59 time=0.274 ms 64 bytes from 192.168.2.2: icmp_seq=5 ttl=59 time=0.297 ms --- 192.168.2.2 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4001ms rtt min/avg/max/mdev = 0.274/0.282/0.297/0.017 ms
Usare l'utilità ping
con una destinazione del nome host dell'host di test. Se vengono ricevute risposte ICMP dall'host di test e l'indirizzo IP contenuto nelle risposte ICMP è l'indirizzo IP a cui si prevede che venga risolto il nome host, la risoluzione DNS verrà confermata per funzionare nella shell Bash.
Nell'esempio seguente viene illustrato come utilizzare l'utilità ping
nello spazio dei nomi di gestione per verificare la risoluzione DNS corretta. Si noti come il nome host di dominio di test.cisco.com si risolve in 192.168.2.100, ossia l'indirizzo IP in cui ci si aspetta che il nome host venga risolto.
root@Nexus#ip netns exec management ping test.cisco.com -c 5 PING test.cisco.com (192.168.2.100) 56(84) bytes of data. 64 bytes from test.cisco.com (192.168.2.100): icmp_seq=1 ttl=59 time=0.617 ms 64 bytes from test.cisco.com (192.168.2.100): icmp_seq=2 ttl=59 time=0.341 ms 64 bytes from test.cisco.com (192.168.2.100): icmp_seq=3 ttl=59 time=0.310 ms 64 bytes from test.cisco.com (192.168.2.100): icmp_seq=4 ttl=59 time=0.379 ms 64 bytes from test.cisco.com (192.168.2.100): icmp_seq=5 ttl=59 time=0.296 ms --- test.cisco.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4004ms rtt min/avg/max/mdev = 0.296/0.388/0.617/0.119 ms
Se lo spazio dei nomi utilizzato per verificare la risoluzione DNS dispone di connettività IP a Internet, è possibile eseguire il ping di cisco.com per verificare che sia possibile risolvere i nomi di dominio esterni oltre ai nomi di dominio interni. Ciò è particolarmente importante se si devono utilizzare utility come curl
e wget
contro server Web pubblici. Nell'esempio viene mostrato come utilizzare l'utilità ping
nello spazio dei nomi di gestione (con connettività IP a Internet) per verificare la corretta risoluzione DNS esterna.
root@Nexus#ip netns exec management ping cisco.com -c 5 PING cisco.com (72.163.4.161) 56(84) bytes of data. 64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=1 ttl=239 time=29.2 ms 64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=2 ttl=239 time=29.2 ms 64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=3 ttl=239 time=29.3 ms 64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=4 ttl=239 time=29.2 ms 64 bytes from www1.cisco.com (72.163.4.161): icmp_seq=5 ttl=239 time=29.2 ms --- cisco.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 29.261/29.283/29.335/0.111 ms
Di seguito vengono illustrati alcuni parametri di configurazione comuni. Assicurarsi di modificare tutti i parametri di configurazione in base all'ambiente.
{domain-name.tld}
da aggiungere ai nomi host che non terminano con un punto. Il file /etc/resolv.conf può contenere una sola voce di dominio
.{domain-name-1.tld}
e, facoltativamente, [domain-name-2.tld]
) da aggiungere ai nomi host. Nota: Le voci domain
e search
si escludono a vicenda - è possibile utilizzarne solo una alla volta. Se entrambe le voci sono incluse nel file /etc/resolv.conf, verrà utilizzata l'ultima voce del file.
{address-1}
per un server DNS a cui vengono inoltrate le richieste di risoluzione DNS. Più voci nameserver
sono consentite in un singolo file, fino a un massimo di tre.Nell'esempio viene mostrato il contenuto del file /etc/resolv.conf in cui il dominio predefinito dell'ambiente è cisco.com e i server DNS all'interno dell'ambiente dispongono degli indirizzi IP 192.168.2.1 e 192.168.2.2. In questo scenario, se la shell Bash deve risolvere l'indirizzo IP di un dispositivo con un nome host foo, aggiunge cisco.com alla fine del nome host in modo che il nome di dominio completo (FDQN) dell'host sia foo.cisco.com.
domain cisco.com nameserver 192.168.2.1 nameserver 192.168.2.2
Nell'esempio seguente viene mostrato il contenuto del file /etc/resolv.conf in cui è possibile utilizzare i nomi di dominio cisco.com o bar.com per risolvere i nomi host DNS. I server DNS all'interno dell'ambiente dispongono degli indirizzi IP 192.168.2.1 e 192.168.2.2. In questo scenario, se la shell Bash deve risolvere l'indirizzo IP di un dispositivo con un nome host foo, tenta di risolvere prima foo.cisco.com, quindi tenta di risolvere foo.bar.com se la risoluzione per foo.cisco.com non riesce.
search cisco.com bar.com nameserver 192.168.2.1 nameserver 192.168.2.2