NEC IX ルータにおけるDNS設定についてまとめます。全ての端末がインターネット上のDNSサーバに問い合わせを行うのはネットワーク負荷が大きいので、DNS proxyやDNS cacheを設ける事で負荷を軽減します。各端末がDNS proxyへの名前解決問い合わせを行い、DNS proxyとなるIXルータはインターネット上のDNSサーバへの代理問い合わせを行います。代理問い合わせの結果はcacheされるので、cache hitした分だけネットワーク負荷が下がります。
設定まとめ
コマンド一覧
名前解決に関するコマンド一覧は以下の通りです。
Router(config)# ip name-server <addr> Router(config)# ipv6 name-server <addr> Router(config)# proxy-dns ip enable Router(config)# proxy-dns ipv6 enable Router(config)# proxy-dns server <addr> priority <priority> Router(config)# dns cache enable Router(config)# dns cache lifetime <sec> Router(config)# dns ncache lifetime <sec> Router(config)# dns cache max-records <num>
DNS proxy
“proxy-dns ip enable”コマンドでDNS proxyを有効にする事ができます。このコマンドを投入する事で、NEC IXをDNSサーバの代用として使用する事ができます。
後述のDNS cacheと組み合わせるとDNS queryの数を減らす事ができ、ネットワークの負担を減らす事ができます。
Router(config)# proxy-dns ip enable Router(config)# proxy-dns ipv6 enable
“proxy-dns server”コマンドで、DNS proxyとして動作する時の問い合わせ先のDNSサーバを指定します。
Router(config)# proxy-dns server <addr> priority <priority>
DNS cache
“dns cache enable”コマンドでDNS cacheを有効にする事ができます。
Router(config)# dns cache enable
必須設定ではありませんが、DNS cacheに関するチューニングも可能です。以下のコマンドでcache生存時間、negative cache生存時間、保持する最大レコード数を変更する事ができます。
Router(config)# dns cache lifetime <sec> Router(config)# dns ncache lifetime <sec> Router(config)# dns cache max-records <num>
DNS Client(NEC IXの自発パケット向けの設定)
以下のコマンドでNEC IXの自発パケットの名前解決をするサーバを指定する事ができます。priorityによる優先度は指定はできませんが、複数のDNSサーバを指定する事で冗長設定も可能です。
ルータ機器の一般論としては、NTPサーバやIPsecの接続先をFQDNで設定する場合に必要となる設定です。しかし、NEC IXはFQDNで宛先を指定できる機能が思い当たらないため、今のところ、この設定が有効活用できる要件を思いつきません。
Router(config)# ip name-server <addr> Router(config)# ipv6 name-server <addr>
動作確認
動作確認の構成
以下の環境で動作確認を行います。
+-----------------+ | Internet | | (ISP:Jcom) | +-------+---------+ | | | | Gi0.0 | .dhcp +-------+---------+ | NEC IX 2015 | | R1 | +-------+---------+ Gi1.0 | .254 | | 192.168.1.0/24 | ens192 | .100 +-------+---------+ | Rocky Linux 8.4 | | host100 | +-----------------+
初期設定
IX2015の初期設定は以下の通りとします。設定はIPアドレスとインターネットに接続するためのNATしか投入していません。
動作確認 (1) DNS proxy
IXルータに”proxy-dns ip enable”コマンドを入力し、DNS proxyを有効にします。
[R1:IX2015] proxy-dns ip enable
proxy-dnsが使用するDNSサーバを指定します。
[R1:IX2015] proxy-dns server 208.67.222.222 priority 110 proxy-dns server 208.67.220.220
host100がNEC IXへ名前解決を問い合わせ、NEC IXが名前解決に応答する事を確認します。
[host010:RockyLinux8.4] [root@host100 ~]# dig amazon.com @192.168.1.254 ; <<>> DiG 9.11.26-RedHat-9.11.26-4.el8_4 <<>> amazon.com @192.168.1.254 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50314 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;amazon.com. IN A ;; ANSWER SECTION: amazon.com. 57 IN A 54.239.28.85 amazon.com. 57 IN A 176.32.103.205 amazon.com. 57 IN A 205.251.242.103 ;; Query time: 4 msec ;; SERVER: 192.168.1.254#53(192.168.1.254) ;; WHEN: 金 11月 19 14:05:01 JST 2021 ;; MSG SIZE rcvd: 87 [root@host100 ~]#
動作確認 (2) DNS cache
以下のコマンドでDNS cacheを有効にします。
[R1:IX2015] dns cache enable
host100で名前解決を試みます。
[host010:RockyLinux8.4] [root@host100 ~]# dig amazon.com @192.168.1.254 <omitted> ;; ANSWER SECTION: amazon.com. 43 IN A 205.251.242.103 amazon.com. 43 IN A 54.239.28.85 amazon.com. 43 IN A 176.32.103.205 <omitted> [root@host100 ~]# dig redhat.com @192.168.1.254 <omitted> ;; ANSWER SECTION: redhat.com. 3143 IN A 209.132.183.105 <omitted> [root@host100 ~]#
cacheされたエントリは”show dns cache”で参照する事ができます。先ほどdigコマンドによる名前解決が、IXルータ内にcacheされている事を確認します。
[R1:IX2015] Router(config)# show dns cache DNS Resource Records: 4/128 amazon.com. 0 hits 0:00:34 IN A 205.251.242.103 amazon.com. 0 hits 0:00:34 IN A 54.239.28.85 amazon.com. 0 hits 0:00:34 IN A 176.32.103.205 redhat.com. 0 hits 0:52:21 IN A 209.132.183.105 Router(config)#
動作確認 (3) DNS Client
IXルータが名前解決を行うDNSサーバを指定します。
[R1:IX2015] ip name-server 208.67.222.222 ip name-server 208.67.220.220
NEC IXの自発パケットが確かに名前解決可能である事を確認します。
[R1:IX2015] Router(config)# ping f5.com Looking up ipv4 address for "f5.com" ...Success PING 10.180.180.209 > 107.162.162.40 56 data bytes 64 bytes from 107.162.162.40: icmp_seq=0 ttl=240 time=70.335 ms 64 bytes from 107.162.162.40: icmp_seq=1 ttl=240 time=70.327 ms 64 bytes from 107.162.162.40: icmp_seq=2 ttl=240 time=71.546 ms --- 107.162.162.40 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip (ms) min/avg/max = 70.327/70.736/71.546 Router(config)#