以前より、下記の用途のため、自宅で SoftEther のサーバーを立てています。
- カフェ等で公衆 Wi-Fi を使用する場合のセキュリティ担保
- 外出先から自宅 PC へリモートデスクトップ
- セキュリティ担保のため、このブログ管理画面は IP アドレスで制限をかけているため、外出先でのブログ更新
- 自宅の回線を IPoE(IPv4 over IPv6)に切り替えると安定しない Radiko の地域判定を VPS 経由でルーティングすることで安定化
接続方法は下記です。
- Windows、Linux:SoftEther 公式のクライアントによる接続
- スマートフォン、MacBook、Chromebook:OS 標準機能の L2TP/IPsec による接続
8月15日、ふとタスクマネージャーを見ると、SoftEther のプロセスの CPU 使用率が高い状態となっており、ログを確認すると、L2TP/IPsec に大量のアクセスがありました。
SoftEther 側の対策
この後ご紹介する私の対策後、SoftEther 側でも対策ビルドが公開されています。
同様の問題で困っている方は、下記をご確認の上アップデートを検討するとよいかもしれません。
Firewall で制限をかける?
パケットを観測すると、海外の IP アドレスからの 4500/UDP の通信でしたので、まず、国内の IP アドレスのみ通信を許可するようファイアウォールを設定することを検討しました。
海外に出かけた際に VPN に接続することもありますが、基本は、Windows PC を持って行くので、L2TP/IPsec はそのときに IP アドレス単位で許可するといった運用も可能だからです。
ただ、IP アドレスリストの管理という手間もあるので、ちょっと考え物でした。
L2TP/IPsec を使い続ける?
いろいろ調べていたところ、現在ベータ版の Android 12 では、OS 標準の VPN クライアントで L2TP/IPsec のサポートが終了する可能性があるということを知りました。
このまま使い続けるのも良くないのかもしれません。
OpenVPN サーバー機能の有効化
OpenVPN 互換サーバーを使うと、macOS, iOS, Android, Android アプリに対応した Chrome OS で OpenVPN 公式クライアントを用いて接続できるようです。
この機能は知っていましたが、専用のクライアントが必要ということで手を出していませんでしたが、早速設定してみました。
デフォルトでは、1194/UDP となりますが、OpenVPN サーバー機能は TCP ポートでも有効になり、通常の SoftEther VPN サーバーと共用できるとのことでしたので、UDP は空白としました。
OpenVPN クライアントの設定
それぞれの端末で、OpenVPN クライアントをインストールします。
SoftEther の画面から保存できる、サンプル設定ファイルを使うと便利です。
詳細については、サンプル設定ファイルの中に説明がありますが、私は openvpn_remote_access_l3.ovpn をベースに下記のように変更しました。
- proto udp → tcp
- remote ○○.v4.softether.net 1194 → remote ○○.softether.net (ポート番号)
なお、説明に「2. L3 と L2 の違い」といった項目がありましたが、Android 版ではそもそも tap モード(L2)には対応していない様子でした。
ユーザー名、パスワードはクライアント入力で設定するため、このファイルを全てのクライアントに配布して問題ありません。
Chromebook の場合
Chrome OS 標準で OpenVPN をサポートしていますが、今回のようにポート番号を変えたり高度な機能を用いる場合は、Android 版アプリを導入することが推奨されています。
Android 端末同様、OpenVPN Connect にプロファイルを登録後、正常に VPN で通信できることを確認しました。
最後に
SoftEther VPN Server の環境で、SoftEther VPN Client が利用できない macOS, iOS, Android, Android アプリに対応した Chrome OS で OpenVPN 公式クライアントを用いて接続できることを確認しました。
OpenVPN プロトコルは 100Mbps も出ないということが書かれていました。これは、SoftEther の問題ではなく、これでも公式のサーバーよりは優れているとのことです。
自分の用途としては 100Mbps の通信は必要ないところですが、後日確認してみたいと思います。
(UDP ではなくTCP で通信しているのもボトルネックかもしれません)
また、以前の記事で紹介した MAC アドレス固定機能もこのタイミングで使用し始めましたが、うまく動いていないような気がします。
ここもあとで見てみたいと思います。