Ubuntu Serverで内向きDNSをUnboundを使ってやってみたのでメモ


ubuntuサーバーで内向きDNSを作成します。
内向きDNSをすると何が便利なのかといいますと、例えばnas.natというドメインを自分のサーバー宛てにすることができるのです。
あまりよくない例ですが、google.comというドメインも自分のサーバーに設定することができます。(偽装もできるので注意)

実装

まずはunboundをインストールします。

$ sudo apt -y install unbound

次にunbound.confを設定します。ここでは、サンプルのディレクトリをコピーします。

$ sudo cp /usr/share/doc/unbound/examples/unbound.conf /etc/unbound/unbound.conf.d/

そして、コピーしたファイルを編集します。

$ sudo nano /etc/unbound/unbound.conf.d/unbound.conf

こんな感じに編集します。下記サンプルです。
ここでは、3つのドメインを同一サーバー向けに設定します。

nas.uma.gov
media.uma.gov
office.uma.gov
これらすべてが、192.168.31.150(私のサーバーIP)に設定されます。必要に応じて変更してください。

/etc/unbound/unbound.conf.d/unbound.conf
server:
    verbosity: 1

    interface: 0.0.0.0
   #アクセス許可設定 ※ここでは、ローカルネットワークと31のネットワークを許可していますので、環境に合わせて変更
    access-control: 127.0.0.0/23 allow
    access-control: 192.168.31.0/23 allow

  #逆引き設定
  local-data: "nas.uma.gov. IN A 192.168.31.150"
  local-data: "media.uma.gov. IN A 192.168.31.150"
  local-data: "office.uma.gov. IN A 192.168.31.150"

python:
remote-control:
#Cloudflare Public DNS
 forward-zone:
    name: "."
    forward-addr: 1.1.1.1
    forward-addr: 1.0.0.1

最後に、設定ファイルが間違っていないか確認する

$ unbound-checkconf

unboundを再起動

$ sudo service unbound restart

エラー対策

よしよし、、出来たぞ!!再起動しようかと思ったところ、エラーが発生

👇エラー内容

root@servername:~# service unbound start
Job for unbound.service failed because the control process exited with error code.
See "systemctl status unbound.service" and "journalctl -xe" for details.

おっと!???
まさか、ポートだれか使ってる??

👇DNSポート(PORT:53)を使ってるサービスを調べる

$ sudo ss -lntp | grep 53
---------------------------------------------------------------------------------------
LISTEN 0 5   127.0.1.1:53           *:*      users:(("systemd-resolved",1224,5))
---------------------------------------------------------------------------------------

あ、、居た!こいつだ
この、systemd-resolvedというサービスは、ネームサーバーを変えたりすることができるがここではその機能は不要のため停止する。
下記のように設定すること

/etc/systemd/resolved.conf
[Resolve]
DNSStubListener=no

設定後にこのsystemd-resolvedを再起動

$ sudo systemctl restart systemd-resolved

もう一回DNSポート(PORT:53)を使ってるサービスを調べる

$ sudo ss -lntp | grep 53

ここで何も出てこなければ設定完了です。

unboundをスタートさせましょう。

$ sudo service unbound start

とりあえず完成です。