dnsmasq icon

dnsmasq debian LXC

ローカルにDNSサーバーにdnsmasqで構築、Proxmox VE の LXC OSは debian

ローカルネットワークにDNS

目的は、ローカルの複数のサーバーの名前解決をするために、DNS(ドメイン ネーム サーバー)を設置する。

Proxmox VE の LXC で DNS を作る。

※ ローカルにDNSがない場合は、各PC端末の /etc/hosts に IPアドレスとホスト名、ドメイン名を記すことで、対処していた。(結構めんどくさいのだ)

DNS は dnsmasq

簡単な、名前解決だけを行うので、dnsmasq を使うことにした。

小さなネットワークなので、勉強も兼ねて自分で ipアドレスを決めて登録することにした。

dnsmasq の DHCP の機能を使えば、登録も自動になるのだが

LXC debian install

debianの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
				
			

のように、

;; ANSWER SECTION:
example.com. 0 IN A 192.168.1.102
 
返事が返ってくるはず、
でなければ、どこかの設定ミスになる。

Related Posts

wordpress icon

WP-CLI インストール

WP-CLI は WordPress を管理するためのコマンドラインインターフェースで、プラグインのアップデートなどの実行ができる。

wordpress icon

WordPress 投稿を移行

Wordpressの新しいサイトに元の投稿だけを移行することで、リニューアルしながら過去の投稿も見れるようにしたい。