Raspberry pi を DHCP + DNS サーバーにしたい
クローズネットワークの台数増加
クローズネットワークを組んで使っています。
最初は台数が少なかったので固定 IP でよかったのですが、台数増加に伴い DHCP サーバーが欲しくなってきました。
ついでに名前もつけてあげれば IP を気にする必要がなくなります。
そこで、Raspberry pi を DHCP 兼 DNS サーバーに仕立て上げることにしました。
使用したのは Raspberry pi 3 Model B です。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
- 出版社/メーカー: TechShare
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
OS は Raspbian Jessie Lite の April 2017 バージョンを使用しました。
Raspberry pi の初期設定
SSH を有効にする
通常 Raspberry pi はディスプレイと USB マウス/キーボードを接続して操作しますが、DHCP + DNS サーバーにそんなものは贅沢です。
どうせローカルネットワークに入るので、SSH を有効にして SSH 経由で操作できるようにしました。
以下のリンクを参考に。
qiita.com
IP アドレスの設定
SSH でつなぐには IP アドレスを知らないといけません。
というわけで Raspberry pi に固定アドレスを振ることにしました。
2017/07/06 追記
OS Raspbian Jessie からは、/etc/network/interfaces ではなく /etc/dhcpcd.conf をいじるのが正しいようです。
なぜか /etc/network/interfaces でうまくいっていたのですが、Raspberry pi を 2 台導入して同じことをやろうとしたら、できませんでした。
なので /etc/dhcpcd.conf の書きかえ方も記載しておきます。
sudo nano /etc/dhcpcd.conf
最後の方に以下の記述を入れます。
interface eth0 static ip_address=192.168.0.1/24 static domain_name_servers=192.168.0.1
こちらは古い記述です。
アドレスは /etc/network/interfaces の編集で行います。
sudo nano /etc/network/interfaces
eth0 インターフェースに 192.168.0.1 を割り当てます。
auto eth0 iface eth0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 dns-nameservers 127.0.0.1 192.168.0.1 dns-search local
emacs のインストール
ここからは、いろいろとテキストをいじっていくことになります。
nano は使い慣れていないので、大好きな emacs をインストールしておきます。
$ sudo apt-get install emacs
Caps lock を Ctrl にする
以下のサイトのまんまです。
/etc/default/keyboard というファイルを書き換えます。
$ sudo emacs /etc/default/keyboard
途中に XKBOPTIONS という部分があるので、そこを以下のように書き換えます。
XKBOPTIONS="ctrl:nocaps"
このあと再起動すれば OK。
DHCP + DNS サーバーの導入
大部分は以下のリンクを参考にしました。
一部、DNS の設定や運用部分を追記しています。
設定
設定ファイルを編集します。
$ sudo emacs /etc/dnsmasq.conf
/etc/dnsmasq.conf の下のほうにある
#conf-file=/etc/dnsmasq.more.conf
の#を削除します。
# Log lots of extra information about DHCP transactions. #log-dhcp # Include another lot of configuration options. conf-file=/etc/dnsmasq.more.conf #conf-dir=/etc/dnsmasq.d # Include all the files in a directory except those ending in .bak #conf-dir=/etc/dnsmasq.d,.bak
この /etc/dnsmasq.more.conf を作成して編集します。
$ sudo emacs /etc/dnsmasq.more.conf
# ローカルホスト名を上位DNSに転送しない domain-needed # ローカルIPアドレスの逆引きを上位DNSに転送しない bogus-priv # ショートドメイン名を補完するドメイン名(hoge -> hoge.local) local = /local/ # ローカルドメイン名 domain = local # ショートホスト名を補完する expand-hosts # DHCPで割り当てするアドレスの範囲とリース時間 dhcp-range = 192.168.0.50, 192.168.0.200, 12h # DHCPクライアントに通知するルータのIPアドレス dhcp-option = option:router, 192.168.0.1 # DHCPクライアントに通知するDNSサーバのIPアドレス dhcp-option = option:dns-server, 192.168.0.1 # 固定アドレスをふって、名前をつける dhcp-host = aa:aa:aa:aa:aa:aa, pc1, 192.168.0.10, infinite # 名前だけつける dhcp-host = bb:bb:bb:bb:bb:bb, pc2
これでクライアントに関しては DNS/DHCP ともに動作します。
ただこの方法だと、dnsmasq が DHCP を発行した場合のみ名前解決がされるようで、固定アドレス (Raspberry pi 自身) を最初から持っているものは名前解決できませんでした。
これを解決するには、/etc/hosts に名前を書けば良いようです。
$ sudo emacs /etc/hosts
Raspberry pi 自身のアドレスを書きます。
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 raspberrypi 192.168.0.1 raspi.local raspi
設定ができたので dnsmasq を再起動します。
$ sudo service dnsmasq restart
運用
DHCP リース記録の確認
どのように DHCP がリースされたかが気になったので調べてみました。
/var/lib/misc/dnsmasq.leases を見ることで実現できます。
$ cat /var/lib/misc/dnsmasq.leases 0 aa:aa:aa:aa:aa:aa 192.168.0.10 pc1 01:aa:aa:aa:aa:aa:aa:aa 1506215087 bb:bb:bb:bb:bb:bb 192.168.0.50 pc2 01:bb:bb:bb:bb:bb:bb
一番左がリース時間のようです。
不要な DHCP リースの削除
dnsmasq の設定をいろいろ試していると、リース時間無限大でいらないエントリが残ってしまいました。
そういうものを消すには、単に上記の /var/lib/misc/dnsmasq.leases の不要な行を消せば良いようです。
その場合は、いったん dnsmasq のサービスを止めたほうが良さそうです。
$ sudo service dnsmasq stop $ sudo emacs /var/lib/misc/dnsmasq.leases
0 aa:aa:aa:aa:aa:aa 192.168.0.10 pc1 01:aa:aa:aa:aa:aa:aa:aa
$ sudo service dnsmasq start
これでローカルネットワークの使い勝手が向上しました。
続編
今回はクローズネットワークを Raspberry pi で作りました。
ただこのあと、結局このネットワークを外につなぎたくなりました。
そのときの続編はこちらからどうぞ。
香川県移住体験ツアー6: まとめ
移住体験ツアーのまとめ
今まで 5 回にわたって執筆してきた移住体験ツアーですが、本記事のまとめが最後になります。
各記事の概要と、全体としてどんなことを感じたのか、まとめたいと思います。
各記事について
1: 準備編
この準備編では、移住コーディネーターさんと、香川県政策部地域活力推進課さんに旅程の相談をさせていただきました。
ここで空き家バンクの見学や、先輩移住者とのインタビューなどをセッティングしていただきました。
知り合いのいない移住希望者がこういったことをセッティングするのはかなり難しいので、本当に助かりました。
今移住を希望されている方は、このような支援を最大限に活用すると良いのではないかと思います。
2: 取材編
取材編では、準備編でお世話になった方々に実際にお会いしました。
そして香川県での生活に対する生の声を伺うことができました。
この取材を通じて感じたのは、実際に住んでいる方の声はネットでは得られないこと、そして、
こういう生の声を得るには自治体にコンタクトを取るのが実は手っ取り早いのではないか、ということです。
自治体に相談するのはハードルが高いな、と自分自身は感じていましたが、それによって得られる情報はとても大きいと感じました。
3: 三木町編
三木町では、空き家バンク見学、役場で移住相談、そして子どもの遊び場訪問をしました。
空き家バンク物件は自然に囲まれたとても素敵な環境にあり、移住後の生活を想像することができました。
役場では本当に温かい対応をしていただき、移住への期待が増し、不安が減りました。
また遊び場では三木町在住の子連れお母さんとお話をして、三木町の子育て環境の良さを聞けました。
初めて行った三木町でしたが、ここは本当に良いところだと感じました。
まとめ
移住ツアーでは、香川県のいろんな良さを知ることができました。
自然だったり、食だったり、、
でも自分にとって一番印象的だったのは、人の良さだったのかもしれません。
準備編からお世話になった香川県庁の方々、役場の方々、先輩移住者、公園で出会った方々...
とてもあたたかく接していただきました。
もう一つ感じたのは、移住にあたって「自分にとって何が一番大切なのか」をしっかり考える必要があるということです。
あらゆるすべてのことが理想通りという場所はありえないと思います。
であれば、他のことは多少理想と違ったとしても、最も大切なことが叶えられる場所なら良いと思うのです。
自分の中の「優先順位」。
これをはっきりさせるのは実はとても難しいことですが、真剣に自分の心と向き合わなければと思いました。
最後に、今回の移住体験ツアーでお世話になった香川県庁の方々、役場の方々、先輩移住者、公園で出会った方々に、心からの感謝を述べさせていただきたいと思います。
貴重な経験をさせていただき、本当にありがとうございました!!
そして、移住することになった場合は、どうぞよろしくお願いいたします!!
香川県移住体験ツアー5: 丸亀市編
丸亀市とは
陸地部は風姿がとりわけ美しい飯野山(別名、讃岐富士)が讃岐平野の中央にそびえ、南北を一級河川土器川が流れる、香川の代表的な田園都市です。
かがわ暮らしより
初めて香川を訪れたとき、まさにこの飯野山とその周辺の田園地帯に惹かれたのが丸亀市です。
なので、今回の移住体験ツアーでまた来られることをとても楽しみにしていました。
スーパー散策
新鮮市場きむら
初めて香川に来たとき、この新鮮市場きむらを訪れて感動しました。
何がすごいって、新鮮な魚がズラリと並んでいることです。
今回はタイとカンパチの刺し身を購入。
めちゃくちゃ美味しかったです。
こんな美味しい地元産の魚が安く買えるなんて、本当に贅沢ですね!!
きむら、好きになりました。
子どもの遊び場
丸亀市役所で移住相談
最後に、丸亀市役所に行って、移住や子育て支援の情報について伺いました。
同じ香川県の中でも、こういった支援メニューはかなり違いがあることがわかりました。
たとえば子育て中に家事まで手が回らないことってかなりあると思うのですが、
そういうときにホームヘルパーを格安でお願いできる制度があります。
丸亀市の子育てホームヘルプサービス
三木町の子育てホームヘルプサービス
対象者、値段、利用可能な回数とすべて違っています。
それ以外にも一時預かりなどにも違いがあるようです。
これはもうまさにその人次第というか、何を大事にするかということになってくるのですが、
個人的には三木町の支援メニューのほうが当てはまる部分が多いと感じました。
丸亀市まとめ
飯野山、スーパー、そして子どもの遊び場で考えると最高です。
ただし、移住や子育て支援といった部分では、完全に理想的とまではいえませんでした。
三豊市編でも書きましたが、
「自分が何を大切にしたいのか」
これ次第なんだ、ということを再認識しました。
そしてまとめ
長かった移住体験シリーズは、次回のまとめで最後になります。
いろいろまわってみて、結局どうだったのか。
自分的な振り返りにもできればと思っています。