日々の感想

アニメ・アニソン・イベント等の感想の備忘録です。

ngrokで二重ルータを越える話

実家に帰省していて特にオタクなイベントとかも無いので、また技術系ネタの備忘録を投下しておこうと思う。

 

今回は、一人暮らししている集合住宅での二重ルータ (いわゆるマンションタイプの回線) を越えて自宅鯖にアクセスする方法について書きます。

 

さて、まずは現状の確認から。

通常は、家庭内の端末に外部からアクセスする際、Fig.1のようにルーターのWANの特定のポートを開放し、そのポートをLAN内のサーバの特定ポートに転送することで、通信を実現する。

f:id:fujisuke_ys:20161231192343p:plain

Fig.1 通常の家庭LANに対する外部クライアントからのアクセス

 

しかし、マンションタイプと呼ばれるネットワーク構成では、Fig.2のように外部クライアントと家庭内LANのルーターとの間に、マンションのルーターが介在している。

f:id:fujisuke_ys:20161231192509p:plain

 
Fig.2 マンションタイプのネットワークに対する外部クライアントからのアクセス (アクセス不可)

 

この環境では当然、各家庭の住人にマンションルーターの管理はできないので、自家庭内LANのルーターに対するポート転送を設定することはできず、外部からの接続はマンションルーターによって遮断されてしまう。

 

 

 

ここで紹介したいのが、Ngrok*1というサービスだ。

これは、Fig.3のように、家庭内LANの中にあるサーバーからNgrokサーバーの特定ポートに対してポート転送を設定することで、外部からのアクセスをNgrokで受けとり、それを家庭内LANの中のサーバーに転送する、というルートを確立するものだ。

f:id:fujisuke_ys:20161231193204p:plain

Fig.3 Ngrokを利用したネットワーク構成の、マンションタイプネットワーク内の家庭内サーバーに対する外部クライアントからの接続 (接続可能)

 

マンションタイプのルーターは、外部から内部へのアクセスについては一般的なWebブラウジング用のポート以外の通信を受け付けていない。しかし、内部から外部への接続に関しては特に制約が無い。Ngrokではこの点を利用している。

 

 

しかし、実際に運用するに当たってはNgrokの用途は限られる。

無料で使用する場合、アカウント1つに対して1つのポートしか設定できない。そのため、例えばSambaのような複数のポートを使用するサーバーをアクセス可能にすることは難しい (そもそもセキュリティ的にSambaを公開するのはナンセンスだが)。

 

私の使用感としては、特定の単一ポートのみの公開で機能する例として、SSHSoftEther VPN*2に対してNgrokを使用するのがオススメだ。

いずれの場合も、一度接続を確保してしまえば、SSHであればトンネル(ローカルフォワード)、SoftEtherであればVPN内の通信として、他の通信をカバーすることができる。

 

 

 

・・・ここまで説明したけれど、具体的な設定手順については先達の方々の記事があるので、そちらにお任せしたい。

例えば、

qiita.com

netbuffalo.doorblog.jp

この辺りを以前参考にした気がする。

 

 

以上ですー。