ngrokで二重ルータを越える話
実家に帰省していて特にオタクなイベントとかも無いので、また技術系ネタの備忘録を投下しておこうと思う。
今回は、一人暮らししている集合住宅での二重ルータ (いわゆるマンションタイプの回線) を越えて自宅鯖にアクセスする方法について書きます。
さて、まずは現状の確認から。
通常は、家庭内の端末に外部からアクセスする際、Fig.1のようにルーターのWANの特定のポートを開放し、そのポートをLAN内のサーバの特定ポートに転送することで、通信を実現する。
しかし、マンションタイプと呼ばれるネットワーク構成では、Fig.2のように外部クライアントと家庭内LANのルーターとの間に、マンションのルーターが介在している。
この環境では当然、各家庭の住人にマンションルーターの管理はできないので、自家庭内LANのルーターに対するポート転送を設定することはできず、外部からの接続はマンションルーターによって遮断されてしまう。
ここで紹介したいのが、Ngrok*1というサービスだ。
これは、Fig.3のように、家庭内LANの中にあるサーバーからNgrokサーバーの特定ポートに対してポート転送を設定することで、外部からのアクセスをNgrokで受けとり、それを家庭内LANの中のサーバーに転送する、というルートを確立するものだ。
マンションタイプのルーターは、外部から内部へのアクセスについては一般的なWebブラウジング用のポート以外の通信を受け付けていない。しかし、内部から外部への接続に関しては特に制約が無い。Ngrokではこの点を利用している。
しかし、実際に運用するに当たってはNgrokの用途は限られる。
無料で使用する場合、アカウント1つに対して1つのポートしか設定できない。そのため、例えばSambaのような複数のポートを使用するサーバーをアクセス可能にすることは難しい (そもそもセキュリティ的にSambaを公開するのはナンセンスだが)。
私の使用感としては、特定の単一ポートのみの公開で機能する例として、SSHやSoftEther VPN*2に対してNgrokを使用するのがオススメだ。
いずれの場合も、一度接続を確保してしまえば、SSHであればトンネル(ローカルフォワード)、SoftEtherであればVPN内の通信として、他の通信をカバーすることができる。
・・・ここまで説明したけれど、具体的な設定手順については先達の方々の記事があるので、そちらにお任せしたい。
例えば、
この辺りを以前参考にした気がする。
以上ですー。