CentOS 7.9にDNSサーバーのCoreDNSをDocker Composeでインストール、設定してみた: YUU MEDIA TOWN@Blog

封神龍(酒)の日記です、気になるニュースなどもチェック!ゾイド(ZOIDS)とかMacとかUNIXとかwindowsとかアニメ・漫画とかゲームとか雑記とか備忘録とか北海道とかお酒とか。検索エンジン経由来訪でお探しのキーワード関連記事が見つからない方はこちら祝!HP爆誕25周年!!

2023年06月11日 (日曜日)

CentOS 7.9にDNSサーバーのCoreDNSをDocker Composeでインストール、設定してみた

先程は
CentOS 7.9にFTPサーバーのvsftpdをインストール、設定してみた(2023年06月11日 (日曜日))
やってましたがちょいと必要になりそうでしたのでDNSサーバーも設定してみました。
先程のFTPサーバーは接続する領域の都合上、Linux本体で設定致しましたがDNSサーバーはDocker環境で構築してみました。
できるPRO CentOS 7サーバー できるPROシリーズ(7.2(1511)対応) Kindle版購入して読んだ(2017年05月14日 (日曜日))
いつもどおりこちらの本を参考にするならDNSサーバーはBINDですが
やりたい事はクライアントPC(Windows11及びWindows10)でhostsファイルを書き換えれば済む程度やしな。それより手軽そうなDockerで設定はこちらのサイトを
Dockerを使って最速でDNSを構築してみた - のむのむのconsole.log
参考にさせていただきました。

DNSサーバーはなのでCoreDNSというものになります。

corednsというフォルダを作りその中に
・docker-compose.yml
・Dockerfile
のファイルを作成
・config
というフォルダを作りその中にはCoreDNSの設定ファイルの
・Corefile
・hosts
というファイルを作ります。

まずはDocker関連
docker-compose.yml


version: '3.1'
services:
coredns:
build: .
container_name: coredns
restart: on-failure
restart: always
expose:
- '53'
- '53/udp'
ports:
- '53:53'
- '53:53/udp'
volumes:
- './config:/etc/coredns'

説明のサイトにはない
restart: always
を追記しました。こちらを入れておくとDocker composeにおいてDockerが動いているLinuxが再起動かかっても自動でこちらの設定が起動します。サーバーとして使いたいのでサーバー再起動時には自動で起動してもらいたいから、という事で。

docker-composeでOS起動時にコンテナを自動起動する方法 - Qiita
コンテナを自動的に開始 — Docker-docs-ja 19.03 ドキュメント
こちらを参考に記載しました。

config


FROM coredns/coredns:latest
EXPOSE 53
EXPOSE 53/udp
ENTRYPOINT ["/coredns"]
CMD ["-conf", "/etc/coredns/Corefile"]

参考にしたサイトはCoreDNSのVerを指定していましたが今回はそんなこだわりないので
FROM coredns/coredns:latest
最新版を適用するように指定。

configフォルダ内の
Corefile


. {
whoami
forward . 192.168.0.1:53 # とりあえずルーターのIPにしておきました
errors
log . "{proto} {remote} is Request: {name} {type} {>id}"
hosts /etc/coredns/hosts {
fallthrough
}
reload
}


hosts


192.168.0.240 www.yuumediatown.com
192.168.0.240 www.yahoo.co.jp

こちらがドメインとIPアドレスの紐付けのファイルですね。
試しに自分のサイトとヤフーをこのLinuxで動いているWebサーバーにアクセスするように設定してみましょう。

準備が出来たら
docker compose up
します。

無事にDNSサーバーが立ち上がったようです。

それではクライアントPCのDNSを切り変えましょう。Windows 11の
インターネット プロトコル バージョン 4 (TCP/IPv4)のプロパティでDNSを自動取得ではなく「次のDNSサーバーのアドレスを使う」で設定
インターネット プロトコル バージョン 4 (TCP/IPv4)のプロパティでDNSを自動取得ではなく「次のDNSサーバーのアドレスを使う」で設定します。

それから
www.yuumediatown.com

www.yahoo.co.jp
をWebブラウザに打ち込むと本来のサーバーではなく設定ファイルで指定した
192.168.0.240
にアクセスするようになりました。

で、
docker compose up
で起動したのでコンソールにそのままログが出力されるように。

coredns | [INFO] udp 192.168.0.110 is Request: www.yuumediatown.com. A 2 coredns | [INFO] udp 192.168.0.110 is Request: www.yuumediatown.com. AAAA 3 coredns | [INFO] udp 192.168.0.110 is Request: translate.googleapis.com. AAAA 17346 coredns | [INFO] udp 192.168.0.110 is Request: hub.docker.com. A 50511 coredns | [INFO] udp 192.168.0.110 is Request: prodextdefblue-1cc5ls33lft-b42d79a68e9f190c.elb.us-east-1.amazonaws.com. A 5678 coredns | [INFO] udp 192.168.0.110 is Request: prodextdefblue-1cc5ls33lft-b42d79a68e9f190c.elb.us-east-1.amazonaws.com. AAAA 40634 coredns | [INFO] udp 192.168.0.110 is Request: www.yuumediatown.com. AAAA 29461 coredns | [INFO] udp 192.168.0.110 is Request: b.hatena.ne.jp. A 8774 coredns | [INFO] udp 192.168.0.110 is Request: b.hatena.ne.jp. A 9309 coredns | [INFO] udp 192.168.0.110 is Request: b.hatena.ne.jp. AAAA 32773 coredns | [INFO] udp 192.168.0.110 is Request: b.hatena.ne.jp. A 8774 coredns | [INFO] udp 192.168.0.110 is Request: sync-1-us-west1-g.sync.services.mozilla.com. AAAA 29335

パソコンがどのドメインにアクセスしようとしているのかがリアルタイムに流れていきますぁ。

ただサービスとして稼働していただきたいので一度、稼働を止めて
docker compose up -d
-dをつけてサービスとしてバックグラウンドで動くように指定します。

そういやDockerの方ではなくCentOS 7(Linux)本体の方で
sudo firewall-cmd --add-service dns --permanent
はしなくても接続できたわね。

クライアントの方でDNS切替、GUIで手動切替でもいいのですが切替回数が多いと手間なので
バッチファイル IPアドレス変更設定方法 | SEからの脱出日記 サーバー ネットワーク パソコン備忘録
こちらを参考に
DNS_CoreDNS192_168_0_240に変更.bat
というファイルを作り


@echo off
netsh interface ipv4 set dns name="Wi-Fi" source=static addr="192.168.0.240" register=non validate=no
pause
exit

な中身です。今回設定したDNSに変更したい場合、こちらのファイルを管理者として実行します。

DNSを自動取得に切り変える際は
DNS自動取得に変更.bat
というファイルを作成しましたので


@echo off
netsh interface ipv4 set dnsservers name="Wi-Fi" source=dhcp
pause
exit

この中身を管理者として実行、ですね。双方のファイル、nameの所はネットワークアダプタ名です。


Posted by 封神龍(酒) at 2023年06月11日 15:50 | 【所属カテゴリ: Linux】【コメントについて】【トラッくバックについて】【RSS登録についてRSS登録

--



--


--