Inhalt

Einführung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Bash Shell-DNS-Konfiguration

Bash Shell - DNS-Verifizierung

Schritt 1: Überprüfen der Verwendung eines gültigen Netzwerknamespace zum Testen.

Schritt 2: Überprüfen der Funktion der DNS-Auflösung mithilfe des Hostnamens des Testhosts.

/etc/resolv.conf

Beispiele

Zugehörige Informationen

Einführung

Dieses Dokument beschreibt die Schritte zur Konfiguration von DNS-Servern in Bash, um die Auflösung von DNS-Hostnamen in IP-Adressen zu ermöglichen.

Geräte der Cisco Nexus Serien 3000 und 9000 ermöglichen den Zugriff auf das zugrunde liegende Linux-System von NX-OS über Bash (Bourne-Again SHell). Bash ermöglicht Systemverwaltung und -überwachung über eine Linux-Umgebung. Weitere Informationen zu Bash in NX-OS finden Sie im Bash-Kapitel im NX-OS-Programmierhandbuch für die Cisco Nexus Serie 9000.

Es kann erforderlich sein, beim Ausführen normaler Aufgaben in der Bash-Shell benutzerfreundliche Domänennamen in numerische IP-Adressen zu übersetzen. Zu diesen Aufgaben gehört die Verwendung der curl- oder wget-Dienstprogramme, um auf Ressourcen von einem Webserver zuzugreifen oder Docker-Images mit dem Docker-Pull-Befehl herunterzuladen.

Voraussetzungen

Anforderungen

Dieses Dokument ist nicht auf bestimmte Software- und Hardwareversionen beschränkt.

Hinweis: Die Bash-Shell soll auf Ihrem Cisco Nexus-Gerät aktiviert werden. Anweisungen zum Aktivieren der Bash-Shell finden Sie im Abschnitt "Accessing Bash" (Zugriff auf Bash) im Bash-Kapitel im Nexus NX-OS-Programmierbarkeitsleitfaden der Cisco Nexus Serie 9000.

Verwendete Komponenten

Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:

- Nexus 9000-Plattform ab NX-OS 6.1(2)I2(1)

- Nexus 3000-Plattform ab NX-OS 6.0(2)U4(1)

Die Informationen in diesem Dokument wurden von Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.

Bash Shell-DNS-Konfiguration

Die Linux-Umgebung, auf die über die Bash-Shell zugegriffen wird, verwendet die /etc/resolv.conf-Datei, um die DNS-Konfiguration zu speichern, ähnlich wie die meisten anderen Unix-ähnlichen Betriebssysteme.

1. Melden Sie sich über den Befehl run bash sudo su - an der Bash-Shell als root-Benutzer an.

Nexus# run bash sudo su -

root@Nexus#whoami

root

2. Zeigen Sie den aktuellen Inhalt der /etc/resolv.conf-Datei an. In diesem Beispiel ist die Datei leer.

root@Nexus#cat /etc/resolv.conf

root@Nexus#

3. Öffnen Sie die Datei /etc/resolv.conf zur Bearbeitung mit dem vi-Texteditor.

root@Nexus#vi /etc/resolv.conf

4. Drücken Sie die i-Taste, um in den INSERT-Modus zu wechseln, und geben Sie dann die gewünschte Konfiguration ein. Weitere Informationen zum Konfigurationsformat in der /etc/resolv.conf-Datei finden Sie im Abschnitt /etc/resolv.conf dieses Dokuments.

5. Wenn die Datei geändert wurde, drücken Sie die ESC-Taste, um den INSERT-Modus zu beenden. Geben Sie dann :x ein, um alle Änderungen in der Datei zu speichern und sie zu schließen.

Bash Shell - DNS-Verifizierung

Nachdem die Änderungen an der DNS-Konfiguration der Bash-Shell vorgenommen wurden, stellen Sie sicher, dass die Änderungen zur erfolgreichen Auflösung des Domänennamen führen. Die einfachste Methode zum Testen der Domänennamenauflösung ist die Verwendung des Ping-Dienstprogramms unter Verwendung eines Domänenhostnamens als Ziel. In diesem Dokument wird veranschaulicht, wie eine gültige DNS-Konfiguration mithilfe eines Test-Hosts der Datei test.cisco.com und der DNS-Server 192.168.2.1 und 192.168.2.2 verifiziert wird.

Schritt 1: Überprüfen der Verwendung eines gültigen Netzwerknamespace zum Testen.

Standardmäßig verwendet die Bash-Shell den standardmäßigen Netzwerknamespace, sofern nicht anders angegeben. Netzwerknamespaces entsprechen logisch den NX-OS-VRFs, und das ip-Netzwerk des Befehls zeigt eine Liste von Namespaces an, die der Bash-Shell zur Verfügung stehen, wie unten gezeigt:

root@Nexus#ip netns

EXAMPLE-VRF (id: 2)

management (id: 1)

default (id: 0)

Ein gültiger Netzwerknamespace, mit dem getestet werden soll, ist ein Namespace, der über IP-Verbindungen zu den in der /etc/resolv.conf-Datei konfigurierten DNS-Namenservern sowie über IP-Verbindungen zur IP-Adresse verfügt, zu der der Testhost aufgelöst wird.

Sie können den Befehl ip netns exec {namespace} {want-command} verwenden, um den Befehl {want-command}im Namespace {namespace} auszuführen. Alternativ kann die Bash-Shell im Kontext eines bestimmten Namespaces mit dem Befehl ip netns exec {namespace} bash ausgeführt werden. Die bisherige Methode wird im Beispiel hier verwendet. Es wird überprüft, ob der Management-Namespace über IP-Verbindungen mit der IP-Adresse des test.cisco.com-Hosts (d. h. 192.168.2.100) und beiden DNS-Servern (192.168.2.1 und 192.168.2.2) verfügt. ...

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

Schritt 2: Überprüfen der Funktion der DNS-Auflösung mithilfe des Hostnamens des Testhosts.

Verwenden Sie das ping-Dienstprogramm mit einem Ziel des Hostnamens des Testhosts. Wenn ICMP-Antworten vom Test-Host empfangen werden und die in den ICMP-Antworten enthaltene IP-Adresse die IP-Adresse ist, auf die der Hostname aufgelöst werden soll, wird bestätigt, dass die DNS-Auflösung in der Bash-Shell funktioniert.

Dieses Beispiel veranschaulicht, wie das ping-Dienstprogramm im Management-Namespace verwendet wird, um die korrekte DNS-Auflösung zu überprüfen. Beachten Sie, dass der Domänen-Hostname von test.cisco.com auf 192.168.2.100 aufgelöst wird. Dies ist die IP-Adresse, von der wir erwarten, dass dieser Hostname aufgelöst wird.

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

Wenn der Namespace, der zum Testen der DNS-Auflösung verwendet wird, über eine IP-Verbindung mit dem Internet verfügt, kann man cisco.com pingen, um zu überprüfen, ob externe Domänennamen zusätzlich zu internen Domänennamen aufgelöst werden können. Dies ist besonders dann wichtig, wenn Sie Dienstprogramme wie curl und wget gegen öffentliche Webserver verwenden müssen. Das Beispiel hier veranschaulicht, wie das Ping-Dienstprogramm innerhalb des Management-Namespaces (der über IP-Verbindungen zum Internet verfügt) verwendet werden kann, um die korrekte externe DNS-Auflösung zu überprüfen.

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

Hier werden einige gängige Konfigurationsparameter erläutert. Ändern Sie alle Konfigurationsparameter entsprechend Ihrer Umgebung.

- domain {domain-name.tld} - Definiert einen Standarddomänennamen {domain-name.tld}, der an Hostnamen angehängt wird, die nicht mit einem Punkt enden. Es kann nur einen Domäneneintrag in der /etc/resolv.conf-Datei geben.

- search {domain-name-1.tld} [domain-name-2.tld..] - Definiert eine durch Leerzeichen getrennte Liste von Domänennamen ({domain-name-1.tld} und optional [domain-name-2.tld]), um Hostnamen anzuhängen.

Hinweis: Die Domänen- und Sucheinträge schließen sich gegenseitig aus. Es kann jeweils nur einer verwendet werden. Wenn beide Einträge in der /etc/resolv.conf-Datei enthalten sind, wird der Eintrag, der zuletzt in der Datei angezeigt wird, verwendet.

- nameserver {address-1} - Definiert eine IP-Adresse {address-1} für einen DNS-Server, an den DNS-Auflösungsanfragen weitergeleitet werden. Mehrere Namenserver-Einträge sind innerhalb einer Datei zulässig, maximal drei.

Beispiele

Dieses Beispiel zeigt den Inhalt der /etc/resolv.conf-Datei, wobei die Standarddomäne der Umgebung cisco.com lautet und DNS-Server in der Umgebung die IP-Adressen 192.168.2.1 und 192.168.2.2 haben. Wenn in diesem Szenario die Bash-Shell die IP-Adresse für ein Gerät mit dem Hostnamen foo auflösen muss, fügt sie cisco.com an das Ende des Hostnamens an, sodass der vollqualifizierte Domänenname (FDQN) des Hosts foo.cisco.com ist.

domain cisco.com

nameserver 192.168.2.1

nameserver 192.168.2.2

Das folgende Beispiel zeigt den Inhalt der /etc/resolv.conf-Datei, in der entweder die Domänennamen cisco.com oder bar.com zum Auflösen von DNS-Hostnamen verwendet werden können. DNS-Server in der Umgebung haben die IP-Adressen 192.168.2.1 und 192.168.2.2. Wenn in diesem Szenario die Bash-Shell die IP-Adresse eines Geräts mit einem Hostnamen foo auflösen muss, versucht sie zunächst, foo.cisco.com aufzulösen, und dann als Nächstes zu foo.bar.com zu suchen, wenn die Auflösung für foo.cisco.com fehlschlägt.

search cisco.com bar.com

nameserver 192.168.2.1

nameserver 192.168.2.2

Zugehörige Informationen

- NX-OS-Programmierhandbuch für die Cisco Nexus Serie 9000, Version 9.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 9000, Version 7.x

- NX-OS-Programmierhandbuch für die Cisco Nexus Serie 9000, Version 6.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 3000, Version 9.x

- Cisco Nexus 3000 NX-OS-Programmierhandbuch, Version 7.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 3000, Version 6.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 3500, Version 9.x

- Cisco Nexus 3500 NX-OS-Programmierhandbuch, Version 7.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 3500, Version 6.x

- Cisco Nexus NX-OS-Programmierhandbuch der Serie 3600, Version 9.x

- Cisco Nexus 3600 NX-OS-Programmierhandbuch, Version 7.x

- Programmierbarkeit und Automatisierung mit Cisco Open NX-OS