zaki work log

作業ログやら生活ログやらなんやら

[dnsmasq] Proxmoxで直接DNS+DHCPサーバーを動かす

もともとDNSDHCPサーバーは専用PCで稼働してたのをハードが壊れてからVM運用に切り替えてたけど、プラットフォームをDebianベースのProxmoxへ移行したついでにaptでHypervisor側に直接入れられないか試してみたら特に問題なくうまく行ったのでその記録。
ProxmoxでDNS+DHCPを動かすことで、それ用のVMを1個稼働させる必要がなくなりました。

サーバーに使うソフトはdnsmasq

dnsmasqインストール

といってもaptで普通にいれるだけ。

root@pve:~# apt-get install dnsmasq
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  dns-root-data dnsmasq-base
Suggested packages:
  resolvconf
The following NEW packages will be installed:
  dns-root-data dnsmasq dnsmasq-base
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 497 kB of archives.
After this operation, 1,101 kB of additional disk space will be used.
Do you want to continue? [Y/n]

設定

設定ファイルは/etc/dnsmasq.confに生成されるけど全てコメントアウトされてるので、デフォルト構成で自動で読み込まれる/etc/dnsmasq.d/*にファイルを作成する。
このディレクトリのREADMEにある通り、ファイル名末尾が.dpkg-dist.dpkg-oldなどの場合は無視される。(この制御は/etc/default/dnsmasqによる)

投入した設定はだいたい以下の通り。

interface=vmbr0

# DNS
domain-needed
bogus-priv

resolv-file=/etc/resolv.conf

# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/naru.jp-z.jp/

expand-hosts

domain=naru.jp-z.jp

# DHCP
dhcp-range=192.168.0.201,192.168.0.219,255.255.255.0,12h

dhcp-option=option:router,192.168.0.1
dhcp-option=option:dns-server,192.168.0.4

# fixed hosts
dhcp-host=**:**:**:**:**:**,192.168.0.10
dhcp-host=**:**:**:**:**:**,192.168.0.9

詳しい説明はman dnsmasqしてもらうとして、ざっくり以下の通り。

設定 機能
interface listenするNICの限定
domain-needed ホスト名のみのクエリを上流に転送しない
bogus-priv プライベートアドレスの逆引きを上流に転送しない
resolv-file 上流DNSサーバーの指定(デフォルト/etc/resolv.confなので↑の内容なら記載不要)
local 指定のドメイン名のクエリは上流に転送しない
expand-hosts ホスト名のみのクエリにドメインを付与
dhcp-range DHCPのリース範囲と期間
dhcp-option 割り当てるデフォルトゲートウェイDNS
dhcp-host 指定MACアドレスに対して固定のIPアドレス割り振り

DHCPサーバーについてはこっちも参照

zaki-hmkc.hatenablog.com

レコードのメンテについて

dnsmasqの特徴であるレコード設定を/etc/hostsファイルを使う点については、Proxmoxのwebインタフェースの「システム」->「ホスト名」で直接編集ができるため、手動運用でちょっとレコード編集する分にはかなり便利。