2019年4月10日水曜日

VyOSでDNSキャッシュサーバを構築する

DNSフォワーディングをするだけのDNSキャッシュサーバを作るのであれば、VyOSで簡単にできるよ、という話。

DNSフォワーディング設定方法

まず、現在の設定を確認してみる。設定前なので、「not configured」と表示される。
vyos:~$ show dns forwarding statistics
DNS forwarding not configured
DNSフォワーディングの設定を実施してみよう。1.1.1.18.8.8.8を上位のDNSサーバとしてフォワーディングする設定となる。
vyos# set service dns forwarding listen-on eth1
vyos# set service dns forwarding name-server 1.1.1.1
vyos# set service dns forwarding name-server 8.8.8.8
vyos@t3033vyos# compare
+dns {
+    forwarding {
+        cache-size 150
+        listen-on eth1
+        name-server 1.1.1.1
+        name-server 8.8.8.8
+    }
+}
vyos# commit
vyos# save
Saving configuration to '/config/config.boot'...
Done
listen-onで問い合わせを受け付けるインタフェースを指定し、name-serverでフォワーディングする上位のDNSサーバーを指定する。cache-sizeはデフォルトで150となっている(単位は「個」)。0に設定すれば、キャッシュがされないため、必ずDNS問い合わせはフォワーディングされる動作となる。

ちなみに、以下のように設定も可能な模様。VyOSサーバーのOS自体のDNSサーバー設定を行い、そちらをフォワーディング先とする設定となる。
vyos# set system name-server 1.1.1.1
vyos# set system name-server 8.8.8.8
vyos# set service dns forwarding listen-on eth1
vyos# set service dns forwarding system

DNSフォワーディング状況確認方法

設定後のDNS問い合わせ状況を確認するコマンドを以下に記載する。
vyos:~$ show dns forwarding statistics
----------------
Cache statistics
----------------
Cache size: 150
Queries forwarded: 15
Queries answered locally: 5
Total DNS entries inserted into cache: 22
DNS entries removed from cache before expiry: 0

---------------------
Nameserver statistics
---------------------
Server: 8.8.8.8
Queries sent: 12
Queries retried or failed: 0

Server: 1.1.1.1
Queries sent: 11
Queries retried or failed: 0
Queries forwardedが上位DNSに問い合わせをした回数となり、Queries answered locallyがキャッシュにて問い合わせを返すことができた回数となる。

3 件のコメント:

  1. VyOSのバージョンはいくつでしょうか?
    2019年の記事なので1.2.0だと思っていたのですが、`set service dns forwarding listen-on`が削除されているようで上手くいきません

    返信削除
  2. 1.1.8でした。1.2.0ではコマンド変わったのかもしれないですね。

    $ show version
    Version: VyOS 1.1.8

    # set service dns forwarding
    Possible completions:
    cache-size DNS forwarding cache size
    + dhcp Use nameservers received from DHCP server for specified interface
    +> domain DNS domain to forward to a local server
    ignore-hosts-file
    Do not use local /etc/hosts file in name resolution
    + listen-on Interface to listen for DNS queries [REQUIRED]
    + name-server DNS server to forward queries
    system DNS forwarding to system nameservers

    返信削除
    返信
    1. 返信ありがとうございます。
      どうやら1.2からset service dns forwarding listen-addressに変わったようです
      お手数をおかけしました

      削除

人気の投稿