(→dataのサンプル) |
|||
(同じ利用者による、間の9版が非表示) | |||
行7: | 行7: | ||
EPELを追加します。 | EPELを追加します。 | ||
− | + | <pre>yum install epel-release | |
+ | yum update</pre> | ||
== パッケージを追加 == | == パッケージを追加 == | ||
行32: | 行33: | ||
ソースを拾ってきて、展開します。 | ソースを拾ってきて、展開します。 | ||
− | <pre>wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz | + | <pre>wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz |
+ | tar xvzf djbdns-1.05.tar.gz</pre> | ||
djbdns-1.05というディレクトリが出来るので、その中へ移動して、弄ります。djb系ツールではお約束ですが。 | djbdns-1.05というディレクトリが出来るので、その中へ移動して、弄ります。djb系ツールではお約束ですが。 | ||
行39: | 行41: | ||
<pre>extern int errno;</pre> | <pre>extern int errno;</pre> | ||
これを | これを | ||
− | <pre>#include & | + | <pre>#include <errno.h></pre> |
と書き換えます。 | と書き換えます。 | ||
行69: | 行71: | ||
=== 使用するユーザーの作成 === | === 使用するユーザーの作成 === | ||
− | <pre>adduser tinydns | + | <pre>adduser tinydns |
+ | adduser axfrdns</pre> | ||
=== tinydnsのディレクトリ・ファイル群設定 === | === tinydnsのディレクトリ・ファイル群設定 === | ||
行107: | 行110: | ||
次に、systemctl start tinydnsとして、デーモンを起動します。 | 次に、systemctl start tinydnsとして、デーモンを起動します。 | ||
− | お約束で、systemctl status tinydnsでエラーが出ていないのを確認したら、systemctl enable | + | お約束で、systemctl status tinydnsでエラーが出ていないのを確認したら、systemctl enable tinydnsとして、再起動時に起動するようにしておきましょう。 |
これで、tinydnsの設定は終わりです。 | これで、tinydnsの設定は終わりです。 | ||
行116: | 行119: | ||
tcp/53を使うために、axfrdnsも設定します。 | tcp/53を使うために、axfrdnsも設定します。 | ||
− | mkdir /var/service/ | + | mkdir /var/service/axfrdns; cd /var/service/axfrdnsとして、その中で作業します。 |
必要なディレクトリを作ります。 | 必要なディレクトリを作ります。 | ||
行157: | 行160: | ||
[Service] | [Service] | ||
− | ExecStart=/usr/bin/envdir /var/service/axfrdns/env /usr/bin/envuidgid axfrdns / | + | ExecStart=/usr/bin/envdir /var/service/axfrdns/env /usr/bin/envuidgid axfrdns /usr/bin/softlimit -d300000 /usr/bin/tcpserver -vDRHl0 -x /var/service/axfrdns/tcp.cdb -- サービスを起動するIP 53 /usr/local/bin/axfrdns |
− | + | ||
ExecReload=/bin/kill -HUP $MAINPID | ExecReload=/bin/kill -HUP $MAINPID | ||
KillMode=process | KillMode=process | ||
行172: | 行174: | ||
次に、systemctl start axfrdnsとして、デーモンを起動します。 | 次に、systemctl start axfrdnsとして、デーモンを起動します。 | ||
− | お約束で、systemctl status axfrdnsでエラーが出ていないのを確認したら、systemctl enable | + | お約束で、systemctl status axfrdnsでエラーが出ていないのを確認したら、systemctl enable axfrdnsとして、再起動時に起動するようにしておきましょう。 |
− | + | これで、axfrdnsの設定は終わりです。 | |
+ | |||
+ | == tinydns/axfrdns用のデータ == | ||
+ | /var/service/tinydns/rootに移動して、次のファイルを作ります。 | ||
+ | |||
+ | Makefile | ||
+ | |||
+ | ここで、/usr/local/bin/tinydns-dataの前は「タブ文字」です。スペースにしないように気をつけて下さい。 | ||
+ | <pre>data.cdb: data | ||
+ | /usr/local/bin/tinydns-data</pre> | ||
+ | ※上の内容は都合上スペースで区切られていますので、コピペする場合注意して下さい。 | ||
+ | |||
+ | data | ||
+ | <pre>DNSの内容を書きます</pre> | ||
+ | |||
+ | dataを更新したら、makeをしておきましょう。勝手にdata.cdbが作られるはずです。 | ||
+ | |||
+ | === data(tinydns-data)のフォーマット === | ||
+ | 1行1指示で書きます。 | ||
+ | |||
+ | 1文字目がドメインレコードタイプになります。 | ||
+ | |||
+ | 詳細はググって貰うとして(笑) | ||
+ | |||
+ | よく使うパターンだけを書いておきます。 | ||
+ | |||
+ | * #で開始 | ||
+ | コメントです | ||
+ | |||
+ | * .で開始 | ||
+ | いわゆるNSレコードです。 | ||
+ | |||
+ | .<i>委任されたドメイン名</i>:<i>ホスト名のIPアドレス</i>:<i>ホスト名</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | ホストのIPアドレスはここで省略して、+で指定する事も出来ます。 | ||
+ | |||
+ | * @で開始 | ||
+ | いわゆるMXレコードです。 | ||
+ | |||
+ | @<i>ドメイン名</i>:<i>MX先のIPアドレス</i>:<i>MX先のアドレス</i>:<i>優先度</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | MX先のIPアドレスはここで省略して、+で指定する事も出来ます。 | ||
+ | |||
+ | * +で開始 | ||
+ | いわゆるAレコードです。 | ||
+ | |||
+ | @<i>ドメイン名</i>:<i>ドメイン名のIPアドレス</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | * 'で開始 | ||
+ | いわゆるTXTレコードです。 | ||
+ | |||
+ | '<i>ドメイン名</i>:<i>ドメイン名のTXT内容</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | * Cで開始 | ||
+ | いわゆるCNAMEレコードです。 | ||
+ | |||
+ | C<i>ドメイン名</i>:<i>CNAME先</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | * &で開始 | ||
+ | いわゆるNS+Aレコードで、権限委任するものとなります。 | ||
+ | |||
+ | &<i>ドメイン名</i>:<i>ホスト名のIPアドレス</i>:<i>ホスト名</i> | ||
+ | |||
+ | というフォーマットになります。 | ||
+ | |||
+ | === dataのサンプル === | ||
+ | <pre># example.comドメインを、192.168.10.1のns1.example.comと、 | ||
+ | # IPは分からないけど、ns20.example.netで管理する | ||
+ | .example.com:192.160.10.1:ns1.example.com | ||
+ | .example.com::ns20.example.net | ||
+ | |||
+ | # www.example.comのIPアドレスを192.168.22.1にする | ||
+ | +www.example.com:192.168.22.1 | ||
+ | |||
+ | # ~@example.comのメールアドレスを、mail1.example.com、優先順位30で受ける | ||
+ | @example.com::mail1.example.com:30 | ||
+ | |||
+ | # mail1.example.comのIPアドレスを192.168.33.1にして、 | ||
+ | # 有効期限を600秒に設定する | ||
+ | +mail1.example.com:192.168.33.1:600 | ||
+ | |||
+ | # www2.example.comを引くと、www44.example.netを参照するようにする | ||
+ | Cwww2.example.com:www44.example.net | ||
+ | |||
+ | # www.example.comのTXTレコードに、google-site-verification=XYZを設定する | ||
+ | 'www.example.com:google-site-verification=XYZ | ||
+ | |||
+ | # sub.example.comを、IPアドレス192.168.55.1のns5.example.comと、 | ||
+ | # IPは分からないけど、ns60.example.netで管理する | ||
+ | &sub.example.com:192.168.55.1:ns5.example.com | ||
+ | &sub.example.com::ns60.example.net</pre> |
2018年9月19日 (水) 22:32時点における最新版
目次
tinydnsを使う
何故未だにtinydnsか?
管理しやすいからだよ!(笑)
リポジトリからインストール?
EPELを追加します。
yum install epel-release yum update
パッケージを追加
djbdnsなのですが、どうもndjbdnsって名前になってるっぽい?
ndjbdns.x86_64 : New djbdns: usable djbdns
と言う訳で、この子を使うことにする。
インストール
yum install ndjbdns
何と、ucspi-tcpとバッティングします(笑)
ucspi-tcpを使ってなければコレで良いのですが……使っているので、別の方法を取ります(苦笑
ソースからインストール!
色々調べていたのですが、諦めました。
どうせ今回使うのは、tinydnsとaxfrdnsだけですので、ソースから入れちゃいます。
適当な場所(~/srcにします)で作業します。
ソースを拾ってきて、展開します。
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz tar xvzf djbdns-1.05.tar.gz
djbdns-1.05というディレクトリが出来るので、その中へ移動して、弄ります。djb系ツールではお約束ですが。
error.h
extern int errno;
これを
#include <errno.h>
と書き換えます。
で、makeと入力します。
エラーが出ます。
./compile: line 3: exec: gcc: not found
gcc入れるのを忘れてました。
yum install gcc
色々入りますが、まぁ良いでしょう。
気を取り直してmakeします。
今回は標準のインストーラーは使わずに、必要なモノだけを、/usr/local/binに直接コピーします。
cp axfr-get axfrdns dnsip dnsipq dnsmx dnsname dnsq dnsqr dnstrace dnstracesort dnstxt tinydns tinydns-data /usr/local/bin
手動でインストールやっほい。
手動で設定
今回は自動設定ユーティリティを使わないので、自力で環境を作ります。
色々とディレクトリを作る必要がありますが、今回は/var/service以下に作りたいと思います。 daemontoolsを併用する場合はこのディレクトリは避けて下さい。/serviceと被ってヤバいです。
まず、mkdir /var/serviceします。
使用するユーザーの作成
adduser tinydns adduser axfrdns
tinydnsのディレクトリ・ファイル群設定
mkdir /var/service/tinydns; cd /var/service/tinydnsとして、その中で作業します。
必要なディレクトリを作ります。
mkdir env root
envは環境変数、rootはデータが入ります。
env/IPというファイルに、tinydnsがBINDしたいIPを書きます。
要するに、DNSサーバーのIPアドレスを書きます。
env/ROOTというファイルに、先ほど作ったrootのパスを書きます(/var/service/tinydns/rootとだけ書く)
tinydnsの起動ファイルを作成
/etc/systemd/systemで、次のファイルを作ります。
tinydns.service
[Unit] Description=tinydns server daemon After=syslog.target network.target auditd.service [Service] ExecStart=/usr/bin/envuidgid tinydns /usr/bin/envdir /var/service/tinydns/env /usr/bin/softlimit -d300000 /usr/local/bin/tinydns ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s SyslogIdentifier=tinydns SyslogFacility=daemon SyslogLevel=info [Install] WantedBy=multi-user.target
次に、systemctl start tinydnsとして、デーモンを起動します。
お約束で、systemctl status tinydnsでエラーが出ていないのを確認したら、systemctl enable tinydnsとして、再起動時に起動するようにしておきましょう。
これで、tinydnsの設定は終わりです。
axfrdnsのディレクトリ・ファイル群設定
tinydnsだけだと、udp/53でしか起動しません。
tcp/53を使うために、axfrdnsも設定します。
mkdir /var/service/axfrdns; cd /var/service/axfrdnsとして、その中で作業します。
必要なディレクトリを作ります。
mkdir env
envは環境変数を格納します。
env/IPというファイルに、axfrdnsがBINDしたいIPを書きます。tinydnsのものと同じヤツです。
要するに、DNSサーバーのIPアドレスを書きます。
env/ROOTというファイルに、tinydns/rootのパスを書きます(今回は/var/service/tinydns/rootとだけ書く)
めんどくさいなら、/var/service/tinydns/envをコピーすると良いでしょう。
次に、/var/service/axfrdns/tcpに、次のように書きます。
:allow,AXFR="" :deny
これは、tcpアクセスを許可するけど、ゾーン転送は許可しない設定になります。
次に、tcp.cdbを作るルールを作ります。
こういうMakefileを作ります。
ここで、tcprulesの前は「タブ文字」です。スペースにしないように気をつけて下さい。
tcp.cdb: tcp tcprules tcp.cdb tcp.tmp < tcp
※上の内容は都合上スペースで区切られていますので、コピペする場合注意して下さい。
この状態で、makeと入力すると、tcp.cdbが作られているはずです。
axfrdnsの起動ファイルを作成
/etc/systemd/systemで、次のファイルを作ります。
axfrdns.service
[Unit] Description=axfrdns server daemon After=syslog.target network.target auditd.service [Service] ExecStart=/usr/bin/envdir /var/service/axfrdns/env /usr/bin/envuidgid axfrdns /usr/bin/softlimit -d300000 /usr/bin/tcpserver -vDRHl0 -x /var/service/axfrdns/tcp.cdb -- サービスを起動するIP 53 /usr/local/bin/axfrdns ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartSec=42s SyslogIdentifier=axfrdns SyslogFacility=daemon SyslogLevel=info [Install] WantedBy=multi-user.target
次に、systemctl start axfrdnsとして、デーモンを起動します。
お約束で、systemctl status axfrdnsでエラーが出ていないのを確認したら、systemctl enable axfrdnsとして、再起動時に起動するようにしておきましょう。
これで、axfrdnsの設定は終わりです。
tinydns/axfrdns用のデータ
/var/service/tinydns/rootに移動して、次のファイルを作ります。
Makefile
ここで、/usr/local/bin/tinydns-dataの前は「タブ文字」です。スペースにしないように気をつけて下さい。
data.cdb: data /usr/local/bin/tinydns-data
※上の内容は都合上スペースで区切られていますので、コピペする場合注意して下さい。
data
DNSの内容を書きます
dataを更新したら、makeをしておきましょう。勝手にdata.cdbが作られるはずです。
data(tinydns-data)のフォーマット
1行1指示で書きます。
1文字目がドメインレコードタイプになります。
詳細はググって貰うとして(笑)
よく使うパターンだけを書いておきます。
- #で開始
コメントです
- .で開始
いわゆるNSレコードです。
.委任されたドメイン名:ホスト名のIPアドレス:ホスト名
というフォーマットになります。
ホストのIPアドレスはここで省略して、+で指定する事も出来ます。
- @で開始
いわゆるMXレコードです。
@ドメイン名:MX先のIPアドレス:MX先のアドレス:優先度
というフォーマットになります。
MX先のIPアドレスはここで省略して、+で指定する事も出来ます。
- +で開始
いわゆるAレコードです。
@ドメイン名:ドメイン名のIPアドレス
というフォーマットになります。
- 'で開始
いわゆるTXTレコードです。
'ドメイン名:ドメイン名のTXT内容
というフォーマットになります。
- Cで開始
いわゆるCNAMEレコードです。
Cドメイン名:CNAME先
というフォーマットになります。
- &で開始
いわゆるNS+Aレコードで、権限委任するものとなります。
&ドメイン名:ホスト名のIPアドレス:ホスト名
というフォーマットになります。
dataのサンプル
# example.comドメインを、192.168.10.1のns1.example.comと、 # IPは分からないけど、ns20.example.netで管理する .example.com:192.160.10.1:ns1.example.com .example.com::ns20.example.net # www.example.comのIPアドレスを192.168.22.1にする +www.example.com:192.168.22.1 # ~@example.comのメールアドレスを、mail1.example.com、優先順位30で受ける @example.com::mail1.example.com:30 # mail1.example.comのIPアドレスを192.168.33.1にして、 # 有効期限を600秒に設定する +mail1.example.com:192.168.33.1:600 # www2.example.comを引くと、www44.example.netを参照するようにする Cwww2.example.com:www44.example.net # www.example.comのTXTレコードに、google-site-verification=XYZを設定する 'www.example.com:google-site-verification=XYZ # sub.example.comを、IPアドレス192.168.55.1のns5.example.comと、 # IPは分からないけど、ns60.example.netで管理する &sub.example.com:192.168.55.1:ns5.example.com &sub.example.com::ns60.example.net