地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

Raspberry PIでVPN( SoftEther )

フリー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%だった。常時使っても問題なさそう。

 

VPN接続用Androidアプリ

 SSTP接続できるアプリはあまりない。が、以下のアプリが快適。

 

 SSTP VPN Client

https://play.google.com/store/apps/details?id=it.colucciweb.sstpvpnclient&hl=ja

 

 

 指定のSSIDWifiに繋いだらVPN接続をする、もしくは指定のSSIDでなければVPN接続をする、との設定も可能。

 900円だけど有料VPNと契約しなくてすむし、ラズパイ実験くんの手間賃と思えばリーズナブルと購入。動作状況のログが表示されるのでサーバーの設定ができているのかも確認できるし、購入してよかった。