Linux/Source/dnsdist
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*dnsdist [#n2d45d2d]
DNSに特化したリバース・フォワード兼用ロードバランサー。
バックエンド死活監視、ポリシールーティング、QoS制御などの...
設定ファイルはLua言語で記述するので、環境に合わせてスクリ...
DNSクエリ処理に限定すると、dnsdistはクエリ・フォワード動...
バックエンドに権威DNS・キャッシュDNSなどを構築する必要が...
アプリケーションは単一バイナリ動作なので、機能を盛り過ぎ...
必要な機能を抜粋して自前でソースビルドを行うと、バイナリ...
~
*参考サイト [#ma8ed405]
-[[powerdns+dnsdistの構築:+http://kyudy.hatenablog.com/en...
-[[自宅環境にdnsdist 1.1.0を導入してみた。:+https://komet...
~
*インストール [#x03f304c]
-&size(16){&font(b){1. ソースビルド};};
ソースビルドだと様々なディストリビューションで動作して汎...
今回はopenSUSEでビルドを行っているが、CentOS/Debianでも同...
下記のビルドオプションはフル機能を有効化している為、不必...
# zypper install libedit-devel libsodium-devel systemd-d...
# wget "https://downloads.powerdns.com/releases/dnsdist-...
# tar jxvf dnsdist-1.3.3.tar.bz2
# cd dnsdist-1.3.3
# ./configure --prefix=/usr/local/dnsdist-1.3.3 \
--enable-dns-over-tls \
--enable-dnscrypt \
--enable-fstrm \
--enable-re2 \
--enable-systemd \
--with-ebpf \
--with-lua \
--with-net-snmp \
--with-protobuf \
--with-systemd \
--with-systemd-modules-load
# make
# make install
# ln -s /usr/local/dnsdist-1.3.3 /usr/local/dnsdist
-&size(16){&font(b){2. 起動準備};};
dnsdist専用ユーザで動作させる為、実行ユーザの作成とサービ...
さらに、今回はDNSクエリログのローカル出力を有効化する為、...
バージョン1.5以上の環境でsystemd-notifyを使う環境では、ユ...
この制御は、systemdでchroot同等の制御をしている事からエラ...
エラーを回避するにはユーザ・グループ指定を止めるか、syste...
--[[dnsdist: don't start as root within a systemd environ...
:|
#region(&color(#ff0000){ディレクトリ作成};)
# mkdir /var/log/dnsdist
# mkdir /usr/local/dnsdist/etc
# ln -s /usr/local/dnsdist/etc /etc/dnsdist
# groupadd dnsdist
# useradd -d /var/log/dnsdist -s /sbin/nologin dnsdist
# chown dnsdist.dnsdist /var/log/dnsdist
# cp ${SOURCE}/dnsdistconf.lua /etc/dnsdist/dnsdist.conf...
#endregion
#region(&color(#ff0000){サービスファイル};)
- systemd-notify
# vi /usr/lib/systemd/system/dnsdist.service
---
[Unit]
Description=dnsdist DNS loadbalancer
Documentation=https://dnsdist.org/
After=local-fs.target remote-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=notify
Restart=on-failure
EnvironmentFile=/etc/sysconfig/dnsdist
ExecStartPre=/usr/local/dnsdist/bin/dnsdist --disable-sy...
ExecStart=/usr/local/dnsdist/bin/dnsdist --disable-syslo...
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
## TUNING
TasksMax=8192
LimitNOFILE=65536
- systemd-simple
# vi /usr/lib/systemd/system/dnsdist.service
---
[Unit]
Description=dnsdist DNS loadbalancer
Documentation=https://dnsdist.org/
After=local-fs.target remote-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/etc/sysconfig/dnsdist
ExecStartPre=/usr/local/dnsdist/bin/dnsdist --disable-sy...
ExecStart=/usr/local/dnsdist/bin/dnsdist --disable-syslo...
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
## TUNING
TasksMax=8192
LimitNOFILE=65536
#endregion
#region(&color(#ff0000){起動オプション};)
# vi /etc/sysconfig/dnsdist
---
USER="dnsdist"
GROUP="dnsdist"
OPTIONS="-C /etc/dnsdist/dnsdist.conf"
#endregion
#region(&color(#ff0000){ログローテート};)
# vi /etc/logrotate.d/dnsdist
---
/var/log/dnsdist/dnsdist.log {
weekly
compress
rotate 4
missingok
ifempty
postrotate
systemctl reload dnsdist > /dev/null
endscript
}
#endregion
~
*コンフィグ [#he433c1c]
構築例ではdnsdistのコンフィグを &color(#ff0000){"/etc/dns...
下記コンフィグ例も同じファイルに設定を行う。
dnsdistの設定は単純な為、単にDNSロードバランサーとして稼...
「DNSクエリ・クエリタイプ・接続元IPアドレス・パケット制御...
複数のポリシーを組み合わせる時は、MatchingPackets(Selecto...
バックエンドのサーバ設定は、Servers/Poolsの &color(#ff000...
その他、細かい設定内容は公式ドキュメントの下記3項目を読め...
-[[Configuration Reference:+https://dnsdist.org/reference...
-[[Loadbalancing and Server Policies:+https://dnsdist.org...
-[[Packet Policies:+https://dnsdist.org/rules-actions.htm...
#region(&color(#ff0000){単純ロードバランサー};)
※ 実際の設定では頭の行番号("01: "など)を消す
========================================================...
01: -- BACKEND
02: check01 = "ns1.example.com."
03: check02 = "ns2.example.com."
04: newServer({address="10.0.10.1:53", pool="example", c...
05: newServer({address="10.0.10.2:53", pool="example", c...
06:
07: -- LISTEN
08: addLocal("10.0.0.1:53", {doTCP=true})
09:
10: -- ACL
11: setACL("0.0.0.0/0")
12:
13: -- RULE
14: internet = newSuffixMatchNode()
15: internet:add(newDNSName("example.com."))
16:
17: -- LOG
18: addAction(AllRule(), LogAction("/var/log/dnsdist/dns...
19:
20: -- POLICY
21: addAction(SuffixMatchNodeRule(internet), PoolAction(...
22: addAction(QTypeRule(dnsdist.TXT), PoolAction(...
23: addAction(AllRule(), RCodeAction...
|LEFT:50|LEFT:250|LEFT:600|c
|CENTER:~LINE|CENTER:~PARAMETER|CENTER:~DESCRIPTION|h
|&color(#2020ff){02行目};|&color(#2020ff){check01};|newSe...
|&color(#2020ff){03行目};|&color(#2020ff){check02};|newSe...
|&color(#2020ff){04行目};|&color(#2020ff){newServer};|プ...
|&color(#2020ff){05行目};|&color(#2020ff){newServer};|プ...
|&color(#2020ff){08行目};|&color(#2020ff){addLocal};|dnsd...
|&color(#2020ff){11行目};|&color(#2020ff){setACL};|接続を...
|&color(#2020ff){14行目};|&color(#2020ff){newSuffixMatchN...
|&color(#2020ff){15行目};|&color(#2020ff){newDNSName};|サ...
|&color(#2020ff){18行目};|&color(#2020ff){addAction/LogAc...
|&color(#2020ff){21行目};|&color(#2020ff){addAction/Suffi...
|&color(#2020ff){22行目};|&color(#2020ff){addAction/QType...
|&color(#2020ff){23行目};|&color(#2020ff){addAction/AllRu...
#endregion
終了行:
*dnsdist [#n2d45d2d]
DNSに特化したリバース・フォワード兼用ロードバランサー。
バックエンド死活監視、ポリシールーティング、QoS制御などの...
設定ファイルはLua言語で記述するので、環境に合わせてスクリ...
DNSクエリ処理に限定すると、dnsdistはクエリ・フォワード動...
バックエンドに権威DNS・キャッシュDNSなどを構築する必要が...
アプリケーションは単一バイナリ動作なので、機能を盛り過ぎ...
必要な機能を抜粋して自前でソースビルドを行うと、バイナリ...
~
*参考サイト [#ma8ed405]
-[[powerdns+dnsdistの構築:+http://kyudy.hatenablog.com/en...
-[[自宅環境にdnsdist 1.1.0を導入してみた。:+https://komet...
~
*インストール [#x03f304c]
-&size(16){&font(b){1. ソースビルド};};
ソースビルドだと様々なディストリビューションで動作して汎...
今回はopenSUSEでビルドを行っているが、CentOS/Debianでも同...
下記のビルドオプションはフル機能を有効化している為、不必...
# zypper install libedit-devel libsodium-devel systemd-d...
# wget "https://downloads.powerdns.com/releases/dnsdist-...
# tar jxvf dnsdist-1.3.3.tar.bz2
# cd dnsdist-1.3.3
# ./configure --prefix=/usr/local/dnsdist-1.3.3 \
--enable-dns-over-tls \
--enable-dnscrypt \
--enable-fstrm \
--enable-re2 \
--enable-systemd \
--with-ebpf \
--with-lua \
--with-net-snmp \
--with-protobuf \
--with-systemd \
--with-systemd-modules-load
# make
# make install
# ln -s /usr/local/dnsdist-1.3.3 /usr/local/dnsdist
-&size(16){&font(b){2. 起動準備};};
dnsdist専用ユーザで動作させる為、実行ユーザの作成とサービ...
さらに、今回はDNSクエリログのローカル出力を有効化する為、...
バージョン1.5以上の環境でsystemd-notifyを使う環境では、ユ...
この制御は、systemdでchroot同等の制御をしている事からエラ...
エラーを回避するにはユーザ・グループ指定を止めるか、syste...
--[[dnsdist: don't start as root within a systemd environ...
:|
#region(&color(#ff0000){ディレクトリ作成};)
# mkdir /var/log/dnsdist
# mkdir /usr/local/dnsdist/etc
# ln -s /usr/local/dnsdist/etc /etc/dnsdist
# groupadd dnsdist
# useradd -d /var/log/dnsdist -s /sbin/nologin dnsdist
# chown dnsdist.dnsdist /var/log/dnsdist
# cp ${SOURCE}/dnsdistconf.lua /etc/dnsdist/dnsdist.conf...
#endregion
#region(&color(#ff0000){サービスファイル};)
- systemd-notify
# vi /usr/lib/systemd/system/dnsdist.service
---
[Unit]
Description=dnsdist DNS loadbalancer
Documentation=https://dnsdist.org/
After=local-fs.target remote-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=notify
Restart=on-failure
EnvironmentFile=/etc/sysconfig/dnsdist
ExecStartPre=/usr/local/dnsdist/bin/dnsdist --disable-sy...
ExecStart=/usr/local/dnsdist/bin/dnsdist --disable-syslo...
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
## TUNING
TasksMax=8192
LimitNOFILE=65536
- systemd-simple
# vi /usr/lib/systemd/system/dnsdist.service
---
[Unit]
Description=dnsdist DNS loadbalancer
Documentation=https://dnsdist.org/
After=local-fs.target remote-fs.target network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
Restart=on-failure
EnvironmentFile=/etc/sysconfig/dnsdist
ExecStartPre=/usr/local/dnsdist/bin/dnsdist --disable-sy...
ExecStart=/usr/local/dnsdist/bin/dnsdist --disable-syslo...
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -s HUP $MAINPID
## TUNING
TasksMax=8192
LimitNOFILE=65536
#endregion
#region(&color(#ff0000){起動オプション};)
# vi /etc/sysconfig/dnsdist
---
USER="dnsdist"
GROUP="dnsdist"
OPTIONS="-C /etc/dnsdist/dnsdist.conf"
#endregion
#region(&color(#ff0000){ログローテート};)
# vi /etc/logrotate.d/dnsdist
---
/var/log/dnsdist/dnsdist.log {
weekly
compress
rotate 4
missingok
ifempty
postrotate
systemctl reload dnsdist > /dev/null
endscript
}
#endregion
~
*コンフィグ [#he433c1c]
構築例ではdnsdistのコンフィグを &color(#ff0000){"/etc/dns...
下記コンフィグ例も同じファイルに設定を行う。
dnsdistの設定は単純な為、単にDNSロードバランサーとして稼...
「DNSクエリ・クエリタイプ・接続元IPアドレス・パケット制御...
複数のポリシーを組み合わせる時は、MatchingPackets(Selecto...
バックエンドのサーバ設定は、Servers/Poolsの &color(#ff000...
その他、細かい設定内容は公式ドキュメントの下記3項目を読め...
-[[Configuration Reference:+https://dnsdist.org/reference...
-[[Loadbalancing and Server Policies:+https://dnsdist.org...
-[[Packet Policies:+https://dnsdist.org/rules-actions.htm...
#region(&color(#ff0000){単純ロードバランサー};)
※ 実際の設定では頭の行番号("01: "など)を消す
========================================================...
01: -- BACKEND
02: check01 = "ns1.example.com."
03: check02 = "ns2.example.com."
04: newServer({address="10.0.10.1:53", pool="example", c...
05: newServer({address="10.0.10.2:53", pool="example", c...
06:
07: -- LISTEN
08: addLocal("10.0.0.1:53", {doTCP=true})
09:
10: -- ACL
11: setACL("0.0.0.0/0")
12:
13: -- RULE
14: internet = newSuffixMatchNode()
15: internet:add(newDNSName("example.com."))
16:
17: -- LOG
18: addAction(AllRule(), LogAction("/var/log/dnsdist/dns...
19:
20: -- POLICY
21: addAction(SuffixMatchNodeRule(internet), PoolAction(...
22: addAction(QTypeRule(dnsdist.TXT), PoolAction(...
23: addAction(AllRule(), RCodeAction...
|LEFT:50|LEFT:250|LEFT:600|c
|CENTER:~LINE|CENTER:~PARAMETER|CENTER:~DESCRIPTION|h
|&color(#2020ff){02行目};|&color(#2020ff){check01};|newSe...
|&color(#2020ff){03行目};|&color(#2020ff){check02};|newSe...
|&color(#2020ff){04行目};|&color(#2020ff){newServer};|プ...
|&color(#2020ff){05行目};|&color(#2020ff){newServer};|プ...
|&color(#2020ff){08行目};|&color(#2020ff){addLocal};|dnsd...
|&color(#2020ff){11行目};|&color(#2020ff){setACL};|接続を...
|&color(#2020ff){14行目};|&color(#2020ff){newSuffixMatchN...
|&color(#2020ff){15行目};|&color(#2020ff){newDNSName};|サ...
|&color(#2020ff){18行目};|&color(#2020ff){addAction/LogAc...
|&color(#2020ff){21行目};|&color(#2020ff){addAction/Suffi...
|&color(#2020ff){22行目};|&color(#2020ff){addAction/QType...
|&color(#2020ff){23行目};|&color(#2020ff){addAction/AllRu...
#endregion
ページ名: