エントリー

NanoPi NEOのサーバ化(ソフトウェア)

分散移行したいサーバのセットアップを実施して1W問題なく稼働した

WS20210904_001.png

更に追加もあるが,まずは移行を完了とする

セットアップ内容は以下に記録(色付きは追記分

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日間)

WS20210904_003.png

 

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対応の設定を予定

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed