====== Dnsmasq======
Dnsmasqは軽量で比較的容易に設定できるDNSサーバのフォワーダとDHCPサーバをもつソフトウェアである。(wikipediaより)\\
DNSのキャッシュサーバとTFTPサーバの機能もあります。\\
と言うことで、今までisc-dhcpdとBindの組み合わせを使用していたが、大げさなので社内はこっちに移行してみる。
===== Install =====
# pkg install dnsmasq
===== 名前解決 =====
Dnsmasqは名前解決に/etc/hostsまたはDHCPを利用します。\\
解決できない場合には/etc/resolve.confを参照して上位DNSに問い合わせます。
/etc/resolv.conf
nameserver 127.0.0.1
nameserver 上位DNS IP
/etc/hosts
192.168.1.254 gateway gateway.local.example.com
===== DNS設定 =====
/usr/local/etc/dnsmasq.conf
# Never forward plain names (without a dot or domain part)through
domain-needed ← ドメインの付加されていない名前解決は上位DNSに転送しない
# Never forward addresses in the non-routed address spaces.
bogus-priv ← プライベートIPの逆引きは上位DNSに転送しない
# Set this (and domain: see below) if you want to have a domain
# automatically added to simple names in a hosts-file.
expand-hosts ← domain= で指定されたドメインで補完する
# Set the domain for dnsmasq. this is optional, but if it is set, it
# does the following things.
# 1) Allows DHCP hosts to have fully qualified domain names, as long
# as the domain part matches this setting.
# 2) Sets the "domain" DHCP option thereby potentially setting the
# domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
domain=local.example.com ← 補完するドメイン
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
local=/local.example.com/ ← localなドメインを指定します。このドメインは/etc/hosts か DHCP でのみ解決します。
===== 特定のドメインだけ別のネームサーバに問い合わせる =====
int.example.comドメインは 192.168.2.254 に問い合わせる。\\
192.168.2.xxxの逆引きは 192.168.2.254 に問い合わせる。
/usr/local/etc/dnsmasq.conf
# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
resolv-file=/etc/dnsmasq.resolv.conf
# By default, dnsmasq will send queries to any of the upstream
# servers it knows about and tries to favour servers to are known
# to be up. Uncommenting this forces dnsmasq to try each query
# with each server strictly in the order they appear in
# /etc/resolv.conf
strict-order
# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/int.example.com/192.168.2.254
# Add routing PTR queries to nameservers
server=/2.168.192.in-addr.arpa/192.168.2.254
# /etc/dnsmasq.resolv.conf
# 上位ISPのDNSサーバ
nameserver 8.8.8.8
# /etc/resolv.conf
domain laputa.example.com
nameserver 127.0.0.1
===== hosts以外のファイルから追加 =====
/usr/local/etc/dnsmasq.conf に設定することでhosts以外のファイルに固定したIPを設定できる
addn-hosts=/path/to/adding-hosts-file
===== DNS キャッシュの設定 =====
/usr/local/etc/dnsmasq.conf
listen-address=127.0.0.1
listen-address=192.168.1.1 # Example IP ← これがないと、外からの問い合わせに答えません
===== DHCP設定 =====
/usr/local/etc/dnsmasq.confにこんな感じ
# dhcp-range=先頭IPアドレス,末尾IPアドレス,リース期間(単位:mは分、hは時間、省略で秒。デフォルトは1時間)
dhcp-range=192.168.1.101,192.168,1.200,30m ← アドレスの範囲
# dhcp-host=MACアドレス[,ホスト名][,IPアドレス][,リース期間] ← 特定のIPを振る
dhcp-host=01:23:45:67:89:ab,192.168.1.123
# dhcp-option=番号,値 ← 各種オプション
dhcp-option=3,192.168.1.254 ← デフォルトゲートウェイ
dhcp-option=42,192.168.1.1,192.168.1.2 ← NTPサーバ
OR
dhcp-option=option:router,192.168.1.254
dhcp-option=option:ntp-server,192.168.1.1,192.168.1.2
細かいオプションはこちら→を参照[[http://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xml|DHCP and BOOTP parameters]]((tagを使ってオプションを分けたりできるけど、そこら辺は自分で調べてね))((名前の設定も可能なんだけど、どれがどの名前でサポートされているのやら。Exampleを見るしか手がないので番号の方が無難かも))
または、
# dnsmasq --help dhcp
Known DHCP options:
...<省略>...
3 router
6 dns-server
7 log-server
9 lpr-server
...<省略>...
42 ntp-server
44 netbios-ns
45 netbios-dd
46 netbios-nodetype
47 netbios-scope
...<省略>...
==== 複数のI/F ====
interface=eth1
interface=eth2
interface=eth3
dhcp-range=tag:eth1,10.0.0.10,10.0.0.250,30m
dhcp-range=tag:eth2,10.0.1.10,10.0.1.250,30m
dhcp-range=tag:eth3,10.0.2.10,10.0.2.250,30m
dhcp-option=tag:eth1,option:router,10.0.0.1
dhcp-option=tag:eth2,option:router,10.0.1.1
dhcp-option=tag:eth3,option:router,10.0.2.1
===== リース中のIPリスト =====
# cat /var/db/dnsmasq.leases
1367930996 aa:bb:cc:dd:ee:60 192.168.0.aaa hostname1 aa:bb:cc:dd:ee:60
1367930932 aa:bb:cc:dd:ee:b1 192.168.0.bbb hostname2 aa:bb:cc:dd:ee:b1
1367929670 aa:bb:cc:dd:ee:3d 192.168.0.ccc hostname3 aa:bb:cc:dd:ee:3d
===== TFTPサーバ =====
enable-tftp
tftp-root=/tftpboot
===== 起動 =====
/etc/rc.confに
dnsmasq_enable="YES"
を追加
===== 参考 =====
* [[http://wiki.openwrt.org/doc/howto/dhcp.dnsmasq|Dnsmasq [OpenWrt Wiki]]]
* [[http://int128.hatenablog.com/entry/20120226/1330247800|dnsmasqで始めるプライベートDNSサーバ]]
* [[https://wiki.archlinux.org/index.php/Dnsmasq_(%E6%97%A5%E6%9C%AC%E8%AA%9E)|ArchLinux dnsmasq (日本語)]]
* [[https://www.it-swarm-ja.com/ja/domain-name-system/dnsmasq%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%B5%E3%83%96%E3%83%8D%E3%83%83%E3%83%88%E3%81%AB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8B/959869099/|dnsmasqを使用して複数のサブネットにサービスを提供する]]
* [[https://www.linux.com/topic/networking/advanced-dnsmasq-tips-and-tricks/|Advanced Dnsmasq Tips and Tricks]]