提供: いつきメモ
移動: 案内検索
(ページの作成:「== tinydnsを使う == 何故未だにtinydnsか? 管理しやすいからだよ!(笑)」)
 
行3: 行3:
  
 
管理しやすいからだよ!(笑)
 
管理しやすいからだよ!(笑)
 +
 +
== リポジトリからインストール? ==
 +
EPELを追加します。
 +
 +
<pre>yum install epel-release<br>yum update</pre>
 +
 +
== パッケージを追加 ==
 +
djbdnsなのですが、どうもndjbdnsって名前になってるっぽい?
 +
 +
<pre>ndjbdns.x86_64 : New djbdns: usable djbdns</pre>
 +
 +
と言う訳で、この子を使うことにする。
 +
 +
インストール
 +
<pre>yum install ndjbdns</pre>
 +
 +
何と、ucspi-tcpとバッティングします(笑)
 +
 +
ucspi-tcpを使ってなければコレで良いのですが……使っているので、別の方法を取ります(苦笑
 +
 +
 +
== ソースからインストール! ==
 +
色々調べていたのですが、諦めました。
 +
 +
どうせ今回使うのは、tinydnsとaxfrdnsだけですので、ソースから入れちゃいます。
 +
 +
適当な場所(~/srcにします)で作業します。
 +
 +
ソースを拾ってきて、展開します。
 +
<pre>wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz<br>tar xvzf djbdns-1.05.tar.gz</pre>
 +
 +
djbdns-1.05というディレクトリが出来るので、その中へ移動して、弄ります。djb系ツールではお約束ですが。
 +
 +
error.h
 +
<pre>extern int errno;</pre>
 +
これを
 +
<pre>#include &gt;errno.h&lt;</pre>
 +
と書き換えます。
 +
 +
で、makeと入力します。
 +
 +
エラーが出ます。
 +
<pre>./compile: line 3: exec: gcc: not found</pre>
 +
gcc入れるのを忘れてました。
 +
 +
<pre>yum install gcc</pre>
 +
 +
色々入りますが、まぁ良いでしょう。
 +
 +
気を取り直してmakeします。
 +
 +
今回は標準のインストーラーは使わずに、必要なモノだけを、/usr/local/binに直接コピーします。
 +
 +
<pre>cp axfr-get axfrdns dnsip dnsipq dnsmx dnsname dnsq dnsqr dnstrace dnstracesort dnstxt tinydns tinydns-data /usr/local/bin</pre>
 +
 +
手動でインストールやっほい。
 +
 +
== 手動で設定 ==
 +
今回は自動設定ユーティリティを使わないので、自力で環境を作ります。
 +
 +
色々とディレクトリを作る必要がありますが、今回は/var/service以下に作りたいと思います。
 +
<b>daemontoolsを併用する場合はこのディレクトリは避けて下さい</b>。/serviceと被ってヤバいです。
 +
 +
まず、mkdir /var/serviceします。
 +
 +
=== 使用するユーザーの作成 ===
 +
<pre>adduser tinydns<br>adduser axfrdns</pre>
 +
 +
=== tinydnsのディレクトリ・ファイル群設定 ===
 +
mkdir /var/service/tinydns; cd /var/service/tinydnsとして、その中で作業します。
 +
 +
必要なディレクトリを作ります。
 +
<pre>mkdir env root</pre>
 +
envは環境変数、rootはデータが入ります。
 +
 +
env/IPというファイルに、tinydnsがBINDしたいIPを書きます。
 +
 +
要するに、DNSサーバーのIPアドレスを書きます。
 +
 +
env/ROOTというファイルに、先ほど作ったrootのパスを書きます(/var/service/tinydns/rootとだけ書く)
 +
 +
=== tinydnsの起動ファイルを作成 ===
 +
/etc/systemd/systemで、次のファイルを作ります。
 +
 +
tinydns.service
 +
<pre>[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</pre>
 +
 +
次に、systemctl start tinydnsとして、デーモンを起動します。
 +
 +
お約束で、systemctl status tinydnsでエラーが出ていないのを確認したら、systemctl enable tinydnsとして、再起動時に起動する陽にしておきましょう。
 +
 +
これで、tinydnsの設定は終わりです。
 +
 +
=== axfrdnsのディレクトリ・ファイル群設定 ===
 +
tinydnsだけだと、udp/53でしか起動しません。
 +
 +
tcp/53を使うために、axfrdnsも設定します。
 +
 +
mkdir /var/service/tinydns; cd /var/service/tinydnsとして、その中で作業します。
 +
 +
必要なディレクトリを作ります。
 +
<pre>mkdir env</pre>
 +
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に、次のように書きます。
 +
 +
<pre>:allow,AXFR=""
 +
:deny</pre>
 +
 +
これは、tcpアクセスを許可するけど、ゾーン転送は許可しない設定になります。
 +
 +
次に、tcp.cdbを作るルールを作ります。
 +
 +
こういうMakefileを作ります。
 +
 +
ここで、tcprulesの前は「タブ文字」です。スペースにしないように気をつけて下さい。
 +
<pre>tcp.cdb: tcp
 +
        tcprules tcp.cdb tcp.tmp < tcp</pre>
 +
※上の内容は都合上スペースで区切られていますので、コピペする場合注意して下さい。
 +
 +
この状態で、makeと入力すると、tcp.cdbが作られているはずです。
 +
 +
=== axfrdnsの起動ファイルを作成 ===
 +
/etc/systemd/systemで、次のファイルを作ります。
 +
 +
axfrdns.service
 +
<pre>[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 /u
 +
sr/bin/softlimit -d300000 /usr/bin/tcpserver -vDRHl0 -x /var/service/axfrdns/tcp.cdb -- <i>サービスを起動するIP</i> 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</pre>
 +
 +
次に、systemctl start axfrdnsとして、デーモンを起動します。
 +
 +
お約束で、systemctl status axfrdnsでエラーが出ていないのを確認したら、systemctl enable axfrdnsとして、再起動時に起動する陽にしておきましょう。
 +
 +
これで、tinydnsの設定は終わりです。

2016年10月16日 (日) 14:15時点における版

tinydnsを使う

何故未だにtinydnsか?

管理しやすいからだよ!(笑)

リポジトリからインストール?

EPELを追加します。

yum install epel-release<br>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<br>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<br>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/tinydns; cd /var/service/tinydnsとして、その中で作業します。

必要なディレクトリを作ります。

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 /u
sr/bin/softlimit -d300000 /usr/bin/tcpserver -vDRHl0 -x /var/service/axfrdns/tcp.cdb -- <i>サービスを起動するIP</i> 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として、再起動時に起動する陽にしておきましょう。

これで、tinydnsの設定は終わりです。