2013年12月7日土曜日

BeagleBoneBlackにDHCPサーバ機能(+dnsキャッシュ)を委ねる

iPhoneなどを含めてPC類で20個以上、BeagleBone Black(BBB)、Raspberry Pi、Arduino EtherShield、各種USB-WIFIで30個以上の小物のイーサデバイスがあって、さすがにDHCP管理をWeb GUIベースで行うのは面倒になってきた。

ルータのNEC-WR9500N上のDHCPを止めてBBBをDHCP専用サーバとし、CUIベースで管理することにした。昔なら玄箱でやるところである。ついでにLocal Net用のDNS(キャッシュ)サーバも建てて各デバイスの名前解決もやっておきたい。

こういうちっちゃいLANの用途には dnsmasq が最適だと思う。

まず、BBB(staticに10.0.1.2に設定、gatewayは10.0.1.1)で、aptitude install dnsmasq してから、/etc/dnsmasq.confを編集する。

dnsmasq.conf

cache-size=1024
conf-dir=/etc/dnsmasq.d
dhcp-option=option:dns-server,10.0.1.2,10.0.1.1
dhcp-option=option:router,10.0.1.1 #ルータIP
dhcp-range=10.0.1.128,10.0.1.223,150,255.255.255.0,12h
domain=mikan #覚えやすいローカルドメイン名にする
expand-hosts
resolv-file=/etc/resolv.dnsmasq.conf #resolv設定ファイル

resolv関係ファイルの作成と編集

nano /etc/resolv.dnsmasq.conf 
cat /etc/resolv.dnsmasq.conf
nameserver 10.0.1.2
nameserver 10.0.1.1
       cat /etc/resolv.conf
       nameserver 127.0.0.1

mac addressとIPの対応表の作成


/etc/dnsmasq.d/hosts.confを作成して設定。

   dhcp-host=(ここにmacアドレスを書く),imac,10.0.1.128,inifinite
         ....略
         dhcp-host=(ここにmacアドレスを書く),orange,10.0.1.202,inifinite
         ....略


/etc/hostsファイル更新スクリプト


【手順1】/etc/dnsmasq.d/makehosts/hosts.no-dhcpというファイルを作りDHCPを使わないホスト名一覧を書いておく。
cat hosts.no-dhcp
127.0.0.1 localhost
127.0.0.1dnsmasq
10.0.1.2 dnsmasq
10.0.1.3 fs
【手順2】/etc/dnsmasq.d/makehosts/makehosts.shを作る
cat makehosts.sh
#!/bin/sh
cat 'hosts.no-dhcp' > /etc/hosts;
awk -F, '{if(!/#/ && /./) print $3,$2}'  ../hosts.conf >> /etc/hosts

sudo ./makehosts.sh すれば、/etc/hostsファイルが更新される。

 dnsmasq再起動

service dnsmasq restart

動作チェック

手元のiMacターミナルから  dig orange.mikan する。
; <<>> DiG 9.8.5-P1 <<>> orange.mikan
;; QUESTION SECTION:
;orange.mikan.            IN    A

;; ANSWER SECTION:
orange.mikan.        0    IN    A    10.0.1.203

;; Query time: 2 msec
;; SERVER: 10.0.1.2#53(10.0.1.2)



0 件のコメント:

コメントを投稿