🐳
docker-composeを使って最速で社内DNSを構築してみた
社内だけで使えるサービスやシステムを複数運営していると、IPアドレスでのアクセスは大変になってきます。
そこで、社内サービスにもドメインを使ってアクセスできるように社内DNSを整備しました。
前提
- ドメインは取得済み
- ドメインのワイルドカード証明書取得済み
→ これに関しては取得していなくても大丈夫ですが、SSL化された通信を行いたい場合は取得しておきましょう - 取得ドメイン:choipre.com
構築後のネットワーク図は以下のような感じになります
構築
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を!!
Discussion