Raspberry Pi(その他のLinuxサーバー)にSoftEther VPN Serverをインストールしても、「VPNクライアント側からVPNサーバーとして稼働しているRaspberry Pi自身のIPアドレスにアクセスできない」という公式HP記載の既知の問題(3.6.11項)を解決するための方法をSoftEther VPN Serverのインストール方法から書きました。
インストールをスキップする場合はブリッジの作成から
この「VPNクライアント側からVPNサーバーとして稼働しているRaspberry Pi自身のIPアドレスにアクセスできない」という問題は、VPNサーバーとファイルサーバーなどを共存させた場合に、「VPNクライアントがファイルサーバーなどにアクセスできない」という問題の原因になります。
環境
ハード: Raspberry Pi 4B
OS: Raspberry Pi OS Lite (64-bit), debian_version11.3, リリース日時2022-04-04
Softether VPN Server: Ver 4.38, Build 9760, rtm
ネットワーク: Raspberry PiにはDHCPでIPアドレスを割り当てる
ユーザー名: pi
SoftEther VPNのインストール
公式ダウンロードページにアクセスして以下を選択
- コンポーネント: SoftEther VPN Server
- プラットフォーム: Linux
- CPU: ARM 64bit (64bit)
以下、Raspberry Piのターミナル
ホームディレクトリにファイルをダウンロードする
wget -P /home/pi [先ほどコピーしたダウンロードリンクのURL]
ダウンロードしたファイルを解凍
tar xzvf /home/pi/softether-vpnserver-[バージョンによって異なる]-linux-arm64-64bit.tar.gz -C /home/pi
解凍したディレクトリ内に移動
cd /home/pi/vpnserver
実行可能ファイルの生成
make
ホームディレクトリに戻る
cd /home/pi
配置
sudo mv vpnserver /usr/local
配置先に移動
cd /usr/local/vpnserver
パーミッション変更
sudo chmod 600 * sudo chmod 700 vpncmd sudo chmod 700 vpnserver
動作チェック(The command completed successfully.と出ればOK)
./vpncmd 3 check exit
自動起動の設定
スクリプト作成
sudo vi /etc/systemd/system/vpnserver.service
以下を貼り付け
/etc/systemd/system/vpnserver.service[Unit] Description=SoftEther VPN Server After=network.target network-online.target [Service] User=root ExecStart=/usr/local/vpnserver/vpnserver start ExecStop=/usr/local/vpnserver/vpnserver stop Type=forking RestartSec=3s WorkingDirectory=/usr/local/vpnserver/ ExecStartPre=/sbin/ip link set dev eth0 promisc on [Install] WantedBy=multi-user.target
サービスの自動起動を有効化
sudo systemctl enable vpnserver.service
再起動
sudo reboot
起動しているか確認
systemctl status vpnserver
正常に起動している場合の実行結果
● vpnserver.service - SoftEther VPN Server Loaded: loaded <省略> Active: active (running)<省略> <省略>
サーバーの設定
サーバー管理マネージャー(Softether VPN Server Manager for Windows OR Mac OS X)でサーバー管理画面に入る
新しいパスワードを聞かれるので設定
色々聞かれるので必要なものは設定(VPN Azure 設定, IPsec / L2TP 設定など)
ブリッジの作成
ブリッジインターフェースを作成するためのツールをインストール
sudo apt install bridge-utils
ブリッジインターフェースを作成
sudo brctl addbr br0
以下、サーバー管理マネージャー
ネットワークインターフェースの設定
ネットワークインターフェースの設定ファイルを開く
sudo vi /etc/network/interfaces
以下を追記
auto eth0 iface eth0 inet static address 0.0.0.0 auto br0 iface br0 inet dhcp bridge_ports eth0
起動時に自動的にブリッジ接続する
vpnserverの起動後、tapデバイスをbr0に接続するサービスを作成していきます。
ファイルを作成
sudo vi /etc/systemd/system/bridge-softether.service
以下を貼り付け
[Unit] Description=Bridge tap_softether to br0 After=vpnserver.service [Service] User=root Restart=on-failure RestartSec=3s ExecStart=/usr/sbin/brctl addif br0 tap_softether [Install] WantedBy=multi-user.target
サービスを有効化
sudo systemctl enable bridge-softether
再起動
sudo reboot
動作確認
Q, br0とtap_softetherはありますか?
ifconfig
A, 正常な実行結果
br0:<省略> <省略> eth0:<省略> <省略> lo:<省略> <省略> tap_softether:<省略> <省略>
Q, br0にeth0とtap_softetherがブリッジされていますか?
brctl show br0
A, 正常な実行結果
bridge name bridge id STP enabled interfaces br0 <省略> no eth0 tap_softether
Q, 起動時に自動的にブリッジ接続できていますか?
systemctl status bridge-softether
A, 正常な実行結果
● bridge-softether.service - Bridge tap_softether to br0 Loaded: loaded <省略> Active: inactive (dead) <省略> <省略>
これで、VPNクライアント側からVPNサーバーとして稼働しているRaspberry Pi自身のIPアドレスにアクセスできるようになります。
参考資料
- 7.3 Linux へのインストールと初期設定 - SoftEther VPN プロジェクト
- Raspberry Piで作るSoftEther VPNの環境 | chibashi's note
- Softether on Raspberry Pi において、自分自身にアクセス - show log include yuh
- SoftEtherで自分自身に接続する方法 · Nutty Niche Needs / N3
- ブリッジする時の /etc/network/interfaces 案 - みかづきの色々
- vyattaラボ | ubuntuでブリッジを作成
- 自作したシェルスクリプトを Linux の systemd サービスとして起動する方法 | ゲンゾウ用ポストイット