NanoPi NEOのサーバ化(ソフトウェア)
- 2021/09/04 19:35
- カテゴリー:Nano Pi NEO, PC
分散移行したいサーバのセットアップを実施して1W問題なく稼働した
更に追加もあるが,まずは移行を完了とする
セットアップ内容は以下に記録(色付きは追記分)
NTP
先ずは,RTC(DS1307)を使えるようにする(こちらを参考)
# vi /boot/armbianEnv.txt
overlays=usbhost1 usbhost2 i2c0
^^^^ ← 追加
# shutdown -r now
(再起動)
# apt install i2c-tools #i2c-toolsをインストール
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
# lsmod | grep rtc
Noting
# modprobe -c | grep ds1307
# modprobe i2c:ds1307
# lsmod | grep rtc
Noting
# echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
# lsmod | grep rtc
rtc_ds1307 28672 0
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
# ls -l /dev/rtc*
lrwxrwxrwx 1 root root 4 Aug 22 20:46 /dev/rtc -> rtc0
crw------- 1 root root 253, 0 Aug 22 20:46 /dev/rtc0
crw------- 1 root root 253, 1 Aug 22 20:58 /dev/rtc1
# hwclock -r -f /dev/rtc1 #確認
/etc/rc.local に以下を追加
/usr/sbin/modprobe i2c:ds1307
echo 'ds1307 0x68' > /sys/class/i2c-adapter/i2c-0/new_device
ln -f -s /dev/rtc1 /dev/rtc
/usr/sbin/hwclock -s
NTP の設定状況
# timedatectl status
Local time: Mon 2021-08-23 21:08:11 JST
Universal time: Mon 2021-08-23 12:08:11 UTC
RTC time: Mon 2021-08-23 12:08:24
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: inactive
RTC in local TZ: no
NTPを有効化する
# timedatectl set-ntp true
/etc/systemd/timesyncd.confを編集
[Time]
NTP=ntp.nict.jp → https://jjy.nict.go.jp/tsp/PubNtp/index.html
FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
時刻同期デーモンの起動
# systemctl start systemd-timesyncd
時刻同期デーモン自動起動の設定
# systemctl enable systemd-timesyncd
# systemctl is-enabled systemd-timesyncd
RPi-Monitor
ラズパイ用のシステムモニターだが使えるようになっている
CUI
# armbianmonitor -m
GUI
# armbianmonitor -r
Installing RPi-Monitor. This can take up to 5 minutes. Be patient please
...
Now patching RPi-Monitor to deal correctly with H3
Now you're able to enjoy RPi-Monitor at http://192.168.xxx.xxx:8888
注)192.168.xxx.xxx:8888でないと参照できないようだ(IPアドレスが埋め込まれているかと)
常時起動するよう /etc/rc.local に以下を追加
/usr/bin/armbianmonitor -r > /dev/null 2>&1&
モニター表示例)CPU温度表示(2日間)
swap
実装メモリが512MBなので1GB程度のswapを設定する
ストレージがマイクロSDなのでswapパーティーションにする有効性もないためファイルにした
$ free
total used free shared buff/cache available
Mem: 503488 87696 10644 5468 405148 398600
Swap: 251740 0 251740
1GBのファイルを作成
$ sudo dd if=/dev/zero of=/var/swapfile bs=1024 count=1M
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 69.2829 s, 15.5 MB/s
パーミッションを変更
$ sudo chmod 0600 /var/swapfile
mkswapでswapファイルシステムを作成
$ sudo mkswap /var/swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=a4c1207b-65f4-42f3-be63-ea8955257f30
swaponでswap有効化
$ sudo swapon /var/swapfile
$ free
total used free shared buff/cache available
Mem: 503488 88560 9084 5468 405844 397732
Swap: 1300312 0 1300312
/etc/fstabの編集(設定を追加)
$ cat /etc/fstab
UUID=295de8c4-f8a3-40d3-9116-f2318feeed87 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0
$ echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
※)エディタで編集の方が良い
$ cat /etc/fstab
UUID=295de8c4-f8a3-40d3-9116-f2318feeed87 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0
/var/swapfile swap swap defaults 0 0
$
ネットワークインタフェース
現時点での最新のBuster(Armbian_21.05.1_Nanopineo2_buster_current_5.10.34.img を使用)ではMAC addressが可変になっており再起動ごとに変化する
なので,IP addressは固定にする
# armbian-config
static で IP:192.168.xxx.xxx を設定
尚,MAC addressを固定にする安易な方法は,/etc/network/interfaces に以下を追加する
hwaddress ether aa:bb:cc:dd:ee:ff
(追記)
armbian-configで設定してもIPアドレスが固定にならないことがあった(カーネル更新で発生)
/etc/network/interfaces に追記(以下が記述可能)すれば良いようだ
auto eth0
allow-hotplug eth0
iface eth0 inet static
address <IPアドレス>
netmask 255.255.255.0
gateway <ゲートウェイアドレス>
dns-nameservers <DNSアドレス>
interfacesの編集でも不可の場合nmtuiで設定する方法もある
$ sudo nmtui
bind
本機をプライマリDNSとして稼働させる
WAN-IPアドレスはダイナミックなので内部のみ設定する(外部向けは定義できない)
bind9の導入
# apt install bind9 dnsutils ← dig コマンド用
設定ファイル(/etc/bind/named.conf)の編集
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local"; #編集(ファイル名は変更しても良い)
include "/etc/bind/named.conf.default-zones";
オプション設定ファイル(/etc/bind/named.conf.options)
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
// forwarders {
// 0.0.0.0;
// };
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
//BINDの利用を許す範囲
allow-query { localhost; localnets; };
//スレーブDNSのアドレス(内向きDNSの場合は必要ない)
allow-transfer { none; };
//再帰検索を許可する範囲
allow-recursion { localhost; localnets; };
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
//listen-on-v6 { none; };
listen-on-v6 { any; };
//名前解決できないときにモデムに聞きに行く場合は以下
//forwarders { 192.168.xxx.1; };
//名前解決できないときはgoogleのDNSを使う
forwarders { 8.8.8.8; 8.8.4.4; };
version "unknown";
};
# EDNS0 の無効化
# "error (unexpected RCODE REFUSED) ..." 出力の抑止
server 0.0.0.0 {
edns no;
};
# "DNS format error ... invalid response" 出力の抑止
logging {
category resolver { null; };
};
内部向けゾーンファイル(/etc/bind/named.conf.local)
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
#正引きゾーン定義
zone "inoshita.jp" {
type master;
file "/etc/bind/inoshita.jp.lan";
allow-update { none; };
};
#逆引きゾーン定義
zone "xxx.168.192.in-addr.arpa" {
type master;
file "/etc/bind/xxx.168.192.db";
allow-update { none; };
};
正引きゾーン定義ファイル(/etc/bind/inoshita.jp.lan)
$TTL 86400
@ IN SOA ns1.inoshita.jp. root.inoshita.jp. (
2021082801 ; Serial
10800 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS ns1.inoshita.jp.
IN MX 10 mail.inoshita.jp.
router IN A 192.168.xxx.1
nanopi IN A 193.168.xxx.xxx
Cubian IN A 192.168.xxx.xxx
ns1 IN A 192.168.xxx.xxx
mail IN A 192.168.xxx.xxx
home IN CNAME nanopi
www IN CNAME Cubian
逆引きゾーン定義ファイル(/etc/bind/xxx.168.192.db)
$TTL 86400
@ IN SOA ns1.inoshita.jp. root.inoshita.jp. (
2009110101 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
86400 ; Negative Cache TTL
)
IN NS ns1.inoshita.jp.
IN A 255.255.255.0
1 IN PTR router.inoshita.jp.
XXX IN PTR home.inoshita.jp.
XXX IN PTR nanopi.inoshita.jp.
XXX IN PTR ns1.inoshita.jp.
XXX IN PTR www.inoshita.jp.
XXX IN PTR mail.inoshita.jp.
/etc/resolv.conf を編集(起動時に更新されることに注意)
nameserver 192.168.xxx.xxx ← 自身のIPにする
サーバ制御
# systemctl restart bind9
# systemctl status bind9.service
# service bind9 restart(旧)
DHCP
DHCPは isc-dhcp-server を導入する
# apt install isc-dhcp-server
/etc/dhcp/dhcpd.confを編集
#
# Sample configuration file for ISC dhcpd for Debian
#
#
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# option definitions common to all supported networks...
option domain-name "inoshita.jp";
option domain-name-servers 192.168.xxx.xxx, 192.168.xxx.xxx;
default-lease-time 600;
max-lease-time 7200;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
...
#ネットワークアドレスとサブネットマスク指定
subnet 192.168.xxx.0 netmask 255.255.255.0 {
#デフォルトゲートウェイ指定
option routers 192.168.xxx.1;
#サブネットマスク指定
option subnet-mask 255.255.255.0;
#貸し出すIPアドレスの範囲指定
range dynamic-bootp 192.168.xxx.xxx 192.168.xxx.xxx;
}
#固定IP
host WG1200HS {
hardware ethernet aa:bb:cc:dd:ee:ff;
fixed-address 192.168.xxx.xxx;
}
/etc/default/isc-dhcp-serverを編集
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth0"
#INTERFACESv6=""
サーバ制御
# systemctl start isc-dhcp-server
# systemctl status isc-dhcp-server.service
# systemctl enable isc-dhcp-server
ddclient
ddclientはMyDNS未対応なので,今回から以下のシェルスクリプト(mydns.sh)に変更
#!/bin/sh
#
MYDNS_USER='userid'
MYDNS_PASSWORD='password'
#
/usr/bin/wget -O - http://${MYDNS_USER}:${MYDNS_PASSWORD}@ipv4.mydns.jp/login.html
/usr/bin/wget -O - http://${MYDNS_USER}:${MYDNS_PASSWORD}@ipv6.mydns.jp/login.html
exit 0
mydns.shをcron(rooth権限)で実行させる(以下は毎日4時に実行)
# crontab -l
0 4 * * * /usr/local/sbin/mydns.sh > /dev/null 2>&1
注)登録する際は crontab -e
nfs-client
ファイル共有化のため設定
nfsクライアントの導入
# apt install nfs-client
手動でnfsマウント(常時マウントなら/etc/fstabへ追加)
# mount -t nfs Cubian.inoshita.jp:/srv/share /srv/share
マウントを auto 化するためにautofsを導入
# apt install autofs
/etc/auto.masterへ追加
# vi /etc/auto.master
/- /etc/auto.nfs ← 追加行(ファイル名は変更可)
/etc/auto.nfsへマウントディレクトリを記載
# vi /etc/auto.nfs
/srv/share -fstype=nfs,rw Cubian.inoshita.jp:/srv/share
サーバ制御
# systemctl restart autofs
残件
残り,NTPのサーバ化(現在はNTPクライアント),Mailサーバ,UPS対応の設定を予定