2022年04月04日
色々試行錯誤した結果、他の記事に書かれているようなポート解放やWindowsファイヤウォールの設定変更をしなくてもiPhoneからでも接続できるVPNサーバーが構築できるようになったのでその記録を残します。(2024追記:以下に書くように、新居からはこの方法だとVPN接続が不安定になってしまったので、私は現在はポート開放する通常の方法でVPNサーバーを運用しています。)
この記事を読む方は既にVPN通信をしたい目的が明らかだと思うのでVPNの仕組みや特徴については特に触れません。主な利用目的としては以下があると思います。
※2個目の理由については主にVPNサービス会社が不安を煽るための詭弁であり、現代ではHTTPSプロトコルを使ってる限り(≒ブラウザでURLの横に鍵マークが表示されていれば)、どんなインターネット接続方法を使っていても通信内容が第三者に解読されることはありません。なので「安全性が不安」という目的でVPNサーバーを立てたりVPNサービスと契約することはおすすめしません。 後編はこちら
2024.4/13追記:新居に引っ越してから、サイトによってはVPNを経由せず接続してしまうという問題に遭遇したので以下の記事で解決法を書きました。自分のケースの場合、IPv6接続を無効化することで解決できました。
また、新居のインターネットがあまりに遅い(せいぜい10Mbpsしか出ない 助けて…)せいかVPN接続が不安定だったので、(この記事ではポート開放せずに使う方法を紹介していますが)結局実家のネットワークの443番ポートを開放して、SSTP方式ではなくSoftEther方式で接続するように変更したところ、体感ですが安定性が改善しました。WindowsではSoftEtherの公式クライアントを使い、iPhone/iPadでは後編で紹介しているSSTP ConnectというアプリがSoftEther方式にも標準対応している(優秀!)ので接続を設定すればそのまま使い続けられます。ご参考までに。
この記事に書かれていることを行う際は自己責任でお願いします。 ポート開放などのルーターの設定変更も必要なく、比較的手間の少ない方法ではあるのですが、VPN接続の性質上、例えばパスワードが漏れると自宅のネットワークに第三者がアクセスできてしまうなど、セキュリティリスクとなりかねない行為です。
また、この記事の内容に従ったからといってすべての環境でVPN接続ができる保証はありません。例えば、私が試した中でも、クライアント側が大学の特定のwifiネットワークから接続しようとするとSSTP方式でVPN接続できないこともありました。
もし不正確な部分や安全性に問題がある点があればそっと連絡していただけると助かります。
というお決まりの注意事項を踏まえた上で…
OS | 備考 |
---|---|
iOS, iPadOS | SSTP Connectという有料アプリを購入する必要があります。買い切りで370円(執筆時点)で、コスパは高いと思う。 |
macOS (with M1 chip) | iPhoneアプリのSSTP Connectがそのまま動くそうです。自分では試せていません。 |
Windows | SSTP通信方式はマイクロソフト発のものなのでOSで標準対応しています。 |
Ubuntu | aptでクライアントをインストールします |
AndroidもSSTP通信に対応させることができれば使えると思います。自分でやってみた方がいらしたらぜひご連絡ください。
SoftEtherサーバーが動けばなんでもいいのですが自分の場合は以下の仕様のパソコンです
名前 | 仕様 |
---|---|
プロセッサ | Intel(R) Core(TM) i3-7100T CPU @ 3.40GHz |
RAM | 4GB |
SSD | 128GB |
OS | Windows 10 Pro |
Lenovo ThinkCentre M710qという超小型PCを使いました。Yahooショッピングでクーポンを駆使して中古品を1.6万円くらいで買えました(この商品)。映像出力としてHDMIがなくてDisplayPortしかついていないので、その点は注意が必要です。また、Windows 11には対応していないようです。Microsoft Remote Desktopを使用するためにWindows Proを搭載しているPCにしたのですがその機能が不要ならHome版でもいいと思います。
SoftEtherの必要スペックは、公式ページに書かれていることによると最低でも
が推奨されています。
あまり大型のPCをVPN Serverだけのために使うのもかっこ悪いので、Lenovo ThinkCentreの他にもIntel NUCとか、あるいはChuwi HeroboxのようなファンレスミニPCもいいんじゃないかと思います(特にファンレスになってくると、連続稼働の安定性などは分かりませんが)。ただし、ノートパソコンは常時稼働を想定しておらず発火などの危険が高いため、ノートパソコンでVPN サーバーを構築するのは絶対にやめてください。 また、有線の方がWifiより速くて安定しています。サーバ用PCは、ルータとLANケーブルで接続しましょう。 また、VPNとは何か、SoftEtherとは何かを最低限でも理解してから進めるようにしてください。
これをしなくても動くはずですが、IPアドレスが固定されていた方がリモートデスクトップしやすかったり自宅のネットワーク内でサーバーを管理しやすかったりするので設定しておくのがおすすめです。(あとからでも大丈夫です)
IP固定の方法はすでにたくさんウェブ上に記事があるので説明は省きます。
SoftEtherのダウンロードページから以下のようにSoftEther VPN → Server → Windows → Intel (x86 and x64)
と選んで最新版をダウンロードし、インストーラを起動
インストールするソフトウェアとしてSoftEther VPN Server
を選択し、インストールする
インストールするディレクトリはデフォルトのままで大丈夫
インストール後に自動で起動するSoftEther VPN Server Managerは、サーバのソフト自体ではなく、それを管理するためのソフト(サーバはバックグラウンドで常時動いている)。なのでネットワーク上の他のSoftEther VPNサーバに接続して設定を変更することもできる。 しかし今回は管理ソフトとサーバが同じコンピュータ上で動くので、localhost (This server)を選択してConnect/接続する。
サーバ管理者用に、強力なパスワードを設定する。
セットアップ画面が出てくるので、Remote Access VPN Serverを選択。
VPNサーバ上の仮想ハブの名称を決める。デフォルトのままで大丈夫だと思います。
Dynamic DNSのためのHostnameを確認する。vpn*****.softether.net
のようなhostnameがランダムに割り振られているのでそのままでも大丈夫だし、(既存のものと被らなければ)好きなものに変えても大丈夫。
Dynamic DNSはとてもありがたい機能で、自宅のVPNサーバに接続するとき、インターネット内の自宅の住所であるグローバルIPアドレスが必要である。しかし、普通はdynamic IPと言ってグローバルIPアドレスが変化してしまう。Dynamic DNSによって与えられるホストネームは常に自宅のグローバルIPアドレスを指すようになってくれるのでいちいちグローバルIPを調べなくても接続できる。(ターミナルが使える人は、ping vpn*****.softether.net
とすると自宅のネットワークのグローバルIPアドレスに接続している様子が確認できる)
これを確認出来たらExitする。
次の画面で、iPhoneとかから接続するためにはL2TPなどの追加設定が必要ですよ、みたいな画面が出てくるが、今回はSSTP方式を使うのでL2TP方式の設定は不要である。チェックボックスを外したまま、OKを押して進む。
一方で、VPN AzureはSSTP通信のために必要である。Enable VPN Azureを選択し、OKを押して進む。
次に、接続するユーザプロファイルを作成する。Create Usersを選択。
新規ユーザを作成する。 まずはUser NameとPasswordを設定するだけで大丈夫。パスワードは長めのうんと強力なものを設定する。(ユーザ名もついでに凝ったものにしておいた方が吉な気がする)これが突破されると外部から自宅のネットワークに入り放題になってしまう(これが自宅にVPNサーバを立てることのリスクでもある)。
ローカルブリッジを作成。自分のPCがインターネットに接続するために使っているネットワークアダプタを選択する。 自分は最初にセットアップした時にこれの設定を忘れてしまって、だいぶ混乱した。
これで、多分VPNサーバとして機能するようになったので、後編の記事で試してみる。
環境によっては、SecureNAT機能を有効化しないとVPN接続できないかもしれない。
自分の場合、サーバーログファイルで
2022-03-** **:**:**.*** SSTP PPP Session [***.***.***.***:******]: Trying to request an IP address from the DHCP server.
2022-03-** **:**:**.*** SSTP PPP Session [***.***.***.***:******]: Acquiring an IP address from the DHCP server failed. To accept a PPP session, you need to have a DHCP server. Make sure that a DHCP server is working normally in the Ethernet segment which the Virtual Hub belongs to. If you do not have a DHCP server, you can use the Virtual DHCP function of the SecureNAT on the Virtual Hub instead.
と記録されていたのでSecureNATが必要なことが判明した。管理画面のこちらから有効化できる。
Enable SecureNAT
を選択。(スクリーンショットでは既に有効化した状態なので押せなくなっている)
SoftEtherの機能や特徴が詳しくまとめられています。じっくり読むと結構面白かったりするのですが、いかんせん分量がすごいので読みきれない…
Solomon様がとても詳しくまとめられていて、VPNをセットアップする際に何度も参考にしていました。
かなり分かりやすくL2TP方式を含めたセットアップ方法が解説されています。
https://www.coolhousing.net/en/how-to-set-up-sstp-vpn-on-debian-ubuntu
□