フリーWifiも怖いがフリーVPNも怖くない?
Free Wi-Fiにはパスワードすらないものも多い。流石に怖い。なんでもいいから暗号化キーくらいは設定してほしい。出張先ホテルのWifiサービスも気持ち悪いといえば気持ち悪い。
かと言って、フリーのVPNは怖すぎる。通信を一手に監視できるからだ。広告収入だけならともかく個人情報が商材のところも多いだろう。
Googleサービスを多用して、すでに魂を売っている気もしなくもない。今更感はなくもない(笑)
そこでラズパイ
固定グローバルIPを持たないお家LAN内にVPNサーバーをRaspberryPiで運用してみることにした。SoftEtherはそういう環境にも対応しているという。VPN Azureという中継サーバーサービスを利用させていただくと実現できる。ただし、MS-SSTPに限定されるので、Android端末では標準では対応できずアプリを入れることになる。(アプリ入れたほうが便利なのだ・・・・)
ja.softether.org
インストール環境:
Raspberry Pi 3B+
Linux raspberrypi 4.19.36-v7+ #1213 SMP Thu Apr 25 15:08:02 BST 2019 armv7l GNU/Linux
インストールと動作確認
参考にしたサイト https://nobuntu.jp/raspberrypi-vpn-server-softethervpn/
このサイトは確認しつつ進めるような記述になっていて、分かりやすい。うまくいかないと後戻りしつつ作業。ただし、今回はAzureを使う予定なので、自宅からのアクセスで確認終了。
ブリッジ接続にしてラズパイ自身も見えるようにする。
単にインターネットと外出先でのVPN接続だけを求めるなら「ブリッジ接続」はしないことを勧めます。トラブルとハマる。スキルがあれば全然問題ないだろうけれども、私のスキルだと解決に時間がかかった。
qiita.com
問題発生と解決策
確かにAzureサービス経由でVPNアクセスできてラズパイ本体も見える様になった。が、ここで問題発生。CPU使用率25%程度、VPNseverで1コア分100%となるのだ。仮想NATをオンにすると顕著。それでも使えないこともない。気になる。どこかでループが発生しているのか。困った。
実は、VPSでのVPNサーバー設置時にも同じ様に高負荷になるという現象にハマることになる。
今回の場合の解決策。
仮想DHCP機能でDNSをパブリックサーバ(グローバルアドレス)に指定。Googleさんの8.8.8.8(プライマリ)と8.8.8.4(セカンダリ)とした。デフォルトだとゲートウェイと同じになっているけれども仮想の内側にローカルにDNSサーバ持ってない。その外側のお家LANに直接繋げばルータのDHCP機能で配られるから問題ないのだが・・・。
で、なんでループが解決したのかは細かくわからないが、ドメインネーム解決時に自分自身に問い詰めることがなくなったんだだろう。(え?)
結果、CPU使用率は負荷大きい時にも6%以下くらい。1コア分で最大30%程度。動画再生させててもCPU使用率2~3%だった。常時使っても問題なさそう。
SSTP接続できるアプリはあまりない。が、以下のアプリが快適。
SSTP VPN Client
https://play.google.com/store/apps/details?id=it.colucciweb.sstpvpnclient&hl=ja
指定のSSIDのWifiに繋いだらVPN接続をする、もしくは指定のSSIDでなければVPN接続をする、との設定も可能。
900円だけど有料VPNと契約しなくてすむし、ラズパイ実験くんの手間賃と思えばリーズナブルと購入。動作状況のログが表示されるのでサーバーの設定ができているのかも確認できるし、購入してよかった。