子育てしながらエンジニアしたい

現在 2 歳女の子の子育て中エンジニアによる、技術系 + 日常系ブログ。

Raspberry pi を DHCP + DNS サーバーにしたい

f:id:edosha:20170622083157j:plain:w400

クローズネットワークの台数増加

クローズネットワークを組んで使っています。
最初は台数が少なかったので固定 IP でよかったのですが、台数増加に伴い DHCP サーバーが欲しくなってきました。
ついでに名前もつけてあげれば IP を気にする必要がなくなります。
そこで、Raspberry piDHCPDNS サーバーに仕立て上げることにしました。

使用したのは Raspberry pi 3 Model B です。

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
SSH を有効にする

SSH を有効にするには raspi-config から行います。

pi@raspberrypi:~ $ sudo raspi-config

以下のような設定画面が出てきます。

f:id:edosha:20170622090958p:plain:w600

ここで、"5 Interfacing Options" を選択、"P2 SSH" を選択して、Yes を選択すれば OK。

SSH の接続確認

Windows なら Tera term とか、Mac ならターミナルとかから接続できるか確認します。
デフォルトのユーザ名は pi、パスワードは raspberry です。

$ ssh pi@192.168.0.1

これでディスプレイとか USB 類を外し、SSH 経由で操作できるようになりました。

emacs のインストー

ここからは、いろいろとテキストをいじっていくことになります。
nano は使い慣れていないので、大好きな emacs をインストールしておきます。

$ sudo apt-get install emacs

Caps lock を Ctrl にする

以下のサイトのまんまです。

l-w-i.net

/etc/default/keyboard というファイルを書き換えます。

$ sudo emacs /etc/default/keyboard

途中に XKBOPTIONS という部分があるので、そこを以下のように書き換えます。

XKBOPTIONS="ctrl:nocaps"

このあと再起動すれば OK。

DHCP + DNS サーバーの導入

大部分は以下のリンクを参考にしました。
一部、DNS の設定や運用部分を追記しています。

gazee.net

Dnsmasq のインストー

apt-get でインストールします。

$ sudo apt-get install dnsmasq

設定

設定ファイルを編集します。

$ 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 で作りました。
ただこのあと、結局このネットワークを外につなぎたくなりました。
そのときの続編はこちらからどうぞ。

edosha.hatenablog.jp

香川県移住体験ツアー6: まとめ

移住体験ツアーのまとめ

今まで 5 回にわたって執筆してきた移住体験ツアーですが、本記事のまとめが最後になります。

各記事の概要と、全体としてどんなことを感じたのか、まとめたいと思います。

各記事について

1: 準備編

この準備編では、移住コーディネーターさんと、香川県政策部地域活力推進課さんに旅程の相談をさせていただきました。
ここで空き家バンクの見学や、先輩移住者とのインタビューなどをセッティングしていただきました。
知り合いのいない移住希望者がこういったことをセッティングするのはかなり難しいので、本当に助かりました。
今移住を希望されている方は、このような支援を最大限に活用すると良いのではないかと思います。

2: 取材編

取材編では、準備編でお世話になった方々に実際にお会いしました。
そして香川県での生活に対する生の声を伺うことができました。

この取材を通じて感じたのは、実際に住んでいる方の声はネットでは得られないこと、そして、
こういう生の声を得るには自治体にコンタクトを取るのが実は手っ取り早いのではないか、ということです。

自治体に相談するのはハードルが高いな、と自分自身は感じていましたが、それによって得られる情報はとても大きいと感じました。

3: 三木町編

三木町では、空き家バンク見学、役場で移住相談、そして子どもの遊び場訪問をしました。
空き家バンク物件は自然に囲まれたとても素敵な環境にあり、移住後の生活を想像することができました。
役場では本当に温かい対応をしていただき、移住への期待が増し、不安が減りました。
また遊び場では三木町在住の子連れお母さんとお話をして、三木町の子育て環境の良さを聞けました。

初めて行った三木町でしたが、ここは本当に良いところだと感じました。

4: 三豊市編

三豊市では道の駅訪問もしましたが、なんといっても先輩移住者との対談です。
私と同じような立場である先輩移住者の声を聴くことができ、本当にありがたい機会となりました。
良かったことだけでなく、考えさせられることも全部、教えていただきました。
このとき感じたのは、

自分たちにとって何が大切なのか、しっかり考えて移住を決めるべきだと感じました。

ということです。

5: 丸亀市編

丸亀市ではスーパー、子どもの遊び場、そして市役所を訪問しました。
もともと飯野山の風景が気に入っており、また今回はスーパーと子どもの遊び場の良さを知ることができました。
また、移住や子育て支援のメニューは、市町によって異なるということを知りました。
ここでもやはり「自分たちにとって何が大切なのか」を考えなければという気持ちになりました。

まとめ

移住ツアーでは、香川県のいろんな良さを知ることができました。
自然だったり、食だったり、、
でも自分にとって一番印象的だったのは、人の良さだったのかもしれません。
準備編からお世話になった香川県庁の方々、役場の方々、先輩移住者、公園で出会った方々...
とてもあたたかく接していただきました。

もう一つ感じたのは、移住にあたって「自分にとって何が一番大切なのか」をしっかり考える必要があるということです。
あらゆるすべてのことが理想通りという場所はありえないと思います。
であれば、他のことは多少理想と違ったとしても、最も大切なことが叶えられる場所なら良いと思うのです。
自分の中の「優先順位」。
これをはっきりさせるのは実はとても難しいことですが、真剣に自分の心と向き合わなければと思いました。

f:id:edosha:20170613075147j:plain:w400


最後に、今回の移住体験ツアーでお世話になった香川県庁の方々、役場の方々、先輩移住者、公園で出会った方々に、心からの感謝を述べさせていただきたいと思います。
貴重な経験をさせていただき、本当にありがとうございました!!

そして、移住することになった場合は、どうぞよろしくお願いいたします!!

香川県移住体験ツアーシリーズ

香川県移住体験ツアー5: 丸亀市編

4: 三豊市編こちらです。

丸亀市とは

全国12の現存天守のひとつ、丸亀城をシンボルとする香川第2の拠点都市です。面積112平方キロ、人口は約11万3千人。

陸地部は風姿がとりわけ美しい飯野山(別名、讃岐富士)が讃岐平野の中央にそびえ、南北を一級河川土器川が流れる、香川の代表的な田園都市です。
かがわ暮らしより

初めて香川を訪れたとき、まさにこの飯野山とその周辺の田園地帯に惹かれたのが丸亀市です。
なので、今回の移住体験ツアーでまた来られることをとても楽しみにしていました。

f:id:edosha:20170609125843p:plain:w400

丸亀市で体験したのはスーパー散策、子どもの遊び場訪問、そして丸亀市役所の訪問です。

スーパー散策

新鮮市場きむら

初めて香川に来たとき、この新鮮市場きむらを訪れて感動しました。
何がすごいって、新鮮な魚がズラリと並んでいることです。

f:id:edosha:20170613075207j:plain:w400

今回はタイとカンパチの刺し身を購入。

f:id:edosha:20170613075225j:plain:w400

めちゃくちゃ美味しかったです。
こんな美味しい地元産の魚が安く買えるなんて、本当に贅沢ですね!!
きむら、好きになりました。

子どもの遊び場

飯山総合学習センター

f:id:edosha:20170609125908p:plain:w400

飯野山がよく見える位置に、この飯山総合学習センターはありました。
図書館はどんな感じかなと思って入ってみたら、なんと子どもの遊び場が!!

小さな児童館のような感じでしたが、なんと土日もやっているとのこと!
これはポイント高いです。
図書館も行けて、遊び場も行けるなんて最高です!
ここもとても気に入りました。

丸亀市役所で移住相談

最後に、丸亀市役所に行って、移住や子育て支援の情報について伺いました。
同じ香川県の中でも、こういった支援メニューはかなり違いがあることがわかりました。

たとえば子育て中に家事まで手が回らないことってかなりあると思うのですが、
そういうときにホームヘルパーを格安でお願いできる制度があります。

丸亀市の子育てホームヘルプサービス
三木町の子育てホームヘルプサービス

対象者、値段、利用可能な回数とすべて違っています。
それ以外にも一時預かりなどにも違いがあるようです。

これはもうまさにその人次第というか、何を大事にするかということになってくるのですが、
個人的には三木町の支援メニューのほうが当てはまる部分が多いと感じました。

丸亀市まとめ

飯野山、スーパー、そして子どもの遊び場で考えると最高です。
ただし、移住や子育て支援といった部分では、完全に理想的とまではいえませんでした。

 三豊市編でも書きましたが、

「自分が何を大切にしたいのか」

これ次第なんだ、ということを再認識しました。

そしてまとめ

長かった移住体験シリーズは、次回のまとめで最後になります。
いろいろまわってみて、結局どうだったのか。
自分的な振り返りにもできればと思っています。

香川県移住体験ツアーシリーズ