自宅VPNの遍歴を語る

# はじめに

オークファン Advent Calendar 2021 18日目担当@kei75です。

4つの領域(インフラMGR/インフラ担当/情シス担当/開発MGR)を渡り歩くインフラエンジニア兼チームマネージャーです。



# 自己紹介
2007年に旧ネットプライスに入社して以来、情報システム部門、インフラ、開発と色々と渡り歩いてきました。
2018年10月よりオークファンに転籍になりました。
2019年4月にインフラチームのマネージャーを仰せつかり、素晴らしいメンバーに囲まれながら日々運用に励んでいます。
2021年10月には当社サービスの一つであるタテンポガイドの開発マネージャーを仰せつかり、頼もしいメンバーと共に日々マネジメントに励んでいます。

# 自宅VPN

**みなさんは、ご自宅でVPNを張っていますよね？**

え、張ってない？
なんで？

必要がない…なるほど…なるほど…。

### そういうご意見もありますよね
(そういうご意見しかない)

そのような貴重なご意見をいただいたのならば…。

ぜひ、みなさんに自宅VPNの良さを知っていただきたい！

ということで、今回はインフラエンジニアの私が自宅VPN遍歴をご紹介しようと思います。

一部「VPNじゃねぇよこれは…」という部分もあるかもしれません。
ゆるふわな感じで読んでいただけると、きっと自宅にVPNを張りたくなるんじゃないかと思ったり思わなかったりしております。

# 初代環境

そもそも自宅にVPN環境を作ろうと思ったきっかけは、「赤外線リモコンで家電をリモート制御する仕組み」を作ったことでした。

当時はまだNature RemoやSwitch Botといったスマートリモコンが台頭してくる前でしたので、自宅にあるRaspberry Piに、玄人志向の[USB接続赤外線学習リモコンキット](https://www.kuroutoshikou.com/product/old_series/old_multimedia/old_multimedia_peripherals/old_peripherals_kiwamono/kuro-rs/)を接続し、オリジナルのプログラムでWebから操作できるようなアプリを作っていました。

しかしながら、当時のシステム構成では自宅のRaspberry Piに外出先からアクセスすることができず、プロバイダも当然固定IPではない…。
Raspberry PiのWebサーバはSSLサーバ証明書も搭載していない…。(しかもいれるのも面倒w)

#### となれば、自宅にVPN接続できる環境を整えてしまえば、色々一気に解決じゃないか？

これが自宅VPNの始まりの瞬間でした。

早速、会社でも触っていたYAMAHAのRTX1000をオークションで購入し自宅へ設置。

PPTPによるVPN接続設定を行い、無事に手元のiPhoneからVPN接続することに成功しました。

そのときの構成図がこちら

![初代.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36967/3ee20ece-641e-c912-0bb2-a99bc170f9c2.png)


今見ると色々初々しいですし、一番自宅VPNっぽい気がします。

# ２代目

月日は流れ、個人でもVPSを気軽に借りられる時代になり、私も趣味がてらさくらのVPSを1台契約しました。

そこで、自宅のRaspberry PiからVPSに対してSSHトンネルを張り、VPSをリバースプロキシにしてバックエンド側のRaspberry Piで動いているWebへアクセスさせることができれば、わざわざ自宅にVPN接続する必要はないということに気がつき、早速実践。
結果的にこの仕組みが一番長く続きました。

![2代目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36967/e99b1421-d9e2-a724-2438-c58a0fe2440c.png)

が、仕組み自体は非常に単純なため良いのですが、たまにSSHが切れて復旧しない(autosshとか使ってたけど…)ことがあり、若干の不安定さを残した構成でした。

使おうとすると、リバースプロキシからRaspberry Piへの通信が通らずだんまり…。
**502 Bad Gateway**という悲しいレスポンスを受け取ることが多々ありました。

しかもこれはWebアクセスだけに限定されるし、単なるSSHトンネルなのでVPNとは呼べない…。

# ３代目

さらに時は流れ、自宅のルーターをYAMAHAのRTX1200へ切り替えました。(途中でルーターだけRTX1100に替えていましたw)

このRTX1200には**L2TP/IPsec**でVPN接続できる機能があり、どうにかこれを活用してもっと安定した接続ができないものかと画策しました。

そこで出てきたのが

**さくらのVPSにSoftEtherVPNサーバをインストールし仮想HUBを設置。自宅のRTX1200とはL2TP/IPsecで接続する**という案でした。

そうすることによって、VPSと自宅ネットワークが一体化し、より安定したVPN接続ができるようになると考えました。

ではどうやってVPSと自宅のRTX1200を接続するか…。

### そう、SoftEtherVPNです。

あの、国にまで差し止められた SoftEther です。(知らない人は自分でググってくださいw)

https://ja.softether.org/

今ではキチンと進化を遂げ、オープンソースとして公開もされているれっきとしたVPNサーバなのです。

このSoftEtherVPNサーバには、極めて貫通性の高い独自プロトコルであるSoftEtherVPNプロトコル以外にも

- L2TP/IPsec
- MS-SSTP
- OpenVPN

といった汎用的なVPNプロトコルもサポートしており、SoftEtherVPNサーバ一台でこれらの接続を捌くことが可能です。

これの説明をするだけでめっちゃ記事が長くなりますし、今回の趣旨とは外れますので、ご興味ある方はリンク先をどうぞ。

https://ja.softether.org/1-features

このSoftEtherVPNサーバをVPS上で稼働させ、RTX1200からL2TP/IPsecで接続することで自宅内ネットワークとVPSを接続することに成功しました。

加えて、外出先からでも自宅内ネットワークへ気軽にアクセス出来るようにと、スマホやモバイルノートPCからでも接続できるようにしました。

汎用性の高さ、動作速度、負荷、どれをとってもピカイチなSoftEtherVPNサーバのおかげで、我が自宅VPNはほぼ完成形に近い形へと進化することができました。

現在の図はこちらです。

![3代目.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36967/f045ff00-a75d-d974-8b9f-bf6b9495e245.png)

さりげなくフレッツ光ネクストの接続方式が、DS-Liteに変わっていますw

実は、コロナ騒動が始まった2020年4月から当社も全社的なリモートワークへと切り替わり、自宅で作業をしていたのですが
時間帯によって通信速度がめちゃくちゃ遅くなるという事態に遭遇しました。

これでは困るということで、フレッツ光ネクストの弱点の一つであるPPPoEを用いない接続方式へ切り替えることを検討した結果、
DS-Lite方式を用いればIPv4でも問題なく通信ができるとわかり、プロバイダの変更を決めました。
(当時のプロバイダではPPPoEしかメニューが無かったw)

ちなみにDS-Liteとは、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/36967/afe2b6eb-b910-fa15-56b8-ac9fb5291fac.png)

### ↑これではなく

https://www.mfeed.ad.jp/transix/dslite/dslite.html

こちらを参照ください↑

DS-LiteはIPv6の通信もネイティブで可能なため、RTX1200とさくらのVPS間は、IPv6による通信を行っています。
これが結構効いていてVPN接続自体はもの凄く快適です！

## おわりに

ということで、若干のお茶濁しコンテンツ感のある記事となりましたが、自宅の構成を紹介することで少しでもインフラに興味を持ってもらえたらいいなぁと思い、この記事をしたためました。

みなさんもぜひ自宅にVPNを導入して、快適なVPNライフをお過ごしください。

### あ、言わずもがなですが、セキュリティには十分気を付けてくださいね。
### 生半可な知識と勢いでやると、ほんとに大変なことになります。

(今まで散々煽っといて何言ってんだか…)




## お約束

オークファングループでは、一緒に働くエンジニアを大募集中です！

~~一緒に自宅VPNについて語り合いましょう！~~