はじめに
サーバーを自宅内で建てて、友人に参加してもらおうと思ったことはありませんか?
VPSサーバーを借りてサーバー運営をするのもまた一興ですが、自宅サーバーは初期のハードウェア代を除けば、ランニングコストは電気代とインターネット代だけなのですごく安いと思います(インターネット代は定額だと思うのでかからないに等しい)。
自宅サーバーには1つ注意点があります。それは、一般的に外部ネットワークから自宅内ネットワークへの通信は簡単ではないということです。IT用語辞典 e-Wordsにも記載があるように、ポート開放設定というものが必要になります。
ポート開放は誰でもできるのでしょうか?
一軒家で暮らしている方は一般的にできると思います。でも、借家やマンション暮らしの人はそうでもないかもしれません。 具体的には、自宅内のルーターがインターネットに直接通じているのかという点がポイントになります。
借家やマンション暮らしの場合は、大家さんがネットワークを取りまとめて、その後にインターネットに通じていることがあります。この場合は、ポート開放が難しくなります。
ポート開放ができないときに自宅サーバーにアクセスしてもらう方法にSoftether VPNがあります。本来は、VPNの接続待ちにポート開放が必要なはずなのですが、Softether VPNにはそれが必要ありません。
ただし、Softether VPNをホストするサーバーが別途必要になります。さらに、Softether VPNをホストするサーバーのIPアドレスは別のIPアドレスでなければなりません。同じIPアドレスだと通信ができなくなります。
筆者の環境ではKVMを用いて、Softether VPNをホストするサーバーのIPアドレスを別のものにすることで問題を解決しています。詳しくはまた別の記事で紹介します。
Softether VPN Serverのセットアップ
今回セットアップする対象のサーバーOSは「Ubuntu Server 22.04」です。ビルドする前にスクリプトの一部を変更し、証明書認証を使用できるように変更します。
証明書認証は証明書をインストールしたPCのみが接続可能な認証方式です。パスワード方式はパスワードが分かってしまうと自宅内ネットワークに侵入される危険性があるため、できるだけ使わないほうが良いと思います。
1. 必要なパッケージなどのインストール
*コマンドは1行ずつ実行してください。
sudo apt -y update
sudo apt -y install curl make gcc gzip binutils cmake g++ pkgconf libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev
# Ubuntu 24.04の場合は下記のパッケージは不要
sudo apt -y install chkconfig libc zlib openssl readline ncurses pthread
2. インストール用ファイルのダウンロードと展開
以降の手順は、rootユーザーで行うこと推奨します。
最新バージョンのリンクはSoftether ダウンロード センターにて、下記のように選択することで確認できます。
*コマンドは1行ずつ実行してください。
curl -Ol https://jp.softether-download.com/files/softether/v4.44-9807-rtm-2025.04.16-tree/Source_Code/softether-src-v4.44-9807-rtm.tar.gz
tar zxvf softether-src-v4.44-9807-rtm.tar.gz
3. ソースコードの変更
*コマンドは1行ずつ実行してください。エディタはお好きなものを使用してください。
cd v4.44-9807
nano src/Cedar/Server.c
SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c)
関数が常にfalse
を返すように修正してください。
直し方が分からなければ、SoftEtherVPN に証明書認証を追加するを参照してください。
4. ビルド
*動作中のサーバーサービスのアップデートを行う場合は、ここでサーバーサービスを停止してください。
systemctl stop softether-vpn.service
*コマンドは1行ずつ実行してください。
./configure
make
make install
make install
終了後、/usr
内にvpnserver
フォルダ等が作成されていたら成功です。
5. systemdによる自動起動
必要なファイルのビルドはできましたが、まだサーバーサービスが起動されていません。systemdで自動起動するように構成します。
cd /etc/systemd/system
nano softether-vpn.service
softether-vpn.service
として次の内容を書き込みます。
eth0となっているところについては、実際に使用するネットワークインタフェースの名前に置き換えてください。ip addr show
というコマンドで、正しいIPアドレスが設定されているネットワークインタフェースの名前を確認できます。
[Unit]
Description=Softether VPN Server Service
After=network.target
[Service]
Type=forking
User=root
ExecStart=/usr/vpnserver/vpnserver start
ExecStop=/usr/vpnserver/vpnserver stop
Restart=on-abort
WorkingDirectory=/usr/vpnserver/
ExecStartPre=/sbin/ip link set dev ens1 promisc on
[Install]
WantedBy=multi-user.target
下記の手順で、サーバーサービスを自動起動するように設定し、初回起動を行います。
systemctl enable softether-vpn.service
systemctl daemon-reload
systemctl start softether-vpn.service
下記のコマンドで、サーバーサービスの起動状態を確認できます。active
なら正常に起動しています。
systemctl status softether-vpn.service
サーバーのシェルでの操作はこれで終わりです。公式手順に従って、サーバーの初期設定を行いましょう。