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