先程は
★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サーバーのアドレスを使う」で設定します。
それから
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自動取得に変更.bat
というファイルを作成しましたので
@echo off
netsh interface ipv4 set dnsservers name="Wi-Fi" source=dhcp
pause
exit
この中身を管理者として実行、ですね。双方のファイル、nameの所はネットワークアダプタ名です。