Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Configurazione DNS shell Bash

Verifica DNS shell Bash

Passaggio 1. Verificare l'utilizzo di uno spazio dei nomi di rete valido.

Passaggio 2. Verificare il funzionamento della risoluzione DNS utilizzando il nome host dell'host di test.

/etc/resolv.conf

Esempi

Informazioni correlate

Introduzione

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.

Prerequisiti

Requisiti

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.

Componenti usati

Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:

- Piattaforma Nexus 9000 a partire da NX-OS versione 6.1(2)I2(1)

- Piattaforma Nexus 3000 a partire da NX-OS versione 6.0(2)U4(1)

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.

Configurazione DNS shell Bash

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.

Verifica DNS shell Bash

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.

Passaggio 1. Verificare l'utilizzo di uno spazio dei nomi di rete valido.

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

Passaggio 2. Verificare il funzionamento della risoluzione DNS utilizzando il nome host dell'host di test.

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

/etc/resolv.conf

Di seguito vengono illustrati alcuni parametri di configurazione comuni. Assicurarsi di modificare tutti i parametri di configurazione in base all'ambiente.

- domain {domain-name.tld} - Definisce un nome di dominio predefinito {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.

- search {domain-name-1.tld} [domain-name-2.tld...] - Definisce un elenco di nomi di dominio delimitato da spazi ({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.

- nameserver {address-1} - Definisce un indirizzo IP {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.

Esempi

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

Informazioni correlate

- Cisco Nexus serie 9000 NX-OS Programmability Guide, versione 9.x

- Cisco Nexus serie 9000 NX-OS Programmability Guide, versione 7.x

- Cisco Nexus serie 9000 NX-OS Programmability Guide, versione 6.x

- Cisco Nexus serie 3000 NX-OS Programmability Guide, versione 9.x

- Cisco Nexus serie 3000 NX-OS Programmability Guide, versione 7.x

- Cisco Nexus serie 3000 NX-OS Programmability Guide, versione 6.x

- Cisco Nexus serie 3500 NX-OS Programmability Guide, versione 9.x

- Cisco Nexus serie 3500 NX-OS Programmability Guide, versione 7.x

- Cisco Nexus serie 3500 NX-OS Programmability Guide, versione 6.x

- Cisco Nexus serie 3600 NX-OS Programmability Guide, versione 9.x

- Cisco Nexus serie 3600 NX-OS Programmability Guide, versione 7.x

- Programmabilità e automazione con Cisco Open NX-OS