7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

docker-composeを使って最速で社内DNSを構築してみた

この記事は 生産性向上のための環境整備2020 【PR】 Lenovo Advent Calendar 2020 の1日目の記事です。

2日目の記事:Lenovo社のモバイルディスプレイ 「ThinkVision M14」を買ってよかったこと! @RyotaMurohoshi

社内だけで使えるサービスやシステムを複数運営していると、IPアドレスでのアクセスは大変になってきます。

そこで、社内サービスにもドメインを使ってアクセスできるように社内DNSを整備しました。

合わせてこちらもご覧ください!セットで行うことで、より生産性を向上できます!
まだhttpで運用してるの👀?(Cloudflare + docker-composeで自動更新可能ワイルドカード証明書を発行してSSL化してみた)

前提

  • ドメインは取得済み
  • ドメインのワイルドカード証明書取得済み
    → これに関しては取得していなくても大丈夫ですが、SSL化された通信を行いたい場合は取得しておきましょう
  • 取得ドメイン:choipre.com

構築後のネットワーク図は以下のような感じになります
スクリーンショット 2020-11-29 13.46.45.png

構築

DNSはDockerを使って構築します。CoreDnsというDocker-imageが公開されているので、そちらを利用します。フォルダ構成としては以下の感じです。

drwxr-xr-x   - nomunomu  2 11 18:01 dns
.rw-r--r-- 244 nomunomu  4 11 16:00 ├── docker-compose.yml
.rw-r--r-- 115 nomunomu  4 11 16:00 ├── Dockerfile
drwxr-xr-x   - nomunomu  2 11 17:58 └── volumes
drwxr-xr-x   - nomunomu  4 11 16:14    └── config
.rw-r--r-- 181 nomunomu  4 11 16:32       ├── Corefile
.rw-r--r--  53 nomunomu  4 11 16:14       └── hosts

Docker系設定

docker-compose.yml
version: '3.1'
services:
  coredns:
    build: .
    container_name: coredns
    restart: on-failure
    expose:
      - '53'
      - '53/udp'
    ports:
      - '53:53'
      - '53:53/udp'
    volumes:
      - './volumes/config:/etc/coredns'
Dockerfile
FROM coredns/coredns:1.7.0

EXPOSE 53
EXPOSE 53/udp

ENTRYPOINT ["/coredns"]
CMD ["-conf", "/etc/coredns/Corefile"]

CoreDns設定

どのドメインとIPアドレスが紐づくかをhostsファイルに記述します。Corednsの設定はファイルはCorefileというファイルに記述します。

Corefile
. {
    whoami
    forward . 192.168.0.100:53   # ここはPublic-DNSでもよい
    errors
    log . "{proto} {remote} is Request: {name} {type} {>id}"
    hosts /etc/coredns/hosts {
        fallthrough
    }
    reload
}
hosts
192.168.0.110 xxxxxx.choipre.com
192.168.0.111 yyyyyy.choipre.com
192.168.0.112 zzzzzz.choipre.com

起動

docker-compose.ymlがあるディレクトリで以下のコマンドを流すと、DNSが起動します。

docker-compose up

docker-composeを走らせたPC(192.168.0.100)へ各クライアントのDNS解決先を向けることでローカルのIPに対してもドメインでアクセスすることができるようになります。

社内のネットワークを整備して、快適なネットワークLifeを!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?