この記事からしばらく経ったので、Softether VPNサーバの環境を更新しました。
前提条件
今回はこんな環境にしました。
USBストレージからブートするようにしているので、SDカードはナシです。
Raspberry Pi OS Liteを使うと、初期ユーザが登録されていないのでディスプレイとキーボードをつないでユーザを登録する必要があります。初回起動時にユーザ登録ダイアログが表示されるので画面の指示に従うだけでした。
本当はSSHでセットアップしたかったんだけど、ちょっと面倒な仕様ですね。
Debian12からSoftEther VPNがAPTパッケージに含まれるようになったようなので、aptコマンドで導入可能です。
SoftEtherもDebianもリリースサイクルは長めなので、タイミングによってはだいぶ古いSoftEtherを使う事になりますが、aptでアップデート可能なのはだいぶ楽ですね。
この記事はラズパイにユーザを登録したところから紹介します。
また、過去記事から設定を引き継ぐので初期設定やルーターの設定はこの記事をご参照ください。
必要パッケージのインストール
ブリッジをnetplanで設定するので、aptコマンドで関連パッケージを導入します。
$ sudo apt update
$ sudo apt install softether-server netplan.io openvswitch-switch
ネットワークブリッジの設定
netplanで設定します。
$ sudo vi /etc/netplan/01-br.yaml
01-br.yaml ファイルに下記を入力します。
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
optional: true
bridges:
br0:
addresses: [192.168.1.2/20]
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses: [192.168.0.1,8.8.8.8,8.8.4.4]
interfaces: [eth0]
dhcp4: false
dhcp6: false
link-local: [ipv4]
ラズパイ自身のIPアドレスは 192.168.1.2 にしています。
IPアドレスの構成は適宜変更してください。
次に、下記のコマンドでnetplanの設定を反映します。
$ sudo chmod 600 /etc/netplan/01-br.yaml
$ sudo netplan apply
netplan apply コマンドを実行するとIPアドレスが反映されます。今接続しているIPアドレスから変更になる場合、このタイミングで一旦切断されるので、新しいIPアドレスで接続し直してください。
SoftEther VPN 設定復元
SoftEther VPNの vpn_server.config ファイルは下記コマンドでコピーして、デーモンを再起動します。
このファイルはRaspberry Pi 3Bで使っていたものをコピーします。
$ sudo cp vpn_server.config /var/lib/softether/
$ sudo systemctl restart softether-vpnserver.service
これで設定が復元されたはずです。
クライアントから接続確認して問題なければOKです。
その後… (2024/04/28追記)
aptコマンドでインストールできるSoftether Serverのバージョンは 9674 なので、結構古いよね…
IPsec/L2TP で接続する時、接続できないクライアントもありちょっと支障が出てきたのでパッケージからインストールしたものは削除し、こちらからBuild 9798をダウンロードしてこの記事と同じ方法でインストールしました。
デーモンとして実行する時の vpnserver.service はそのままでは動かなかったので、下記の様にしました。
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
[Service]
Type=forking
User=root
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
WorkingDirectory=/opt/vpnserver/
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target
いじょう!