ローカルネットワークにDNS
目的は、ローカルの複数のサーバーの名前解決をするために、DNS(ドメイン ネーム サーバー)を設置する。
Proxmox VE の LXC で DNS を作る。
※ ローカルにDNSがない場合は、各PC端末の /etc/hosts に IPアドレスとホスト名、ドメイン名を記すことで、対処していた。(結構めんどくさいのだ)
DNS は dnsmasq
簡単な、名前解決だけを行うので、dnsmasq を使うことにした。
小さなネットワークなので、勉強も兼ねて自分で ipアドレスを決めて登録することにした。
dnsmasq の DHCP の機能を使えば、登録も自動になるのだが
LXC debian install
debianのLXC作成は、下のポストを参考にしてください。
debian install PVE LXC
Helper-Scripts を使って PVE に Debian 12 LXC を簡単インストールする。
dnsmasq インストール
インストール
apt でサクッとインストール
# sudo apt install dnsmasq
設定
基本設定
設定ファイルを編集
# vi /etc/dnsmasq.conf
変更点は下だけで、あとはデフォルトで OK
no-hosts は、既存の /etc/hosts は、Proxmox VE が書き換える可能性があるので、
addn-hosts を使うことにした。
設定がうまく行くまでは、トラブル回避のために、cache-size=0
domain-needed
bogus-priv(プライベートネットワークだけよ)
no-hosts (サーバーOSの /etc/hosts のファイルを読まない)
#no-dhcp-interface= (デフォルトはDHCPを使わないみたい)
#conf-file=/etc/dnsmasq.d/
addn-hosts=/etc/banner_add_hosts(hostsのかわりにこちらに登録して使用する)
cache-size=0 (ローカルなのでキャッシュの必要性は?)
ホストの登録
内容は、例なので悪しからず。
ローカルネットワークのドメインを
prox.home (適当な名称)
にしたとすると、
# vi /etc/banner_add_hosts
......
192.168.10.100 node1.prox.home node1
192.168.10.102 wordpress.prox.home wordpress
......
ドメインの登録
サブドメインの登録は、ワイルドカード(*)が使えると便利なので、
/etc/dnsmasq.conf
を編集する。
# vi /etc/dnsmasq.conf
..........
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
# web-server.
#address=/double-click.net/127.0.0.1
address=/*.example.com/192.168.10.102
address=/example.com/192.168.10.102
..........
設定を反映させる
restart させる。
reload でもよいが、キャッシュがクリアされない可能性を考慮して、
# systemctl restart dnsmasq
DNSサーバー設定の確認
dig コマンド
DNS サーバーがうまく動作しているか確認する。
dig コマンドを使う
※ digコマンドとは、domain information groperの略で、直訳すると「ドメイン情報の手探りツール」
digコマンド形式……dig @server domain query-type
server:利用するネームサーバ
domain:情報を知りたいドメイン名
query-type:知りたい情報のタイプ
query-type例
A: ネットワークアドレス (省略時)
NS: ネームサーバ
MX: メールサーバの情報
SOA: SOA 情報
ANY: 知っているすべての情報
ドメイン名とIPアドレス
PC端末やルーター、ゲートウエイ等で、DNSサーバーの設定を行っていないので、DNSサーバーのIPアドレスを指定して、
DNSサーバーの IPアドレスを
192.168.10.76
ドメイン名 example.com
192.168.1.102
とすると、
dig example.com @192.168.10.76
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> karaie.com @192.168.10.76
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61124
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;karaie.com. IN A
;; ANSWER SECTION:
example.com. 0 IN A 192.168.10.102
;; Query time: 1 msec
;; SERVER: 192.168.10.76#53(192.168.10.76) (UDP)
;; WHEN: Sat Apr 19 11:24:20 JST 2025
;; MSG SIZE rcvd: 55
他の登録したドメインも試した方が良い。
ローカルサイトの設定
ローカルサイトでDHCPを使用できるルーターに、今回作ったDNSの登録をしよう。
マニュアルで設定したIPアドレスでローカルネットワークに接続するのであれば、マニュアル設定にあるDNS 設定の先頭に、今回作ったDNSサーバーのIPアドレスを登録する。(DNSサーバーは、登録の順番で問い合わせるようになっている)
ローカル内のPC端末からコマンドで
dig URL
で、名前解決ができるか確かめてみよう。
例)MAC OS から
% dig example.com
; <<>> DiG 9.10.6 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27458
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;karaie.com. IN A
;; ANSWER SECTION:
example.com. 0 IN A 192.168.1.102
;; Query time: 1 msec
;; SERVER: 192.168.1.76#53(192.168.1.102)
;; WHEN: Sat Apr 19 11:33:34 JST 2025
;; MSG SIZE rcvd: 55
のように、
でなければ、どこかの設定ミスになる。