社内だけで使えるサービスやシステムを複数運営していると、IPアドレスでのアクセスは大変になってきます。
とはいっても、外部DNSに社内用のドメインを登録して...。などをするのも気が引けます。
そこで、社内サービスにもドメインを使ってアクセスできるように社内DNSを整備しました。
前提
- ドメインは取得済み
- ドメインのワイルドカード証明書取得済み
→ これに関しては取得していなくても大丈夫ですが、SSL化された通信を行いたい場合は取得しておきましょう - 取得ドメイン:choipre.com
構築後のネットワーク図は以下のような感じになります
構築
DNSはDockerを使って構築します。CoreDnsというDocker-imageが公開されているので、そちらを利用します。フォルダ構成としては以下の感じです。
dns ├── docker-compose.yml ├── Dockerfile └── volumes └── config ├── Corefile └── 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 . 8.8.8.8:53 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
基幹ルーターのプライマリDNSを、docker-composeを走らせたPC(192.168.0.100)へ向けることで、hostsに記載があるドメインについては、独自DNSで解決されます。
登録されていないドメインについては、forward設定によって外部のDNSへ再リクエストされます。
おわりに
ネットワークを整備して、快適なネットワークLifeを!!