なまこマンの毎日ゲーム宣言!

趣味のガジェット弄りとゲームとプログラミングの備忘録

「なまこマンの毎日ゲーム宣言!」へようこそ!

趣味のガジェット弄りとゲームとプログラミングの備忘録的なブログです。メインブログでの活動の合間に、週1本~月1本のペースで記事を投稿中です。

また、このブログにはGoogle Adsenseによる広告を導入しております。

このブログについて
(ブログ紹介・プライバシーポリシー・お問い合わせ)

カテゴリー
更新情報

2025/11/09 ブログのデザインを大きく変更しました。

2025/11/08 Googleアドセンスを導入しました。

メインブログ

namakoman.com

食べ歩き、道の駅巡り、スーパー銭湯巡り、名古屋暮らしがテーマのメインブログ「なまこマン満腹宣言!」も併せてよろしくお願いいたします。

SoftEther VPNで自宅ファイルサーバー「NAMAS」に遠隔アクセス!

ミニPCで作った自作ファイルサーバー「NAMAS」VPNサーバーをインストールして、外出先からもファイルサーバー内のファイルにアクセスできる環境を整えました。

数あるVPNサービスの中から、今回は無料で使えるうえに、国産サービスゆえインターフェースも日本語に対応しているSoftEtherを選択しました。SoftEtherはある程度「わかっている」人向けのツールといった感じで、最初は取っつきづらかったのですが、結果的にこのツールには僕の環境に適した機能が搭載されていたので、選んで正解でした。

今回の記事では主に、SoftEther VPNサーバーの構築と、スマホLinuxで使用可能な各種VPNクライアントによるVPNサーバーへのアクセス方法を解説しています。さらに、その過程で発生した「賃貸物件なのでポート開放ができない」「ファイルサーバーへのVPN接続に成功したのに、SMB共有フォルダにアクセスできない」といった問題への対処方法も解説しています。

前回のおさらい

namakoman.hatenablog.jp

スマホのストレージを埋める大量のファイル(主に写真)の整理と、デバイス間でのファイル(主に写真)の共有のために、ジャンクのミニPCにUbuntuをインストールし、疑似的なファイルサーバーに仕上げました。UbuntuにポータブルSSDをマウントし、その中に作成したディレクトリをSambaでSMB共有フォルダに設定することで、同一ネットワーク内の別端末からアクセス可能となります。

ただ、スマホの画像を全部ファイルサーバーに仕舞ったら、いざ出先で、昔撮った写真が必要な時(主にSNS投稿時ですが)にアクセスできないという問題があります。なので、VPN経由でファイルサーバーにアクセスし、いつでも必要な写真を取得できるようにしたいです。そのためにはファイルサーバー側にVPNサーバーを、普段使いの端末スマホ、PC、タブレット側にVPNクライアントを入れる必要があります。

使用端末のOSは以下の通りです。

ファイルサーバー、タブレットUbuntu24.04
スマホAndroid14
PC:Windows11 Home

SoftEther VPNサーバー初期設定

まずはファイルサーバーUbuntu公式サイトからSoftEther VPNサーバーをダウンロードします。今回はLinux版(Intel x64/AMD64)をインストールしました。

インストールまでの手順は「ドキュメント>SoftEther VPN マニュアル>7. VPN Server の導入>7.3 Linuxへのインストールと初期設定」の記載内容に倣えばOKです。リンク先に書かれている手順をかいつまんで箇条書きにすると、以下の通りとなっています。

・ダウンロードしたtar.gzを解凍
・ホームディレクトリに生成されたフォルダ~/vpnserverに入り、makeでコンパイル
コンパイル完了後、sudo mv ~/vpnserver /usr/local
・/usr/local/vpnserverに入り、chmod 600 *、chmod 700 vpncmd、chmod 700 vpnserver
・vpnserverがLinux起動時にバックグラウンドで起動するようにスタートアップスクリプト(/opt/vpnserver.sh)を作成
・/opt/vpnserver.shをsystemdに登録

SoftEther VPNサーバー仮想HUB設定

前項はSoftEtherVPNサーバーそのものをファイルサーバー起動と同時に自動実行するための設定です。ここからは、起動しているファイルサーバー内に接続設定と仮想HUBを作成し、VPNクライアントからアクセスできる環境を整えていきます。

Linuxから設定しようとすると、コマンド(vpncmd)を叩かなければならないのですが、ここで朗報です。前項の初期設定が終わっていれば、同一ネットワーク上の別PCからファイルサーバーにアクセスし、SoftEtherVPNサーバー接続設定の管理ができます。

なので、ここからの作業はメインPCのWindows11で行います。前述のSoftEther公式サイトより、SoftEtherVPNサーバー管理マネージャをインストールします。Windowsからなら、GUIアプリで操作可能です。

「新しい接続設定」から、接続設定名、ホスト名(ファイルサーバーのローカルIP)を入力します。それ以外は初期設定でOKです。

初回接続のタイミングで、ファイルサーバーの管理者パスワードを設定します。

VPNサーバーに、VPN接続のための仮想HUBを作成します。仮想HUB名と、管理用パスワードを設定します。

そして、VPNクライアントが仮想HUBに接続するためのユーザーを作成します。

今回はパスワード認証でユーザーを作成しました。ユーザー名と、認証用のパスワードを設定します。

ダイナミックDNS設定からホスト名を設定します。ホスト名は初期値だと「vpn〇〇〇〇.softether.net」のような形なので、覚えていられる任意の文字列を設定しましょう。

VPNクライアントからの接続のために、OpenVPN/MS-SSTP設定からMS-SSTPサーバー機能を、VPN Azure設定からVPN Azureを有効にします。

なお、VPNクライアントがVPNサーバーに接続するためには、ここからさらに、VPNサーバーのLANカードを対象にローカルブリッジを作る必要もあるのですが、それについては後述します。

VPNクライアントの設定

Windows

SoftEtherの公式サイトから、クライアントをインストールすればOKです。GUI操作できます。

ホスト名DDNSホスト名もしくはVPN Azureホスト名)を入力し、対象となるポートを指定の上、ユーザー認証のところに前項で仮想HUBに設定したユーザー名とパスワードを入力すると、VPNサーバーに接続できます。

Android

SoftEther公式サイトにはAndroidに標準搭載されているL2TPVPN接続してちょんまげ(意訳)」と書いてあるのですが、その機能はAndroid12で廃止されています。それを踏まえてAndroidL2TP廃止されちゃったから、代わりにOpenVPNで対応してちょ(意訳)」とも書いてあるのですが…。

OpenSSTPクライアントアプリ経由で普通に接続可能です。

ホスト名DDNSホスト名もしくはVPN Azureホスト名)、仮想HUBに設定したユーザー名、パスワードを入力のうえ、接続を試行します。接続に成功すると、画面右上のステータスバーに鍵マークが表示されます。

Ubuntu

SoftEtherクライアントはLinux版もあるのですが、操作はCUIです。試してみましたが最後まで使いこなすことができなかったので、代わりにGNOMESSTPクライアントを使用することにします。そちらはGUI操作が可能です。

network-manager-sstp-gnomeをインストールのうえ、設定>ネットワーク>VPNからSSTPを選択し、接続設定名、ホスト名、仮想HUBのユーザー名、パスワードを入力します。

右上のメニューの「VPN」をクリックするとVPN接続が始まります。VPN接続に成功すると、右上のステータスバーにVPNマークが表示されます。

外部からファイルサーバーにアクセスするためのひと手間

ローカルネットワーク接続時と同様に、VPN接続状態でファイルサーバーのローカルIPアドレスを指定すれば、ファイルサーバー内のSMB共有フォルダにアクセス可能なのですが、そのためにはちょっとしたひと手間が必要です。

VPNサーバーの設定

VPNサーバーを自宅に設置する場合、本来なら、任意のポートをVPN用に開放し、そこを貫くようにVPNクライアントからアクセスする必要があります。通常なら、ルーターのポートフォワーディング設定で、VPNサーバーにアクセスするためのポートを指定し開放すれば良いです。

しかしながら、僕の住んでいる賃貸物件はインターネット回線が備え付けで、ポート開放が有料です。開放のためにも様々な手続きが必要で、煩わしいです。

そのせいで一度はVPNサーバーの導入をあきらめかけていたのですが、ありがたいことに、そういう環境ファイアウォールなどの関係でポート開放ができない環境)SoftEther側は想定済みでした。

それこそが前項で設定した「VPN Azure」です。VPN AzureはマイクロソフトのAzureクラウドを経由したVPNです。理屈としては、クライアント側からもサーバー側からもAzureクラウドにアクセスする方向の通信がされるようで、サーバー側からAzureクラウドにアクセスする分にはポート閉鎖やファイアウォールに妨げられない、ということらしいです。

なお、VPN Azureを利用する場合、ホスト名は「vpn〇〇〇〇.softether.net」の「softether」の部分を「vpnazure」に置き換えたvpn〇〇〇〇.vpnazure.net」、ポートは443/TCPとなります。

SMB共有フォルダにアクセスするための物理的な対策(ローカルブリッジ)

ファイルサーバー自体にVPN接続できたとしても、ファイルサーバーがマウントしているSMB共有フォルダにはアクセスすることができません。

これに関しては、ローカルブリッジを作成すると解決できます。

まずは、物理的にLANカードをもう一つ準備します。USB接続のLANアダプタでOKです。

ファイルサーバーのミニPCにもともとあるLANポートと、USB接続したLANカードのLANポートの両方に、ルーターからのLANケーブルを挿します。

ローカルブリッジは、平たく言うと、VPNクライアントがローカルネットワークに参加するための接続先のようなものです。

片方のLANカードはローカルブリッジ用に、もう片方のLANカードはファイルサーバー自体がネット接続するために使用します。

auto enxf8e43bc9dc2a #USB接続のLANカード
iface enxf8e43bc9dc2a inet static
address 0.0.0.0

片方のLANカードをローカルブリッジ用にするために、/etc/network/interfacesに上記の内容を記入し、IPアドレス0.0.0.0を割り当てます。

SoftEther VPN サーバー管理マネージャのローカルブリッジ設定より、物理的な既存のLANカードとのブリッジ接続を作成します。先ほどIPアドレス0.0.0.0を割り当てたLANカードをブリッジ先として選択します。

なお、物理的にもう一つのLANカードを用意せずとも、TAPデバイスを作成すれば代替できるようなのですが、説明を読んでも最後まで理解することができなかったので、結局USB接続のLANカードを買って対応しました(笑)

ファイルへのアクセス

以上の工程が終了すると、ようやくVPN経由でファイルサーバー内のSMB共有フォルダにアクセス可能になります。

VPN接続すれば、ローカルネットワーク接続時と同様に、ファイルマネージャーからSMB共有フォルダにアクセスできます。

今回、自宅に整えたVPNサーバーの通信速度は決して早くありません。試しに、VPN接続時とローカルネットワーク接続時の双方でスマホの写真をファイルサーバーに移動し、そのスピードを比較してみました。

VPN経由だと早くても300KB/s程度なのですが、これがローカルネットワーク(自宅Wi-Fi下だと17MB/sと、差は歴然でした。

続いて、スピードテストを試してみました。VPN接続時は10Mbpsなのに対し、自宅Wi-Fi接続時は83Mbps、5G通信時は170Mbpsとなりました。

今回のVPN接続はあくまで「ファイルサーバー上の欲しい画像をスマホに数枚取り込む」程度の用途で使うのがよさそうです。

あとがき

これでどこからでもアクセス可能な、自分専用の大容量ストレージが概ね満足できる形で仕上がりました。そして、これで自宅以外でも、自宅と同じ水準でブログ記事を書けるようになりました。

構想は3ヶ月以上前からしていたのですが、完成までこぎつけられたのはごく最近です。ポート開放と、AndroidスマホへのVPNクライアント導入の2つのステップで詰まっていたんですよね!VPN Azureに、AndroidVPNクライアント(OpenSSTP)からでもアクセスできた、というのが重要なポイントでした。SoftEther公式サイトの記述がちょっと古かったのが罠でした。

おそらく、もっとしっかりVPNとして使いたいのなら、そういう用途を考慮した太い回線のほうが良いでしょう。

低速のVPN環境で迅速に目的の画像を見つけられるように、ローカルネットワーク下において、Androidスマホのファイルマネージャーであらかじめ画像のサムネを読み込んでおくと楽です。