[DNS] Knot DNS resolverを導入してみた。

     
    • 最終更新日時:2017/01/14 20:07:09


    C言語とJITLuaで書かれた、DNSリゾルバー、Knot DNS resolverを導入してみました。

    ファーストリリースが2016年5月と最近出てきたものになります。

    最新の更新内容は以下に書いてあります。

    NEWS · master · Knot DNS / Knot DNS Resolver · GitLab /
    https://gitlab.labs.nic.cz/knot/resolver/blob/master/NEWS

    個人的にissueであげていた以下の部分が追加されたので導入してみることにしました。

    - DAF: Allow forwarding to custom port


    確認環境:
    $ cat /etc/lsb-release 
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=16.04
    DISTRIB_CODENAME=xenial
    DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"


    1. レポジトリの追加およびインストール
    run as root:

    LC_ALL=C.UTF-8 add-apt-repository ppa:cz.nic-labs/knot-dns
    LC_ALL=C.UTF-8 add-apt-repository ppa:cz.nic-labs/knot-resolver
    apt-get update
    apt-get install knot-resolver

    2. これで導入自体は終わりなのですが、以下のSocketファイルが常時起動しており、localhostにbindされます。
    面倒くさいので一旦無効化します。
    $ sudo netstat -antp | grep init
    tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1/init
    tcp6 0 0 ::1:53 :::* LISTEN 1/init
    tcp6 0 0 :::853 :::* LISTEN 1/init

    sudo systemctl stop kresd.socket kresd-control.socket kresd-tls.socket
    sudo systemctl mask kresd.socket kresd-control.socket kresd-tls.socket

    7行目と14行目を変更します。
    $ sudo systemctl cat kresd.service 
    # /lib/systemd/system/kresd.service
    [Unit]
    Description=Knot DNS Resolver daemon
    Documentation=man:kresd(8)
    ## This is a socket-activated service:
    RefuseManualStart=false

    [Service]
    Type=notify
    WorkingDirectory=/run/knot-resolver/cache
    EnvironmentFile=-/etc/default/kresd
    ExecStart=/usr/sbin/kresd $KRESD_ARGS
    #User=knot-resolver
    User=root
    Restart=on-failure

    [Install]
    WantedBy=sockets.target

    3. configファイルの内容は以下の様な感じになるはずです。--以下がコメント扱いになります。
    $ cat /etc/knot-resolver/kresd.conf 
    -- Default empty Knot DNS Resolver configuration in -*- lua -*-
    -- Bind ports as privileged user (root) --
    -- net = { '127.0.0.1', '::1', '192.168.1.2', }
    for name, addr_list in pairs(net.interfaces()) do
    net.listen(addr_list)
    end
    -- Switch to unprivileged user --
    user('knot-resolver','knot-resolver')
    -- Unprivileged
    cache.size = 256*MB
    modules = {
    'hints > iterate', -- Hints AFTER iterate
    'policy > hints', -- Policy AFTER hints
    'view < rrcache', -- View BEFORE rrcache
    predict = {
    window = 15, -- 15 minutes sampling window
    period = 6*(60/15) -- track last 6 hours
    },
    'daf'
    }
    modules.list() -- Check module call order
    policy.add(policy.suffix(policy.FORWARD('192.168.1.2@10053'), {'\7kometch\5local'}))
    daf.add 'qname ~ %w*.kometch.local forward 192.168.1.2@10053'

    最後は同居しているDNSコンテンツサーバのカスタムポートへFORWARDする書き方です。(stub forwardingですね)
    ここらへんは公式のドキュメントにも記載があるので、問題無いでしょう。

    ※開発者の方から、DNS application Firewallを併用したほうがいいよということで追加しました。
    modules = { 'daf' }
    daf.add 'qname ~ %w*.kometch.local forward 192.168.1.2@10053'

    Knot DNS Resolver modules — Knot DNS Resolver 1.1.0 documentation /
    http://knot-resolver.readthedocs.io/en/latest/modules.html#query-policies

    Knot DNS Resolver modules — Knot DNS Resolver 1.1.0 documentation /
    https://knot-resolver.readthedocs.io/en/latest/modules.html#id9

    4. サービス起動が不安なときは以下のようにしてインタラクティブモードで起動しましょう。verboseオプションをつけているので、デバッグっぽく上がってくるので、configがミスっていてもわかると思います。
    $ sudo kresd --config=/etc/knot-resolver/kresd.conf --verbose --forks=1 --keyfile=/usr/share/dns/root.key /run/knot-resolver/cache


    他にもDNS application FirewallとかPrometheus対応、HTTP2 Web interface対応など、どこに向かっているかわからない機能追加が満載ですが、色々と面白いDNSリゾルバーだと思うので、これからも見守っていこうと思います。


    関連記事


    Pagination

    Trackback

    Trackback URL

    https://kometchtech.blog.fc2.com/tb.php/1978-4a7e646c

    Comment

    Post Your Comment

    コメント登録フォーム
    公開設定

    Utility

    Profile

    kometch

    Author:kometch
    なんちゃってエンジニアです。
    2009年10月から業務都合により大阪勤務になりました。
    2010年1月、HYBRID W-ZERO3を購入しました。
    2010年11月、HTC Desire HDを購入しました。
    2012年2月、都内の会社に転職しました。
    2012年5月、HTC One Xを購入しました。
    2012年8月、事情により休職しました。
    2012年8月、SONY Xperia SXを購入しました。
    2013年1月、一身上の都合により退職しました。
    2014年3月、都内の会社に就職しました。
    2016年8月、HPC系の会社に転職しました。

    Amazonほしい物リスト
    何か問題などありましたら、こちらまで。 Twitter:@kometchtech follow us in feedly

    カレンダー

    09 | 2017/10 | 11
    1 2 3 4 5 6 7
    8 9 10 11 12 13 14
    15 16 17 18 19 20 21
    22 23 24 25 26 27 28
    29 30 31 - - - -

    全記事(数)表示

    全タイトルを表示

    バロメーター

    カテゴリー

    カテゴリークラウド

    アーカイブ

    検索フォーム

    FC2カウンター

    現在の閲覧者数

    現在の閲覧者数:

    Amazonアソシエイト

    スポンサードリンク

    月間ページランキング

    ブログパーツ

    サイトランキング

    スポンサードリンク

    スポンサードリンク