LoginSignup
0
0

More than 3 years have passed since last update.

Beagle Bone Black + Ubuntu 18.04 + dnsmasq セットアップ手順

Last updated at Posted at 2020-03-26

自宅にセカンダリDNSを作った話

社長が言う。

東京都知事も言ってるし、明日から基本テレワークな!

そうと決まればさっさと家に帰る。
しばらく自宅作業なので、ネームサーバーが家に必要(嘘)だよね・・・ってことで、この間作ったセカンダリDNSを作った手順をまとめる。

  • 知識の薄い自分でも色んな方が公開している情報を参考に Ubuntu + dnsmasq のセットアップできたから自分もその情報を公開(還元)しないとな・・・と思ったし。
  • Ubuntu の話だから Raspbian(Raspberry Pi)にも応用できるし。
  • 本音は自分用のメモ。
  • そもそも、Beagle Bone Black 持ってる人ってどれだけいるんだろ?

以降、Beagle Bone Black は BBBと略。

事前準備

Ubuntu 18.04 LTS を BBB にインストール

イメージファイルの入手

以下のサイトをブラウザで開き、eMMC に書き込むための OS イメージを取得。

上記のサイトを開いた後で、 任意の日付/flasher/ とたどるとイメージの一覧が表示される。

今回ダウンロードしたのはこれ。
https://rcn-ee.com/rootfs/2020-03-12/flasher/bone-eMMC-flasher-ubuntu-18.04.4-console-armhf-2020-03-12-2gb.img.xz

イメージファイルをマイクロSDに書き込む

詳細は割愛。
自分は、『balenaEtcher』というソフトウェアを使用。

マイクロSDの内容を書き込む

BBBにマイクロSDを差し込み、通電。
(「マイクロSD裏面のボタン押しながら」って記事も散見するけど、押さなくてもマイクロSDからブートした。)

しばらくすると青色LEDが点滅し始め、インストールが終わると電源が自動で切れる。
この時点で、Ubuntu のインストールは終了。
(LEDが消えない時は、インストールに失敗している時とか。BBBとディスプレイをマイクロHDMIでつないで確認すれば、エラーログとか見えるかも。)

セットアップ

IPアドレス固定

参考URL https://linuxpropaganda.wordpress.com/2018/07/02/static-ip-address-in-ubuntu-18-04-on-beaglebone-black/

BBB起動時は、DHCPサーバからIPを自動取得する。
以下の方法で、IPアドレスを固定化。

まずは、どうにかして BBB の IP アドレスを調査。(DHCPサーバのリース情報とか。)

判明したら、ssh ubuntu@xxx.xxx.xxx.xxx で接続。(パスワードはtemppwd
接続後、以下を実行。(例:IPアドレス=192.168.0.100、サブネットマスク=255.255.255.0、デフォルトゲートウェイ=192.168.0.1)

$ sudo connmanctl
connmanctl> services
*AO Wired                ethernet_d0c5bd5144db_cable
connmanctl> config ethernet_d0c5bd5144db_cable ipv4 manual 192.168.0.100 255.255.255.0 192.168.0.1

ここで切断されるので、再接続(ssh ubuntu@192.168.0.100)後、以下を実行。

$ sudo connmanctl
connmanctl> config ethernet_9059af5cc6c4_cable --nameservers 8.8.8.8 8.8.4.4
connmanctl> quit

以下で確認。

$ cat /etc/resolv.conf 
# Generated by Connection Manager
nameserver 8.8.8.8
nameserver 8.8.4.4

後で dnsmasq 入れるからこの段階では上のでよいけど、このまま Google パブリック DNS で行く&IPv6も使うなら、ネームサーバ指定のコマンドは以下で良いかも。(未検証)

$ sudo connmanctl
connmanctl> config ethernet_9059af5cc6c4_cable --nameservers 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
connmanctl> quit

デフォルトユーザーの名前変更

デフォルトユーザー&パスワードのままだと、セキュリティ的にどうなの?って思うので、変更。

参考URL https://jyn.jp/raspberrypi-username-change/
(参考というか、ほぼそのままです。)

# 仮のユーザ(tmp)を作成する
sudo useradd -M tmp
# tmpユーザをsudoグループに追加(そうしないとsudoが使えない)
sudo gpasswd -a tmp sudo
# tmpユーザのパスワードを設定
sudo passwd tmp
# ログアウトする
exit

tmpユーザーで再接続後、以下。

# usermod -lでユーザ名をubuntuからoreに変更
sudo usermod -l ore ubuntu
# usermod -dでホームディレクトリを/home/ubuntuから/home/oreに変更
sudo usermod -d /home/ore -m ore
# groupmod -nでubuntuグループをoreグループに変更
sudo groupmod -n ore ubuntu
# ログアウト
exit

newpiユーザーで再接続後、以下。

# 仮ユーザを削除(警告的なのが出るかと思いますが、構わず削除して下さい)
sudo userdel tmp
# oreユーザのパスワードを変更
sudo passwd ore

ソフトウェアアップデート

参考URL https://jyn.jp/raspbian-setup/

$ sudo apt update && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean

※日本国内のサーバに接続だと、BBB用のパッケージが無い?感じなので、ミラーサーバ設定はしない。

sudoedit エディタ変更

この後、設定ファイルを変更する操作が多いので、自分の使いやすいエディタでsudoeditできるようにする。
nano好きな方は、デフォルトの sudoedit で nano 起動するから、何も変える必要なし。
Emacs派の方は、vim 個所を emacs に読み替えれば、たぶん大丈夫。(未検証)

Vim インストール

$ sudo apt -y install vim

sudoedit エディタを Vim に変更

参考URL https://linuxfan.info/sudoedit

$ sudo update-alternatives --config editor
alternative editor (/usr/bin/editor を提供) には 3 個の選択肢があります。

  選択肢    パス              優先度  状態
------------------------------------------------------------
* 0            /bin/nano            40        自動モード
  1            /bin/nano            40        手動モード
  2            /usr/bin/vim.basic   30        手動モード
  3            /usr/bin/vim.tiny    15        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2

自動更新

参考URL https://jyn.jp/raspbian-setup/

$ sudo apt install -y unattended-upgrades

日本語化

参考URL https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html

# 日本語言語パックのインストール
$ sudo apt -y install language-pack-ja
# ロケールを日本語に設定
$ sudo update-locale LANG=ja_JP.UTF8
# タイムゾーンをJSTに設定
$ sudo dpkg-reconfigure tzdata
# 日本語マニュアルのインストール
$ sudo apt -y install manpages-ja manpages-ja-dev
# 再起動
$ sudo reboot now

時計同期

参考URL https://qiita.com/tukiyo3/items/c847d443a6d977083de9

$ sudoedit /etc/systemd/timesyncd.conf

以下を入力。

[Time]
NTP=ntp.nict.jp
FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp

入力後、サービス再起動。

$ sudo systemctl restart systemd-timesyncd

その他ソフトインストール

仕事で使うものとか、念のため入れておく。

dig インストール

$ sudo apt -y install dnsutils

他にも使うものあるだろうけど、思い出したら追加しよう。
(BBB の内臓 eMMC の容量に余裕ないから、たぶん何も足さないけど。)

dnsmasq インストール

既にインストール済みなので、使用可能な状態に設定変更。

SoftAp0 の自動生成を停止

BBBは、USBでPC(macも?)に接続すると、USBにIPアドレスを割り当てる。
この辺の設定が /etc/dnsmasq.d/SoftAp0 にあるけれど、邪魔だから無効化する。

参考URL https://groups.google.com/forum/#!topic/beagleboard/H1rFzlj6rV0

# /etc/dnsmasq.dREADME に書いてあるけど、特定の拡張子だと dnsmasq は無視する。
$ sudo mv /etc/dnsmasq.d/SoftAp0 /etc/dnsmasq.d/SoftAp0.dpkg-dist
# 上だけだと、再起動時に SoftAp0 が再生成されるので、以下ファイルを修正する。
$ vim /opt/scripts/boot/am335x_evm.sh

以下(732行目付近のIF文内)を全てコメント化

wfile="/etc/dnsmasq.d/SoftAp0"
echo "interface=usb0" > ${wfile}

if [ "x${USB1_ENABLE}" = "xenable" ] ; then
        echo "interface=usb1" >> ${wfile}
fi

echo "port=53" >> ${wfile}
echo "dhcp-authoritative" >> ${wfile}
echo "domain-needed" >> ${wfile}
echo "bogus-priv" >> ${wfile}
echo "expand-hosts" >> ${wfile}
echo "cache-size=2048" >> ${wfile}
echo "dhcp-range=usb0,${USB0_SUBNET}.1,${USB0_SUBNET}.1,2m" >> ${wfile}

if [ "x${USB1_ENABLE}" = "xenable" ] ; then
        echo "dhcp-range=usb1,${USB1_SUBNET}.1,${USB1_SUBNET}.1,2m" >> ${wfile}
fi

echo "listen-address=127.0.0.1" >> ${wfile}
echo "listen-address=${USB0_ADDRESS}" >> ${wfile}

if [ "x${USB1_ENABLE}" = "xenable" ] ; then
        echo "listen-address=${USB1_ADDRESS}" >> ${wfile}
fi

echo "dhcp-option=usb0,3" >> ${wfile}
echo "dhcp-option=usb0,6" >> ${wfile}

if [ "x${USB1_ENABLE}" = "xenable" ] ; then
        echo "dhcp-option=usb1,3" >> ${wfile}
        echo "dhcp-option=usb1,6" >> ${wfile}
fi

echo "dhcp-leasefile=/var/run/dnsmasq.leases" >> ${wfile}

上記変更後、再起動。

$ sudo reboot now

再起動後、自動生成されていないことを確認。

$ ls -l /etc/dnsmasq.d/
合計 8
-rw-r--r-- 1 root root 211  2月 17  2018 README
-rw-r--r-- 1 root root 391  3月 26 20:42 SoftAp0.dpkg-dist

systemd-resolvedのスタブDNS使用を停止

これをやらないと、dnsmasq がDNSサーバとして外部からの問い合わせに応答しないので、設定変更。

参考URL http://moguno.hatenablog.jp/entry/2018/06/17/155921

$ sudoedit /etc/systemd/resolved.conf

以下に変更。

#DNSStubListener=yes
DNSStubListener=no

修正後、サービス再起動。

$ sudo systemctl restart systemd-resolved

hostsファイル作成

dnsmasq 用に hosts ファイルを作成。

$ sudoedit /etc/hosts.dnsmasq

以下を入力。

192.168.0.1     server1
192.168.0.2     server2
192.168.0.3     server3

dnsmasq設定

*.confファイルのみを設定ファイルと定義

$ sudoedit /etc/dnsmasq.conf

最終行の以下を有効化

# Include all files in a directory which end in .conf
conf-dir=/etc/dnsmasq.d/,*.conf

設定ファイル作成

sudoedit /etc/dnsmasq.d/custom.conf

以下を入力。

interface=eth0
domain-needed
bogus-priv
strict-order
no-resolv
no-poll
server=/jitaku.local/192.168.0.99
server=8.8.8.8
server=8.8.4.4
server=2001:4860:4860::8888
server=2001:4860:4860::8844
local=/jitaku.local/
no-hosts
addn-hosts=/etc/hosts.dnsmasq
listen-address=127.0.0.1
listen-address=192.168.0.100
expand-hosts
domain=jitaku.local
cache-size=1024

以前に作ったプライマリDNSのIPアドレスは 192.168.0.99 で、そいつがDHCPサーバも兼ねているから、ローカルの名前解決はそっちに向けてる。

設定確認

$ sudo dnsmasq --test
dnsmasq: syntax check OK.

サービス再起動

$ sudo systemctl restart dnsmasq

ネームサーバ変更

ローカルの名前解決できるように&自分自身のDNS参照するように、設定変更。

$ sudo connmanctl
connmanctl> services
*AO Wired                ethernet_d0c5bd5144db_cable
connmanctl> config ethernet_9059af5cc6c4_cable --nameservers 127.0.0.1
connmanctl> quit

ホスト名変更

タイミング的にここじゃない気もするけど、ホスト名の変更。

参考URL https://linuxpropaganda.wordpress.com/2018/10/10/beaglebone-black-rename-server-in-ubuntu-server/

hostname 変更

$ sudoedit /etc/hostname

ホスト名を入力する。

dns2

hosts 変更

$ sudoedit /etc/hosts

ホスト名を入力する。

127.0.0.1       localhost
127.0.0.1       dns2 dns2.jitaku.local

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

再起動。

$ sudo reboot now

最後に

BBB は、青色LED x4 が派手で夜中うるさいから、起動時に消えるように細工。

参考URL https://www.limemo.net/blog/2013/11/%E3%83%93%E3%83%BC%E3%82%B0%E3%83%AB%E3%83%9C%E3%83%BC%E3%83%B3%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B-%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6.html

エディタを開いて

$ sudoesit /etc/rc.local

「LEDを消す」内容を追加して

#!/bin/sh -e

echo none > /sys/class/leds/beaglebone:green:usr0/trigger
echo none > /sys/class/leds/beaglebone:green:usr1/trigger
echo none > /sys/class/leds/beaglebone:green:usr2/trigger
echo none > /sys/class/leds/beaglebone:green:usr3/trigger

exit 0

実行権限付けて再起動!

$ sudo chmod +x /etc/rc.local
$ sudo reboot now

以上で、今回のお話終わり。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0