内容

概要

前提条件

要件

使用するコンポーネント

BashシェルのDNS設定

BashシェルのDNS検証

ステップ1：テストする有効なネットワーク名前空間の使用を確認します。

ステップ2：テストホストのホスト名を使用して、DNS解決の機能を確認します。

/etc/resolv.confファイル形式

例

関連情報

概要

このドキュメントでは、DNSホスト名をIPアドレスに解決できるようにBash内のDNSサーバを設定する手順について説明します。

Cisco Nexus 3000および9000シリーズデバイスでは、Bash(Bourne-Again SHell)を介してNX-OSの基盤となるLinuxシステムにアクセスできます。 Bashは、Linux環境を介したシステム管理と監視を可能にします。NX-OSでのBashの詳細については、『Cisco Nexus 9000シリーズNX-OSプログラマビリティガイド』の「Bash」の章を参照してください。

Bashシェルで通常のタスクを実行する際は、わかりやすいドメイン名を数字のIPアドレスに変換する必要があります。このようなタスクには、Webサーバからリソースにアクセスするためのcurlユーティリティまたはwgetユーティリティの使用、またはdocker pullコマンドを使用したDockerイメージのダウンロードが含まれます。

前提条件

要件

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

注：Bashシェルは、Cisco Nexusデバイスで有効にする必要があります。Bashシェルを有効にする手順については、『Cisco Nexus 9000シリーズNX-OSプログラマビリティガイド』のBashの章の「Bashへのアクセス」セクションを参照してください。

使用するコンポーネント

このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。

- NX-OSリリース6.1(2)I2(1)以降のNexus 9000プラットフォーム

- NX-OSリリース6.0(2)U4(1)以降のNexus 3000プラットフォーム

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されたものです。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。

BashシェルのDNS設定

BashシェルからアクセスするLinux環境では、/etc/resolv.confファイルを使用してDNS設定を保存します。これは、他のほとんどのUnixライクなオペレーティングシステムと同様です。

1. run bash sudo su -コマンドを使用して、rootユーザーとしてBashシェルにログインします。

Nexus# run bash sudo su -

root@Nexus#whoami

root

2. /etc/resolv.confファイルの現在の内容を表示する。この例では、ファイルは空です。

root@Nexus#cat /etc/resolv.conf

root@Nexus#

3. viテキストエディタを使用して編集用の/etc/resolv.confファイルを開きてください。

root@Nexus#vi /etc/resolv.conf

4. iキーを押してINSERTモードに入り、必要な設定を入力します。/etc/resolv.confファイル内の設定の形式の詳細については、このドキュメントの「/etc/resolv.confファイル形式」セクションを参照してください。

5.ファイルを修正した後、Escキーを押してINSERTモードを終了し、:xと入力して、すべての変更をファイルに保存して閉じます。

BashシェルのDNS検証

BashシェルのDNS設定に変更を加えたら、変更がドメイン名解決に成功することを確認します。ドメイン名の解決をテストする最も簡単な方法は、ドメインのホスト名をターゲットとしてpingユーティリティを使用することです。このドキュメントでは、test.cisco.comのテストホストと192.168.2.1および192.168.2.2のDNSサーバを使用して、有効なDNS設定を確認する方法を示します。

ステップ1：テストする有効なネットワーク名前空間の使用を確認します。

デフォルトでは、Bashシェルは、特に指示がない限りデフォルトのネットワーク名前空間を使用します。ネットワークの名前空間はNX-OS VRFと論理的に同じであり、コマンドip netnsは、次に示すように、Bashシェルで使用可能な名前空間のリストを表示します。

root@Nexus#ip netns

EXAMPLE-VRF (id: 2)

management (id: 1)

default (id: 0)

テストに使用する有効なネットワーク名前空間は、/etc/resolv.confファイルで設定されたDNSネームサーバへのIP接続と、テストホストが解決するIPアドレスへのIP接続を持つ名前空間です。

ip netns exec {namespace} {desired-command}コマンドを使用して、名前空間{namespace}のコマンド{desired-command}を実行することができます。または、ip netns exec {namespace} bashコマンドを使用して、特定の名前空間のコンテキスト内でBashシェルを実行できます。上記の例では、管理ネームスペースがtest.cisco.comホスト(192.168.2.100)と両方のDNSサーバ(192.168.2.1と192.168.2.2)が所有するIPアドレスとIP接続していることが確認されています。

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

ステップ2：テストホストのホスト名を使用して、DNS解決の機能を確認します。

pingユーティリティをテストホストのホスト名のターゲットとともに使用します。テストホストからICMP応答を受信し、ICMP応答内に含まれるIPアドレスがホスト名が解決すると予想されるIPアドレスである場合、DNS解決はBashシェル内で動作していることが確認されます。

次の例は、正しいDNS解決を確認するために、管理ネームスペース内でpingユーティリティを使用する方法を示しています。test.cisco.comのドメインホスト名が192.168.2.100に解決される方法に注意してください。これは、ホスト名が解決されると予想されるIPアドレスです。

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

DNS解決のテストに使用した名前空間がインターネットにIP接続されている場合は、cisco.comにpingを実行し、内部ドメイン名に加えて外部ドメイン名を解決できることを確認できます。これは、パブリックWebサーバに対してcurlやwgetなどのユーティリティを使用する必要がある場合に特に重要です。次の例は、正しい外部DNS解決を確認するためにpingユーティリティを管理ネームスペース(インターネットへのIP接続)内でどのように使用できるかを示しています。

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ファイル形式

ここでは、一般的な設定パラメータをいくつか説明します。環境に合わせて、すべての設定パラメータを必ず変更してください。

- domain {domain-name.tld}：ピリオドで終わらないホスト名に追加するデフォルトのドメイン名{domain-name.tld}を定義します。/etc/resolv.confファイル内に指定できるドメインエントリは1つのみです。

- search {domain-name-1.tld} [domain-name-2.tld...] – スペースで区切られたドメイン名のリスト({domain-name-1.tld}と、オプションで[domain-name-2.tld])を定義して、ホスト名に追加します。

注：ドメインと検索エントリは相互に排他的です。同時に使用できるのは1つだけです。/etc/resolv.confファイルに両方のエントリが含まれている場合は、ファイルの最後に表示されるエントリが使用されます。

- nameserver {address-1}:DNS解決要求が転送されるDNSサーバのIPアドレス{address-1}を定義します。複数のネームサーバのエントリが1つのファイル内で許可されます（最大3個）。

例

次の例は、環境のデフォルトドメインがcisco.comで、環境内のDNSサーバのIPアドレスが192.168.2.1および192.168.2.2である/etc/resolv.confファイルの内容を示しています。このシナリオでは、Bashシェルがホスト名fooを持つデバイスのIPIPIPアドレスアドレスをの末尾に追加しますホストの名前(FDQN)はfoo.cisco.comです。

domain cisco.com

nameserver 192.168.2.1

nameserver 192.168.2.2

次の例は、DNSホスト名の解決にcisco.comドメイン名またはbar.comドメイン名を使用する/etc/resolv.confファイルの内容を示しています。環境内のDNSサーバのIPアドレスは、192.168.2.1および192.168.2.2です。このシナリオでは、Bashシェルがホスト名fooを持つデバイスのIPアドレスを解決する必要がある場合は、まずfoo.cisco.comを解決します。

search cisco.com bar.com

nameserver 192.168.2.1

nameserver 192.168.2.2

関連情報

- Cisco Nexus 9000シリーズNX-OSプログラマビリティガイド、リリース9.x

- Cisco Nexus 9000シリーズNX-OSプログラマビリティガイド、リリース7.x

- Cisco Nexus 9000シリーズNX-OSプログラマビリティガイド、リリース6.x

- Cisco Nexus 3000シリーズNX-OSプログラマビリティガイド、リリース9.x

- Cisco Nexus 3000シリーズNX-OSプログラマビリティガイド、リリース7.x

- Cisco Nexus 3000シリーズNX-OSプログラマビリティガイド、リリース6.x

- Cisco Nexus 3500シリーズNX-OSプログラマビリティガイド、リリース9.x

- Cisco Nexus 3500シリーズNX-OSプログラマビリティガイド、リリース7.x

- Cisco Nexus 3500シリーズNX-OSプログラマビリティガイド、リリース6.x

- Cisco Nexus 3600シリーズNX-OSプログラマビリティガイド、リリース9.x

- Cisco Nexus 3600シリーズNX-OSプログラマビリティガイド、リリース7.x

- Cisco Open NX-OSによるプログラマビリティと自動化