FreeBSDにDNSMASQを設定する

2016年6月4日iPad/iPod/iPhone,Mac,NAS,パソコン・インターネット

NAS用として組み上げたFreeBSD機は、家庭内サーバとしても使います。

まず、抑えておきたいのは、家庭内DNSサーバです。QNAPを使っている時に知ったDNSMASQと言うソフトが使い易そうです。

DNSMASQとは、DHCPサーバ機能とDNSサーバ機能を併せ持ったソフトです。DHCPでアドレスを配布する際、MACアドレスに対応したIPアドレスとホスト名を割り付けるので、DHCPでありつつ、固定IPの様な使い方ができます。

本当に固定IPを使いたい時は、/etc/host(等)に書いたアドレスを参照させる事ができます。

インストール手順は、次の通りです。

  1. DNSMASQインストール
  2. DNSMASQ設定
  3. 起動&テスト
  4. /etc/rc.confに記述

1. DNSMASQインストール

ポートパッケージが用意されています。

$ cd /usr/port/dns/dnsmasq
$ sudo make config-recursive
$ sudo make install clean

インストール(ビルド)自体は、簡単に終了します。

2. DNSMASQ設定

肝です。設定ファイルを修正します。

$ sudo vi /usr/local/etc/dnsmasq.conf

以下の例は、次の設定の場合です。

  • ドメイン名:local.example.com
  • サブネット:192.168.0.xx
  • ネームサーバ:192.168.0.1
  • ゲートウェイ:192.168.0.254
  • クライアント1:192.168.0.2(mac, MACアドレスは00:00:00:00:00:00)
  • クライアント2:192.168.0.3(win, MACアドレスは00:00:00:00:00:01)
 |domain-needed # Never forward plain names (without a dot or domain part)
 |expand-hosts # Add the domain to simple names (without a period) in /etc/hosts in the
 |# same way as for DHCP-derived names.
 |bogus-priv # Never forward addresses in the non-routed address spaces.
 |filterwin2k # Uncomment this to filter useless windows-originated DNS requests
 |clear-on-reload # Whenever /etc/resolv.conf is re-read, clear the DNS cache.
*|domain=local.example.com # Set the domain for dnsmasq.
 |cache-size=1000 # Set the size of dnsmasq's cache. The default is 150 names.
 |local-ttl=600
 |neg-ttl=600
 |localmx
*|local=/local.example.com/ # Add local-only domains here, queries in these domains are answered
 |# from /etc/hosts or DHCP only.
 |
*|dhcp-range=192.168.0.2,192.168.0.159,24h # dhcp range, 24 hour lease
 |dhcp-option=vendor:MSFT,2,1i # Send microsoft-specific option to tell windows to release the DHCP lease
 |# when it shuts down.
 |dhcp-authoritative # Set the DHCP server to authoritative mode. In this mode it will barge in
 |# and take over the lease for any client which broadcasts on the network,
 |# whether it has a record of the lease or not.
*|dhcp-option=option:router,192.168.0.254 # set router address (3)
*|dhcp-option=option:dns-server,192.168.0.1 # set dns server address (6)
*|dhcp-option=option:domain-name,local.exapmple.com # set domain name (15)
 |dhcp-option=option:netbios-nodetype,1 # netbios node type (46)
 |# 1 B-node: Broadcast - no WINS
 |# 2 P-node: Peer - WINS only.
 |# 4 M-node: Mixed - broadcast, then WINS
 |# 8 H-node: Hybrid - WINS, then broadcast
*|dhcp-host=00:00:00:00:00:00,192.168.0.2,mac # Mac
*|dhcp-host=00:00:00:00:00:01,192.168.0.3,win # Windows
 |
 |log-facility=/var/log/dnsmasq.log
 |log-queries
 |log-dhcp

ポイントは、次の通りです。

  • ドメイン名の指定
  • 配布するIPアドレス範囲の指定
  • ネームサーバ、ゲートウェイアドレスの指定
  • MACアドレス、IPアドレス、ホスト名の対応表

そして、/etc/hostsには、次の内容を記述してあります。

$ sudo vi /etc/hosts
127.0.0.1 localhost localhost.local.example.com
192.168.0.1 freebsd.local.example.com freebsd
192.168.0.254 gw.local.example.com gw

3. 起動&テスト

次の通り、起動します。

$ sudo /usr/local/etc/rc.d/dnsmasq start

確認項目は、次の通りです。

  • クライアントのIPアドレスが正しいかどうか?
  • 割り当てられたドメイン名が正しいかどうか?
  • クライアントのネームサーバ、ゲートウェイが正しいかどうか?

/var/log/dnsmasq.logにログが残っていますので、こちらもご確認ください。

4. /etc/rc.confに記述

$ sudo vi /etc/rc.conf

記述する内容は、次の通りです。

dnsmasq_enable="YES"

参考にした所

他にも、QNAPのフォーラムかどこかで、設定ファイルしているのを読んでいるのですが、見つけられませんでした。

[amazonjs asin="B00GIF7SOW" locale="JP"]

Posted by お市のかた