Raspberry Pi Zero WにSORACOM Airの設定をする

f:id:shima36:20200621174752j:plain
USB モデム エイビット AK-020

Raspberry Pi Zero WでSORACOM Airの設定をしていきます。
USB モデムはAK-020を使用しました。

AK-020モデムのドライバをインストールするのですが、
SORACOMでスクリプトを用意してくれているので、
それを実行するだけで使えるようになります。
とても便利です。

dev.soracom.io

AK-020のランプが点滅状態に変われば接続完了です。
点滅状態に変わらなければ、SORACOMのユーザーコンソールでSIMカードを有効化しているか確認しましょう。

Raspberry Pi Zero W 初期設定

f:id:shima36:20200621164240j:plain
Raspberry Pi Zero W

SDカードにOSイメージを書き込みます。
Raspbian busterを使いました。

ディスプレイ無しで使えるようにしていきます。
書き込みが終わったら、WindowsでSDカードの中身を見ます。
以下の通り、SSHを有効にします。
Raspberry Pi 4Bの解像度設定(VNC接続) - shima36’s blog


WiFiの設定をしていきます。
bootドライブに「wpa_supplicant.conf」というファイルを作るといいらしいのですが、
設定につまずいたので設定例をのせます。
「wpa_supplicant.conf」の中身は以下です。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="自分のルーターのSSID"
psk="自分のルーターのパスワード"
}

Windowsのメモ帳を使ってファイルを作ったのですが、改行コードがWindowsの「CR+LF」になってしまいました。
今回はLinuxなので「LF」で保存したいです。
なので、TeraPadで改行コードが「LF」のファイルを作りました。

なお、メモ帳の最新バージョンでは、改行コードがちゃんと認識されるようです。
Windowsでおなじみのテキストエディタ「メモ帳」が進化、何が変わるのか? - GIGAZINE
元のファイルが「LF」なら、編集しても「LF」のまま保存してくれます。
ただ、新規作成すると指定できなくて「CR+LF」になってしまうようです。

f:id:shima36:20201214230709p:plain
Windowsのメモ帳
ちゃんとUnix(LF)と認識していますね。


bootドライブに書き込んだら、
SDカードをRaspberry Pi Zero Wに挿して起動します。
しばらくすると、ルータの設定画面でIPアドレスが割り振られているのを確認できると思います。
SSHでの接続も可能になっているはずです。


SSH接続します。
raspi-configで以下を設定していきます。

pi@raspberrypi:~ $ sudo raspi-config

ロケール設定
 住んでるのが日本だからといって、[en_GB.UTF-8 UTF-8]のチェックを外してしまうと、キーボードレイアウト設定でエラーが出てしまいます。
タイムゾーン設定
・キーボードレイアウト設定

以下を参考にしました。
https://cloudpack.media/46603


<参考>

ayame.space

cloudpack.media

Raspberry Pi 4BにSoftEtherをインストール(3)

SoftetherVPNサーバーマネージャで設定後、
(tap_vlan仮想アダプタを作成。詳細は別にまとめます。)

tap_vlanが作成されているのが確認できます。

pi@raspberrypi:~ $ ifconfig
br0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu  1500
        inet 192.168.7.27  netmask 255.255.255.0  broadcast  192.168.7.255
        inet6 2400:4050:****:****:ac61:b6da:2cfe:8f7  prefixlen  64  scopeid 0x0<global>
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 7856  bytes 1575188 (1.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4332  bytes 749302 (731.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu  1500
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 7872  bytes 1686054 (1.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4332  bytes 749302 (731.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
・・・

tap_vlan: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        ether 5e:cc:**:ae:17:**  txqueuelen 1000  (Ethernet)
        RX packets 17  bytes 846 (846.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 2064 (2.0 KiB)

前回作成したブリッジにtap_vlanを追加します。
最終的に、起動時に自動的に追加されるようにするのですが、
一時的に追加して動作を確認します。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
現在のブリッジの状態

pi@raspberrypi:~ $ brctl show br0
bridge name     bridge id               STP enabled      interfaces
br0             8000.dca6327013e4       no              eth0

タップデバイスの名前の確認

pi@raspberrypi:~ $ ip tuntap
tap_vlan: tap

ブリッジにtap_vlanを追加

pi@raspberrypi:~ $ sudo brctl addif br0 tap_vlan

追加後のブリッジの状態

pi@raspberrypi:~ $ brctl show br0
bridge name     bridge id               STP enabled      interfaces
br0             8000.5ecc74ae170e       no              eth0
                                                        tap_vlan

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

起動時に自動的に追加されるようにする。
以下を参考にしました。

SoftEherVPNでTAPデバイスとのブリッジが失敗する場合 - Qiita

pi@raspberrypi:/usr/local/bin/vpnserver $ sudo nano vpnserver-tap-enable.sh

下記を記入。「sleep 5」の部分、最初は「sleep 1」だったが、ブリッジが組まれないことが多かったため、「sleep 5」にした。
現在は、何回再起動しても問題なくブリッジが組まれている。
Softetherのタップとの起動タイミングングの問題か?

#!/bin/sh
TAP_DEVICE=tap_vlan
BR_STATUS=`/sbin/brctl show br0 | grep ${TAP_DEVICE} | wc -l`
LOOP_CNT=0

while [ $BR_STATUS = 0 ]
do
        sleep 5
        /sbin/brctl addif br0 ${TAP_DEVICE}
        if [ $? -ne 0 ]; then
                break
        fi
        LOOP_CNT=$(( LOOP_CNT + 1 ))
        if [ ${LOOP_CNT} = 10 ]; then
                break
        fi
done

exit 0

vpnserver-tap-enable.sh

pi@raspberrypi:/usr/local/bin/vpnserver $ ls
Authors.txt               Makefile                               server_log
backup.vpn_server.config  packet_log                             vpncmd
chain_certs               ReadMeFirst_Important_Notices_cn.txt   vpnserver
code                      ReadMeFirst_Important_Notices_en.txt   vpn_server.config
hamcore.se2               ReadMeFirst_Important_Notices_ja.txt   vpnserver-tap-enable.sh
lang.config               ReadMeFirst_License.txt
lib                       security_log

pi@raspberrypi:/usr/local/bin/vpnserver $ sudo chmod +x  vpnserver-tap-enable.sh
pi@raspberrypi:/usr/local/bin/vpnserver $ sudo nano  /etc/systemd/system/softether-vpn.service

下記を記入

[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target

[Service]
ExecStart=/usr/local/bin/vpnserver/vpnserver start
ExecStop=/usr/local/bin/vpnserver/vpnserver stop
ExecStartPost=/usr/local/bin/vpnserver/vpnserver-tap-enable.sh
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

softether-vpn.service

.serviceを編集したので、念のためdaemon-reloadする。

pi@raspberrypi:~ $ sudo systemctl daemon-reload
pi@raspberrypi:/usr/local/bin/vpnserver $ sudo reboot

再起動後、自動的に追加されているか確認する。

pi@raspberrypi:~ $ brctl show
bridge name     bridge id               STP enabled      interfaces
br0             8000.5ecc74ae170e       no              eth0
                                                        tap_vlan

ブリッジが成功するとSoftether VPNサーバー側のIPテーブルに以下のように、Raspberry Piが接続されているLAN内のIPアドレスが列挙されてくる。ここにIPが出てきていなければPINGも飛ばない。

SoftEther IPアドレステーブル

ちなみに、ブリッジされてないと以下のようになる。192.168.21.1などLAN内のIPが出てこない。

SoftEther IPアドレステーブル

Raspberry Pi 4BにSoftEtherをインストール(2)

SoftEtherのインストールをしていきます。
<現在のディレクトリ>

pi@raspberrypi:~ $ pwd
/home/pi

SoftEtherのホームページからリンクを調べて、ダウンロード。

pi@raspberrypi:~ $ wget https://jp.softether-download.com/files/softether/v4.42-9798-rtm-2023.06.30-tree/Linux/SoftEther_VPN_Server/64bit_-_ARM_64bit/softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz
--2023-10-01 15:46:24--  https://jp.softether-download.com/files/softether/v4.42-9798-rtm-2023.06.30-tree/Linux/SoftEther_VPN_Server/64bit_-_ARM_64bit/softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz
Resolving jp.softether-download.com (jp.softether-download.com)... 130.158.75.49
Connecting to jp.softether-download.com (jp.softether-download.com)|130.158.75.49|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8016967 (7.6M) [application/x-gzip]
Saving to: ‘softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz’

softether-vpnserver-v 100%[========================>]   7.65M  1002KB/s    in 67s

2023-10-01 15:47:32 (116 KB/s) - ‘softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz’ saved [8016967/8016967]

ダウンロードされました。

pi@raspberrypi:~ $ ls -a
softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz

解凍します。

pi@raspberrypi:~ $ tar -zxvf  softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz
vpnserver/
vpnserver/Makefile
vpnserver/.install.sh
・・・
vpnserver/lib/libz.a
vpnserver/lib/License.txt
vpnserver/hamcore.se2

ディレクトリ「vpnserver」が作られました。

pi@raspberrypi:~ $ ls -a
softether-vpnserver-v4.42-9798-rtm-2023.06.30-linux-arm64-64bit.tar.gz
vpnserver

ホームディレクトリから移動します。

pi@raspberrypi:~ $ sudo mv vpnserver/ /usr/local/bin/
pi@raspberrypi:~ $ cd /usr/local/bin/
pi@raspberrypi:/usr/local/bin $ ls -a
.  ..  vpnserver
pi@raspberrypi:/usr/local/bin $ cd vpnserver/

コンパイルします。

pi@raspberrypi:/usr/local/bin/vpnserver $ sudo make
--------------------------------------------------------------------
SoftEther VPN Server (Ver 4.42, Build 9798, ARM 64bit) for Linux Build Utility
Copyright (c) SoftEther Project at University of Tsukuba, Japan. All Rights Reserved.
--------------------------------------------------------------------
Copyright (c) all contributors on SoftEther VPN project in GitHub.
Copyright (c) Daiyuu Nobori, SoftEther Project at University of Tsukuba, and SoftEther Corporation.
・・・(途中略)・・・
https://127.0.0.1:5555/
or
https://ip_address_of_the_vpn_server:5555/
This HTML5 page is obviously under construction, and your HTML5 development contribution is very appreciated.
--------------------------------------------------------------------
make[1]: Leaving directory '/usr/local/bin/vpnserver'

自動起動するようにします。

pi@raspberrypi:/usr/local/bin/vpnserver $ cd /etc/systemd/system/

pi@raspberrypi:/etc/systemd/system $ sudo nano softether-vpn.service

以下を記入

[Unit]
Description=Softether VPN Server Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/local/bin/vpnserver/vpnserver start
ExecStop=/usr/local/bin/vpnserver/vpnserver stop
Restart=on-abort
WorkingDirectory=/usr/local/bin/vpnserver/
ExecStartPre=/sbin/ip link set dev eth0 promisc on

[Install]
WantedBy=multi-user.target
GNU nano 5.4 softether-vpn.service
pi@raspberrypi:/etc/systemd/system $ sudo systemctl  daemon-reload
pi@raspberrypi:/etc/systemd/system $ sudo systemctl start  softether-vpn.service

pi@raspberrypi:/etc/systemd/system $ sudo systemctl status  softether-vpn.service
● softether-vpn.service - Softether VPN Server Service
     Loaded: loaded (/etc/systemd/system/softether-vpn.service; disabled; vendor prese>
     Active: active (running) since Sun 2023-10-01 16:55:34 JST; 5s ago
    Process: 968 ExecStartPre=/sbin/ip link set dev eth0 promisc on (code=exited, stat>
・・・

最後にサービス自動起動を有効にしておきます。

pi@raspberrypi:/etc/systemd/system $ sudo systemctl enable  softether-vpn.service
Created symlink  /etc/systemd/system/multi-user.target.wants/softether-vpn.service → /etc/systemd/system/softether-vpn.servic
e.

Raspberry Pi 4BにSoftEtherをインストール(1)

Raspberry Pi 4B

これまでRaspberry Pi 3B+でSoftetherを運用してきたが、Raspberry Pi 4Bを購入したので新しく環境を構築する流れをまとめた。

Raspbianのバージョンなどは以下の通り。

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye
pi@raspberrypi:~ $ uname -a
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64 GNU/Linux


最初にネットワークブリッジの設定をしていきます。

<設定前の状態>

pi@raspberrypi:~ $ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.26  netmask 255.255.255.0  broadcast  192.168.7.255
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        inet6 2400:4050:****:****:ac61:b6da:2cfe:8f7  prefixlen  64  scopeid 0x0<global>
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 91258  bytes 24276888 (23.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 42910  bytes 2705329 (2.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

bridge-utilsのインストール

pi@raspberrypi:~ $ sudo apt install bridge-utils
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  bridge-utils
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 37.6 kB of archives.
After this operation, 116 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main arm64 bridge-utils arm64 1.7-1 [37.6 kB]
Fetched 37.6 kB in 0s (95.9 kB/s)
Selecting previously unselected package bridge-utils.
(Reading database ... 37761 files and directories currently installed.)
Preparing to unpack .../bridge-utils_1.7-1_arm64.deb ...
Unpacking bridge-utils (1.7-1) ...
Setting up bridge-utils (1.7-1) ...
Processing triggers for man-db (2.9.4-2) ...


/etc/network/interfacesの編集

pi@raspberrypi:~ $ sudo nano /etc/network/interfaces

#書き込み禁止と出るので再起動してみる。

pi@raspberrypi:~ $ sudo reboot

再度、/etc/network/interfacesの編集

pi@raspberrypi:~ $ sudo nano /etc/network/interfaces

以下を記入

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*

# Bridge interface
auto br0
iface br0 inet dhcp
bridge_ports eth0
GNU nano 5.4 /etc/network/interfaces

再起動します。

pi@raspberrypi:~ $ sudo reboot

ブリッジが作られました。

pi@raspberrypi:~ $ ifconfig -a
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.7.27  netmask 255.255.255.0  broadcast  192.168.7.255
        inet6 2400:4050:****:****:ac61:b6da:2cfe:8f7  prefixlen  64  scopeid 0x0<global>
        inet6 fe80::****:****:eb9b:2e69  prefixlen 64  scopeid  0x20<link>
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 3384  bytes 260004 (253.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 326  bytes 34701 (33.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 3387  bytes 308020 (300.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 326  bytes 34701 (33.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2  bytes 78 (78.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 78 (78.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:**:70:13:**  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions  0

ブログのネタ帳

朝の頭がスッキリしている時にブログのネタが思いつくことがあるかもしれません。

そんなとき私は「Google ToDoリスト」をネタ帳として使っています。

f:id:shima36:20200202152219j:image

起動も早くて、すぐにメモできます。また、サブタスクも作成可能で、内容を詰めるときも便利です。
一番のメリットはマルチプラットフォームであること。
メモした内容は家のPCでも見ることができます。すぐ手の届くところにメモ帳を置ける感じです。

電車での移動中や、歩いてる途中にネタを思い付いてもすぐ立ち止まってメモを取ることができます。

確定申告 ー 寄付金控除(住民税控除)

確定申告の時期になりましたね。
私はいつもe-taxを使用して申請していますが、寄附金控除の画面でいつも迷うので、調べたことをまとめます。

以下のような選択肢があるのですが、
・住所地の都道府県のみが条例により指定した寄附金
・住所地の市区町村のみが条例により指定した寄附金
自分が寄付してる先のホームページにFAQがあるのですが、読んでみてもしっくりこない。
どれにチェックを付けたら良いの?となる。

f:id:shima36:20200126155238p:plain

寄付金控除、政党等寄付金等特別控除の入力

住民税控除の部分に関わってくるのですが、
自分が住んでる都道府県と、寄付先の団体がある都道府県が同じならば、県民税や都民税が控除される可能性があります。 
それを確認するには自分が住んでいる都道府県のホームページで調べなければいけません。

NPOなどの団体は東京都に多いので、
東京都の場合だと「東京都主税局」の「東京都条例指定寄附金一覧」に寄付先の名称が載っていれば、都民税の控除が受けられます。
選択肢の「住所地の都道府県のみが条例により指定した寄附金」は確定です。

個人住民税 | 税金の種類 | 東京都主税局

 

次に、自分が住んでる市区町村と、寄付先の団体がある市区町村が同じならば、市民税が控除される可能性があります。
「○○市 寄附金税額控除」などで検索して、「○○市が条例で指定した寄附金対象一覧」に寄付先の名称が載っていれば、市民税の控除が受けられます。
選択肢の「・住所地の市区町村のみが条例により指定した寄附金」は確定です。

また、都道府県と市区町村の両方に乗っている場合は、
「・住所地の都道府県及び市区町村の両方が条例により指定した寄附金」となります。