準備
Raspberry PiのためにmicroSDにOSを焼きます。LinuxマシンにmicroSDを刺してから dmesg
を実行すると...
[118926.860993] scsi 6:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS
[118926.861895] sd 6:0:0:0: Attached scsi generic sg2 type 0
[118927.528729] sd 6:0:0:0: [sdb] 30199808 512-byte logical blocks: (15.5 GB/14.4 GiB)
[118927.529769] sd 6:0:0:0: [sdb] Write Protect is off
[118927.529774] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[118927.532208] sd 6:0:0:0: [sdb] No Caching mode page found
[118927.532217] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[118927.554698] sdb: sdb1
[118927.558385] sd 6:0:0:0: [sdb] Attached SCSI removable disk
と表示されたのでデバイスは/dev/sdb
となります。ここにRaspberry Pi OSを焼きます。
# unzip -p 2021-05-07-raspios-buster-armhf-lite.zip 2021-05-07-raspios-buster-armhf-lite.img | dd of=/dev/sdb bs=65536 conv=sync oflag=direct status=progress
1873543168 bytes (1.9 GB, 1.7 GiB) copied, 144 s, 13.0 MB/s
28608+0 レコード入力
28608+0 レコード出力
1874853888 bytes (1.9 GB, 1.7 GiB) copied, 144.126 s, 13.0 MB/s
次にmicroSDのブートパーティションにssh
という空のファイルを作成します。
# mount /dev/sdb1 /mnt
# touch /mnt/ssh
# umount /mnt
準備は以上です。
Raspberry Piの初期設定
先ほど焼いたmicroSDカードをRaspberry Piに差し込んでブートします。しばらく待つとsshサーバーが起動するので接続します。
ホスト名はrasbperrypi.local
で、ユーザーとパスワードはraspberry
とpi
です。
いくつか設定します。
swapの無効化
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile
$ sudo swapoff -a
raspi-configの実行
$ sudo raspi-config
を実行して
- Localisation Options/Timezoneを
Asia/Tokyo
に - Advanced Options/Network Interface Namesを
Yes
に
します。
ホスト名の変更
ここではホスト名をvpnserverpi
にします。二つのファイルを編集します。
/etc/hostname
内のraspberrypi
をvpnserverpi
に変更/etc/hosts
内のraspberrypi
をvpnserverpi
に変更
ソフトウェアのアップデート
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
できたら再起動しておきます。
$ sudo reboot
SoftEther VPN Serverの導入
再度Raspberry Piにログインします。先ほどホスト名を変更したのでログイン先はvpnserverpi.local
になります。
SoftEther ダウンロード センターからSoftEther VPN ServerのLinux/ARM EABI(32bit)をダウンロードしインストールします。
今回はVer 4.34, Build 9745, rtm
を使用しています。
インストール先は/opt/vpnserver
です。
$ sudo bash
# wget -O- https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-arm_eabi-32bit.tar.gz | tar xzvf -
# cd vpnserver/
# make
...
# cd ..
# mv vpnserver /opt
# cd /opt/vpnserver/
# chmod 600 *
# chmod 700 vpncmd
# chmod 700 vpnserver
ネットワークインターフェイス名の確認
Raspberry PiのネットワークI/Fの名前を確認します。
# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enxb827eb764381: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether ca:fe:de:ad:be:ef brd ff:ff:ff:ff:ff:ff
名前はenxb827eb764381
のようです。
起動用ファイルを用意
以下の内容で/etc/systemd/system/vpnserver.service
を作成します。
リモートワーク実現のためSoftEther VPNを利用したVPNサーバを作ってみた
を参考にさせてもらいました。
環境に合わせてネットワークI/F名を変更する部分があります。
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
WorkingDirectory=/opt/vpnserver
ExecStartPre=/bin/ip link set dev enxb827eb764381 promisc on
KillMode=process
Restart=on-abort
[Install]
WantedBy=multi-user.target
それでは起動させてみましょう。
# systemctl start vpnserver
# systemctl status vpnserver.service
...
Active: active (running) since Thu 2021-08-12 11:24:02 JST; 5s ago
...
# systemctl enable vpnserver.service
Created symlink /etc/systemd/system/multi-user.target.wants/vpnserver.service → /etc/systemd/system/vpnserver.service.
うまく動いているようです。
SoftEther VPN Serverの設定
設定です。次のコマンドを発行します。
- ブリッジ用TAPデバイスの作成
- ユーザー
vpnser
の作成 - ユーザー
vpnser
のパスワードをvpnuser-password
に設定 - VpnAzureの使用を開始
- 動作ステータスの表示
一括で実行しましょう。
# cat <<EOF | ./vpncmd localhost: /server
BridgeCreate DEFAULT /DEVICE:enxb827eb764381 /TAP:yes
Hub DEFAULT
UserCreate vpnuser /group:none /realname:none /note:none
UserPasswordSet vpnuser /password:vpnuser-password
SecureNatEnable
VpnAzureSetEnable yes
ServerStatusGet
DynamicDnsGetStatus
VpnAzureGetStatus
EOF
コマンドを実行すると以下のようなステータスが表示されます。
ServerStatusGet command - Get Current Server Status
Item |Value
----------------------------------------------+-------------------------
Server Type |Standalone Server
Number of Active Sockets |23
Number of Virtual Hubs |1
Number of Sessions |0
Number of MAC Address Tables |1
Number of IP Address Tables |1
Number of Users |1
Number of Groups |0
Using Client Connection Licenses (This Server)|0
Using Bridge Connection Licenses (This Server)|0
Outgoing Unicast Packets |282 packets
Outgoing Unicast Total Size |11,844 bytes
Outgoing Broadcast Packets |2 packets
Outgoing Broadcast Total Size |122 bytes
Incoming Unicast Packets |282 packets
Incoming Unicast Total Size |11,844 bytes
Incoming Broadcast Packets |566 packets
Incoming Broadcast Total Size |34,526 bytes
Server Started at |2021-08-12 (Thu) 11:36:51
Current Time |2021-08-12 12:09:49.035
64 bit High-Precision Logical System Clock |1978014
The command completed successfully.
DynamicDnsGetStatus command - Show the Current Status of Dynamic DNS Function
Item |Value
----------------------------------------+--------------------------------------
Assigned Dynamic DNS Hostname (Full) |vpn▒▒▒▒▒.softether.net
Assigned Dynamic DNS Hostname (Hostname)|vpn▒▒▒▒▒
DNS Suffix |.softether.net
Global IPv4 Address |▒▒.▒▒.▒▒.▒▒
Global IPv6 Address |▒▒:▒▒:▒▒:▒▒:▒▒:▒▒:▒▒:▒▒
The command completed successfully.
VpnAzureGetStatus command - Show the current status of VPN Azure function
Item |Value
---------------------------------------------------+-------------------------
VPN Azure Function is Enabled |Yes
Connection to VPN Azure Cloud Server is Established|Yes
Hostname of this VPN Server on VPN Azure Service |vpn▒▒▒▒▒.vpnazure.net
The command completed successfully.
接続するために必要なホスト名などが確認できます。
良さそうなのでVPNサーバーの管理者アカウントにパスワードを設定しましょう。
# ./vpncmd localhost: /server /cmd ServerPasswordSet <admin-password>
その他おすすめの設定
RaspberryPi のユーザー名とパスワードを変更しておきましょう。
参考サイト: [Raspbian]ユーザ名変更の個人的に「正しい」と思うやり方
[おわり]