ユーザ用ツール

サイト用ツール


01_linux:01_net:16_unbound

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
01_linux:01_net:16_unbound [2016/03/22 11:20]
matsui 01_linux:01_net:15_unbound renamed to 01_linux:01_net:16_unbound
01_linux:01_net:16_unbound [2016/03/22 11:21] (現在)
matsui
ライン 1: ライン 1:
 +====== 16 unboundでキャッシュサーバ ======
  
 +bindで行っていたDNSのキャッシュサーバだが、bindは脆弱性が多いのでunboundに変えてみる。
 +
 +unbound 1.4系は、以下の脆弱性があるので1.5系を入れていきます。
 +[[https://​jprs.jp/​tech/​security/​2014-12-09-multiple-impl-vuln-delegation-limit.html]]
 +
 +===== 環境 =====
 +
 +CentOS 6.7
 +unbound 1.5.1
 +
 +===== 1.インストール =====
 +
 +==== epelを用意 ====
 +
 +<​code>​
 +# wget http://​ftp-srv2.kddilabs.jp/​Linux/​distributions/​fedora/​epel/​6/​x86_64/​epel-release-6-8.noarch.rpm
 +# rpm -ivh epel-release-6-8.noarch.rpm
 +# sed -i '​s/​enabled=1/​enabled=0/​g'​ /​etc/​yum.repos.d/​epel.repo
 +</​code>​
 +
 +インストール
 +<​code>​
 +# yum --enablerepo=epel install unbound
 +</​code>​
 +
 +===== 2.設定変更 =====
 +
 +
 +==== 設定ファイル ====
 +
 +<​code>​
 +cp -p /​etc/​unbound/​unbound.conf /​etc/​unbound/​unbound.conf.org
 +</​code>​
 +
 +CPU:​24,​メモリ:​ 8G での設定
 +<​code>​
 +# cat /​etc/​unbound/​unbound.conf | sed '​s/​\(^\t\|^ *\)//​g'​ | egrep -v '​(^#​|^$)'​
 +server:
 +verbosity: 1
 +statistics-interval:​ 0
 +statistics-cumulative:​ no
 +extended-statistics:​ yes
 +num-threads:​ 2
 +interface: 0.0.0.0
 +interface-automatic:​ no
 +outgoing-range:​ 32768
 +outgoing-num-tcp:​ 100
 +incoming-num-tcp:​ 100
 +so-rcvbuf: 16777216
 +so-sndbuf: 16777216
 +msg-cache-size:​ 750m
 +msg-cache-slabs:​ 16
 +num-queries-per-thread:​ 16384
 +rrset-cache-size:​ 1500m
 +rrset-cache-slabs:​ 16
 +infra-cache-slabs:​ 16
 +do-ip6: no
 +access-control:​ 127.0.0.0/8 allow
 +access-control:​ 192.168.0.0/​16 allow
 +access-control:​ 0.0.0.0/0 deny
 +chroot: ""​
 +username: "​unbound"​
 +directory: "/​etc/​unbound"​
 +logfile: "/​var/​log/​unbound.log"​
 +use-syslog: no
 +log-queries:​ no
 +log-time-ascii:​ yes
 +pidfile: "/​var/​run/​unbound/​unbound.pid"​
 +root-hints: "/​etc/​unbound/​named.cache"​
 +hide-identity:​ yes
 +hide-version:​ yes
 +harden-glue:​ yes
 +harden-dnssec-stripped:​ yes
 +harden-below-nxdomain:​ yes
 +harden-referral-path:​ yes
 +use-caps-for-id:​ no
 +unwanted-reply-threshold:​ 10000000
 +prefetch: yes
 +prefetch-key:​ yes
 +rrset-roundrobin:​ yes
 +minimal-responses:​ yes
 +dlv-anchor-file:​ "/​etc/​unbound/​dlv.isc.org.key"​
 +trusted-keys-file:​ /​etc/​unbound/​root.key
 +val-clean-additional:​ yes
 +val-permissive-mode:​ yes
 +val-log-level:​ 1
 +key-cache-slabs:​ 16
 +remote-control:​
 +control-enable:​ yes
 +server-key-file:​ "/​etc/​unbound/​unbound_server.key"​
 +server-cert-file:​ "/​etc/​unbound/​unbound_server.pem"​
 +control-key-file:​ "/​etc/​unbound/​unbound_control.key"​
 +control-cert-file:​ "/​etc/​unbound/​unbound_control.pem"​
 +</​code>​
 +
 +==== DNSルートサーバのhintファイル ====
 +
 +<​code>​
 +# wget -O "/​etc/​unbound/​named.cache"​ ftp://​FTP.INTERNIC.NET/​domain/​named.cache
 +# chown unbound:​unbound /​etc/​unbound/​named.cache
 +</​code>​
 +
 +
 +==== ログファイル作成 ====
 +<​code>​
 +# touch /​var/​log/​unbound.log
 +# chown unbound:​unbound /​var/​log/​unbound.log
 +# chmod 644 /​var/​log/​unbound.log
 +</​code>​
 +
 +==== ログローテート ====
 +
 +<​code>​
 +# vi /​etc/​logrotate.d/​unbound
 +/​var/​log/​unbound.log
 +{
 +    daily
 +    rotate 30
 +    size 15M
 +    missingok
 +    compress
 +    create 644 unbound unbound
 +    sharedscripts
 +    prerotate
 +        touch /​var/​log/​unbound.log
 +        chown unbound:​unbound /​var/​log/​unbound.log
 +        chmod 644 /​var/​log/​unbound.log
 +        /​usr/​sbin/​unbound-control log_reopen
 +    endscript
 +    postrotate
 +        /​usr/​sbin/​unbound-control log_reopen
 +    endscript
 +}
 +</​code>​
 +
 +===== 3.チューニングメモ =====
 +ワーカスレッド
 +
 +CPUコア数の合計を指定するのが良い。
 +4(core) x 2(thread) x 2(CPU) = 16
 +num-thread = 16
 +
 +キャッシュを構成するハッシュデータ構造のスラブ数
 +ワーカスレッドは、このデータ構造へアクセス時にスラブ毎にロックを掛けるため
 +スラブ数とワーカスレッド数を一致させるとロック回数が減る。
 +msg-cache-slabs
 +rrset-cache-slabs:​
 +infra-cache-slabs
 +key-cache-slabs
 +
 +
 +ユーザ通信ソケットバッファ
 +
 +OS側でのソケットの最大バッファサイズ
 +so-rcvbuf: 16777216
 +so-sndbuf: 16777216
 +
 +/​etc/​sysctl.conf
 +# net.core.rmem_max
 +net.core.rmem_max = 16777216
 +# net.core.wmem_max
 +net.core.wmem_max = 16777216
 +
 +
 +リクエスト処理
 +
 +num-thread x 1024 = 16384
 +num-queries-per-thread:​16384
 +
 +下記が増えているなら、num-queries-per-threadを引き上げる
 +current.user
 +overwritten
 +exceeded
 +
 +権威サーバ通信用ソケット最大数
 +num-queries-per-threadの2倍
 +outgoing-range
 +
 +キャッシュメモリサイズ
 +rrset-cache-size:​750m
 +msg-cache-size:​1500m
 +
 +rrset-cache-sizeは、msg-cache-sizeの2倍が推奨される。
 +実メモリは、合計キャッシュサイズの2.5倍程度まで拡大することを想定
 +
 +
 +/​etc/​sysctl.conf
 +net.nf_conntrack_max = 1210856
 +net.netfilter.nf_conntrack_tcp_timeout_established = 43200
 +
 +同時リクエスト数
 +※デフォルト10
 +outgoing-num-tcp:​ 100
 +incoming-num-tcp:​ 100
 +
 +
 +DNS応答が小さくなるため、TCPフォールバックが必要となる可能性が減る
 +minimal-responses:​ yes
 +
 +
 +以前はこの機能が実装されて無くて、ラウンドロビンの順番までキャッシュしてしまい
 +結果として毎回同じサーバへアクセスしてしまってた。
 +デフォルトではnoになっているので、yesへ変更
 +rrset-roundrobin:​ yes
 +
 +{{tag>​unbound bind}}
01_linux/01_net/16_unbound.txt · 最終更新: 2016/03/22 11:21 by matsui

Yesterday:403 Today:272 Total:05300