Photon OS でDNSサーバをDocker + CoreDNSで構築する

前ポストに引き続き、検証環境構築メモとなります。
今回は検証環境の内部向けドメインDNSサーバを構築します。
VyOSの構築メモ - passacaglia

Environment

  • PhotonOS
  • CoreDNS

add user

予めsudoグループに追加しておけば、sudersへの追加は不要。

# useradd -m -G sudo admin
# passwd admin

disable iptables

デフォルトでは 22/tcpのみポート開放されている。必要なポートのみ開放することが望ましいが、一旦停止。

# systemctl stop iptables
# systemctl disable iptables

docker

Photon OSでは、dockerが予めインストールされているが、無効化されているので、有効化して起動させる。

# systemctl enable docker
# systemctl start docker

CoreDNS

coredns/Corefile

. {
    #log
    reload
    forward . <RESOLVER>
}

<LOCAL_DOMAIN> {
    log
    file /etc/coredns/zones/<LOCAL_DOMAIN>.zone
}

BIND形式でのゾーンファイルを作成。
coredns/zones/zonefile

$ORIGIN <DOMAIN>.
@       3600 IN SOA mgmt.<DOMAIN>. admin.<DOMAIN>. (
        2020123100
        7200
        3600
        1209600
        3600
        )

        3600 IN NS mgmt.<DOMAIN>.

mgmt           IN      A       172.23.0.X

事前にCoreDNSのイメージをダウンロード。

docker pull coredns/coredns:1.7.0

今回はdocker-composeを利用してコンテナの管理を行うため、yamlファイルを用意。

version: '3'
services:
  coredns:
    image: coredns/coredns:1.7.0
    container_name: coredns
    restart: always
    network_mode: host
    command: -conf /etc/coredns/Corefile
    volumes:
      - coredns:/etc/coredns
volumes:
  coredns:
    driver_opts:
      type: none
      device: <PATH_TO_COREDNS_DIR>
      o: bind

systemd-resolvedを停止する。

systemctl stop systemd-resolved
systemctl disable systemd-resolved

corednsを起動

docker-compose up -d

設定したコンフィグで名前解決ができることを確認。