VPN(Virtual Private Network)は、仮想的な通信トンネルを構成したプライベートネットワークのことで、一言で言うと、通信内容を暗号化しつつ、仮想的にネットワークを接続できる技術です。VPNを使えば通信の安全性が高まったり、自宅にVPNサーバーを設置することで、外にいるのに家のネットワークにつながることができたりします。
これは結構便利でして、家においてあるファイルサーバー(NAS)に外からアクセスしたりするのに私は活用しています。
宅内にVPNサーバを構築するために、本記事ではLinuxディストリビューションのUbuntuに、国産高機能VPNサーバソフト「SoftEther VPN」をインストールする流れを自身のメモを兼ねて記載します。
本記事で使用するバージョンはUbuntu 20.04.3 LTSです
Softether VPNの導入
それでは、最強のVPNソフトウェア「Softether VPN」を導入しましょう。
仮想ブリッジのネットワーク設定
Linuxにはネットワーク仕様の問題(欠陥?!)があるそうです
Linux オペレーティングシステム内部での制限事項により、VPN 側 (仮想 HUB 側) からローカルブリッジしている LAN カードに割り当てられる IP アドレスに対して通信を行うことはできません。この制限は PacketiX VPN が原因ではなく、Linux の内部構造に原因があります。もし VPN 側 (仮想 HUB 側) から Linux でローカルブリッジに使用しているコンピュータ本体と、何らかの通信を行いたい場合 (たとえば VPN Server / VPN Bridge サービスと HTTP サーバーサービスを両方動作させており、VPN 側からもサーバーサービスにアクセスさせたい場合) は、ローカルブリッジ用の LAN カードを用意して接続し、その LAN カードと既存の LAN カードの両方を物理的に同じセグメントに接続してください
要約すると、
Linux で Softether を使う場合、VPNサーバーとして待ち受けているインターフェイスに直接接続することが出来なくなってしまう(→そのIFはVPN専用になってしまう)ので、仮想のブリッジデバイスをかませる必要がある
ということです。マシンのIPアドレスを、物理インターフェイス(eth0)ではなく、仮想ブリッジ(br0)に割り当て、br0にeth0とVPN仮想HUBをブリッジさせることでこの問題を解決します。何を言っているのかわからなくても問題ありません。とにかく、仮想ブリッジを作成します。
仮想ブリッジに必要なパッケージ bridge-utils をインストールします。
sudo su -
で、rootになります。sudoでも問題ないと思います。
apt -y install bridge-utils
で、ブリッジに必要なパッケージをインストールします。次に、ネットワーク設定をいじります。
以前のUbuntuでは、ネットワークインターフェイスの設定には /etc/network/interfaces に設定を書く方式でしたが、Ubuntu 18.04 以降、Netplanという仕組みが新たに導入され、Ubuntu 20.04以降、 /etc/network/interfaces は使われなくなり、/etc/netplan/ 以下に設定ファイルをyaml形式で書く必要があります。こんな感じのファイルです↓(/etc/netplan/99-config.yaml)
network:
ethernets:
enp0s25:
dhcp4: false
addresses:
- 192.168.0.11/24
gateway4: 192.168.0.1
nameservers:
addresses: [192.168.0.1,8.8.8.8]
version: 2
renderer: networkd
Netplanについてはこの記事が詳しかったです。

この/etc/netplan/99-config.yamlを編集します。
network:
version: 2
ethernets:
enp0s25:
dhcp4: false
dhcp6: false
bridges:
br0:
dhcp4: false
dhcp6: true
interfaces:
- enp0s25
addresses: [192.168.0.11/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses: [192.168.0.1,8.8.8.8]
編集後は、以下のコマンドで適用します。設定をミスった場合ネットワークが切れるので、そうなってもいいように操作手段を確保しておいてください。
sudo netplan apply
これで、enp0s25(物理NIC)とbr0(仮想ブリッジ)をブリッジしたことになります。
念のためRebootします。(多分しなくてもいい)
shutdown -r now
これで、仮想ブリッジデバイスbr0の設定が完了しました。今後は、ネットワークデバイスとしてbr0を使用していくことになります。
参考サイト
https://blog.ymyzk.com/2018/05/raspbian-9-stretch-bridge-interface/
https://qiita.com/manabuishiirb/items/6fb8ff796d8e016f40c6
https://www.feelsogood.life/raspberrypi/raspberry-pi%E3%81%A7vpn%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%EF%BC%88%E3%81%9D%E3%81%AE%EF%BC%91-bridge%E4%BD%9C%E6%88%90%EF%BC%89
http://xn--u9j0md1592aqmt715c.net/raspberry-pi2-vpnserver-part1/
https://maku.blog/p/7q3dnx8/
Softether VPNのダウンロードとコンパイル
Softether VPNのダウンロードページに移動し、
ダウンロードするソフトウェアを選択→SoftEther VPN (Freeware)
コンポーネントを選択→SoftEther VPN Server
プラットフォームを選択→Linux
CPUを選択→Intel x64 / AMD64 (64bit)
の順で選択していき、パッケージをダウンロードします。
ちなみに、執筆当時最新版のリリース日: 2022-11-17 SoftEther VPN Server (Ver 4.41, Build 9782, beta)のリンクをここに貼っておきます。
もしくは、リンクURLからwgetで直接ダウンロードしましょう。
ここから、Ubuntu側の操作になります。インストール作業は、sudoで行うのではなく、rootユーザーにて作業したほうがいいらしいです。(作者が推奨しているらしい?)
sudo su -
cd /root
パッケージを直接ダウンロードして、解凍します。
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.41-9782-beta/softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz
tar xzvf softether-vpnserver-*.tar.gz
ビルドします。
cd vpnserver && make
利用条件に同意するか?といったことを聞かれるので、すべて1で答えていくと、makeが始まります。
Do you want to read the License Agreement for this software ? 1 Did you read and understand the License Agreement ? 1 Did you agree the License Agreement ? 1 ~makeが始まる~
すべてのチェックに合格しました。このシステム上で SoftEther VPN Server / Bridge が正しく動作する可能性が高いと思われます。と出れば成功しています。
出来上がったバイナリを/usr/localに移し、パーミッションを設定します。
cd .. && mv vpnserver /usr/local/ && cd /usr/local/vpnserver/ && chmod 600 * && chmod 700 vpncmd && chmod 700 vpnserver
注意:Softether公式の方法では、chkconfigという自動起動システムをインストールし、init.dに initスクリプトを仕込む方法をとっていましたが、現在では、init.dは古いやり方です。これからの時代は、systemdを使ったサービスとして自動起動させるのが筋です。
参考サイト
https://seasky.blue/weblog/index.php?e=2268
https://qiita.com/t-ken/items/c43865973dc3dd5d047c
https://qiita.com/kumasun/items/6fd9ddafc8ea6278f088
https://cpoint-lab.co.jp/article/201809/5207/
https://rin-ka.net/softether-install/
https://knowhow.hirohiro716.com/?p=922
自動起動設定
自動起動用のスタートアップスクリプトを作成します。下記のような「スタートアップスクリプト」を /etc/systemd/system/vpnserver.service という名前で作成してください。
sudo vi /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target network-online.target
[Service]
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
WorkingDirectory=/usr/local/vpnserver/
ExecStartPost=/bin/sleep 10
Type=forking
RestartSec=3s
[Install]
WantedBy=multi-user.target
その後、 /etc/systemd/system/vpnserver.service のパーミッションを変更します。
chmod 755 /etc/systemd/system/vpnserver.service
作成したサービスを読み込みます。
systemctl daemon-reload
最後に、上記のスタートアップスクリプトが Linux カーネル起動時に、自動的にバックグラウンドで起動するようにします。
systemctl enable vpnserver.service
systemctl start vpnserver.service
これでデーモンとしてvpnserverが起動することになります。
初期設定
次に、vpncmdを使って初期設定をします。Windows版のGUIソフトもあるので、日常的にはそっちを使ったほうがわかりやすくて良いです。初期設定だけvpncmdを使うことにしましょう。
./vpncmd
1 - 3 を選択:1
接続先のホスト名または IP アドレス:(何も入力せずEnter)
接続先の仮想 HUB 名を入力:(何も入力せずEnter)
VPN Server>
VPN Server には、初期状態で “DEFAULT” という名前の「仮想 HUB」が 1 つだけ登録されています。この “DEFAULT” という名前の仮想 HUB を、そのまま使用することもできます。また、この仮想 HUB を削除して別の名前の仮想 HUB を作成し、それを使用することもできます。
とのことですが、新たに仮想HUBを作成します。
VPN Server>HubCreate
作成する仮想 HUB の名前: VPN(何でも良いです)
パスワード: (何も入力せずEnter)
確認入力 : (何も入力せずEnter)
次に、「ローカルブリッジ」の設定を行います。「ローカルブリッジ」の意味と意義は公式マニュアルに書いてありますが、意味がわからなくてもとりあえず設定しておきましょう。(正直なところ私も完全には理解していません)
VPN Server>BridgeCreate VPN /DEVICE:br0 /TAP:no
(「VPN」は先程作成した仮想HUBの名前です)
デフォルトの仮想HUB DEFAULTを削除します。
VPN Server>HubDelete DEFAULT
vpncmdはCtrl+Cで終了させてください。
さて!VPNサーバーの準備ができました。とりあえずUbuntuを再起動しましょう。
shutdown -r now
参考サイト
techblog.clara.jp/2016/04/raspberry-pi-3-model-b_install_and_ssh_connect/
usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi_SSH.html
qiita.com/Cinosura/items/6ab435331ea2b3671a1d
xn--u9j0md1592aqmt715c.net/raspberry-pi2-vpnserver-part1/
www.majishini.net/wp/?p=833
usicolog.nomaki.jp/engineering/raspberryPi/raspberryPi3.htmlhttps://peraichi.com/landing_pages/view/xo6jf
https://blog.ymyzk.com/2018/05/raspbian-9-stretch-bridge-interface/
http://workspacememory.hatenablog.com/entry/2017/11/14/221909
http://nibral.github.io/posts/2016-04-11-vpnserver_on_raspi2/
Windowsから管理する
今後はWindowsから管理マネージャーを通して管理することになります。
Softether VPNのダウンロードページに移動し、
ダウンロードするソフトウェアを選択→SoftEther VPN (Freeware)
コンポーネントを選択→SoftEther VPN Server Manager for Windows
プラットフォームを選択→Windows
CPUを選択→Intel (x86 and x64)
のようにして管理マネージャをダウンロードして、起動してください。
インストーラなしバージョンのURLリンクを張っておきます。
「新しい接続設定」からVPNサーバへの接続設定(IPアドレス)を作成し、「接続」をクリックしてください。
管理者パスワードを変更させられるので、適切に設定します。
コメント