概要
このドキュメントでは、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
関連情報