マンション共有回線環境を乗り越えて自宅PCへアクセスしよう【前編】
きっかけは些細なことでした。在宅勤務なご時世になり性能の良いデスクトップを自宅に買って快適に利用していましたが、それなりに外出する機会も増えてきた昨今、外出先からもこの資源を使いたいなぁと素朴に思っただけでした。しかし、自宅はマンション共有の回線でした。そうです。自宅に来ているネットワークはすでに「プライベートアドレス」という外からのアクセスには高い壁があったのです。今回はそれを最安で乗り越えたお話です。
はじめに
「自宅 PC に外からアクセスしたい」とかは、意外と普通にある欲求のようで Google 先生にも多数の情報にぶつかります。自宅にあるインターネット回線につないでいるルーター(市販の Wi-Fi ルーターをつないでるひとが多いでしょう)には大抵は「ポートフォワーディング」の機能がついており、外からのアクセスを内側(つまり自宅 PC 側)へ流すような設定ができます。最近では、Windows でも SSH サーバーが簡単に設定できるので、「SSH ポートフォワーディングでリモートデスクトップ接続」に書いたようなセキュアなアクセスは標準機能だけでできてしまいます。図で書くと以下のような感じですね。

しかし、冒頭に書いたようにマンションのような集合住宅の共有回線ですとそうはいきません。共有回線の場合はいわゆる「2重ルーター問題」を回避するために、自宅ルーターは AP モード とか BR モードにするんですが、それってつまり、マンション共同のルータに対して先のポートフォワーディング設定をやらないとダメってことになるわけです。図で言うと以下のような感じです。そんなの許さるわけがありませんね。

VPS の構築
自宅にグローバルアドレスがない限りどうしようもないので外部に踏み台が必要になります。もちろん、AWS の無償枠とか使ってもいけますが、恒久的な対応となるとどうしても有償になってしまいます。
そこで安価な VPS をいろいろと調べましたが、結局、NTTPCコミュニケーションズの「WebARENA(Indigo)」にしました。なんといっても、最安プランで月額 349円(税込)が素晴らしい上に、なんと従量課金だということです。つまり、今回の利用目的が「踏み台」であることとからも、不要のときは停止しておけば限りなく費用を抑えることができるわけです。
契約後、最安の「1 vCPU, 1GB RAM, 20 GB SSD, 100 Mbps」を「Ubuntu 18.04」で作成しました。
2022/3/4 追記
WebARENA Indigo ですが、従量課金であることは確かなのですが、以下のようにインスタンスが存在している限りは課金されます。不要のときは「停止」ではなく「削除」しないとダメですね。手間としては大したことないので必要なときに都度構築でも良いですが、月額349円でることを考えると、まぁいいかってなりますね。(というか、なりました、、、)


インスタンスには、必ず SSH 鍵が紐づいている必要があります。初めてインスタンスを作成する場合は「SSH鍵の作成」ボタンで「SSH鍵名」を入力することで SSH 鍵が作成されます。秘密鍵は private_key.txt というファイル名で自動でダウンロードされます。

以下のようにステータスが「Running」になれば完成です。IP アドレス欄が外からアクセスするためのグローバルアドレスですね。

このインスタンスへの接続は初期状態では SSH のみです。ユーザ名は利用したイメージで異なるようで、私の場合は"ubuntu"です。なので、コマンドプロンプトで以下のように接続確認ができます。(伏字は VPS インスタンスの IP アドレスです)
ssh -i %HOMEPATH%\Downloads\private_key.txt ubuntu@***.***.***.***
接続したときのイメージは以下の通り。

これで踏み台の準備は完了なのですが、この秘密鍵にはパスフレーズが設定されていませんので、よりセキュアにするために、ssh-agent に登録しておいて秘密鍵のファイルは削除するようにしましょう。「Windows 10 への SSH 接続」に登録方法を書いています。ssh-agent サービスを起動した後に以下のコマンドで登録します。
ssh-add %HOMEPATH%\downloads\private_key.txt
確認は ssh-add -l で行えます。これで -i オプション無しで接続できれば、秘密鍵は不要なので削除します。ただし、ssh-agent への登録は「自宅 PC」と外から自宅 PC にアクセスするための「リモート PC」の両方に行っておいてください。接続確認は以下の通りです。
ssh ubuntu@***.***.***.***
一連の実行イメージは以下の通りです。

これで自宅 PC とリモート PC から SSH 接続するための準備はできました。続きは後編で。
ディスカッション
コメント一覧
まだ、コメントがありません