remoteaccess-img

どこかの記事でさらっと書いた気がしますが、 4 月からしばらく自宅を離れていました
それからやっと帰ってきたのですが、その間にすごく感じたことが 「自宅のパソコンにアクセスしたい」 です

外出先に持っていくパソコンは、あまり容量がないので一部しか持っていけませんし、普段は自宅内のサーバ代わりのパソコンのフォルダ共有を使ってるので、必要最低限すら入っていません
必要なものを全部コピーしていくとなるとそれだけで時間がかかります
とりあえず必要そうなものはコピーしたはずだったのに、あとあとこれも必要だったってことも普通にあります
他にも、外出中に持ち運び用パソコンで変更を行ったら帰宅後に変更した部分を自宅のパソコンにも反映する必要ありです

そういうことがあって、直接自宅のパソコンにアクセスできたらなーって思ってました

リモートアクセス

ここからが、自宅のパソコンに外部からアクセスする方法を調べたり考えたりしたまとめです

Chrome Remote Desktop

一番ラクにするならやっぱりこれでしょうか
ルーターの設定もいらず Google アカウントと Chrome があれば簡単に使えます

以前使ったことはあるのですが、ネットワーク関係の問題が起きたときに、ネットは繋がるようになったけど Chrome Remote Desktop は繋がらないってことはありました
再起動だったか再設定で直ったのですが、長期の外出などリモートの再起動が簡単にできないときにはちょっと困るかも・・・

簡単に使えはするのですが、あくまでリモートデスクトップです
ファイル転送機能は弱めです
Windows 公式の RDP と違ってマウス操作やコピペで移動/コピーできません
ファイルを選択してアップロード/ダウンロードするような使いづらさがありました
それにファイルサイズにも制限があったはずで、ファイル共有が主な目的だと向いてないかもです

サイズが何 GB もないなら、 OneDrive などのオンラインストレージと組み合わせることもできます
でもやっぱりファイルサーバにアクセスして直接操作するのと比べると不便に感じます

VPN

Chrome Remote Desktop を使わず直接自宅の IP アドレスへアクセスするのなら、ルータの設定で自宅内のパソコンにアクセスできるように設定が必要です
ポートマッピングで、自宅の IP アドレスの 3389 番ポートへのアクセスを、あるパソコンの 3389 番ポートへのアクセスになるよう転送するような設定です

直接外部からアクセスできる形で公開するのはセキュリティ的に怖いので VPN か SSH を経由して RDP などをできるようにします
VPN はルータが対応してれば楽そうですが、 VPN 機能に注目して選んで買ってないと対応してないのが多いです
よく見かけるルーターの aterm は非対応らしいです

以前買ったルータを調べると・・・

なんと! VPN サーバ機能がありました!!
さらに、 IO DATA が提供する無料のダイナミック DNS サービスも使えて、固定の IP アドレスを持ってなくてもホスト名でアクセスできるそうです

あのときの自分、良い選択した!!
なんて喜んでいたら、あのルーターはあくまでアクセスポイントでしかなかったです・・・

自宅の壁に挿すコードは LAN ケーブルとは違う形で、市販ルータを直接接続はできないタイプです
回線工事のときに設置して貸してもらってる状態の専用ルータがあって、そのルーターが自宅のルーターになっています
前に買ったルーターでルーター機能を有効にしても二重ルーターの内側ってことになるので意味ないです

専用ルーターにそういう機能あるのでしょうか・・・?

SSH

あるかわからない VPN サーバ機能に期待するくらいなら、 SSH 接続でもいいんじゃないかなとも思います
自宅ではないところですが、以前使ってない古いノートパソコンを SSH サーバにして外部からアクセスできるようにしたことがあります

ポートマッピングとグローバル IP アドレスさえどうにかできればこれで良さそうです

ポートマッピング

ルーターへのアクセスを SSH サーバのパソコンに転送しないといけません
標準ポートは攻撃されやすいのでわかりづらいポート番号にして、「ルーター:18022 → サーバ:22」みたいにしたいです

だいたいのルーターはポートマッピングをできると思うのですが、中にはポート番号をそのままでしか転送できないのもあります
「ルーター:18022 → サーバ:18022」と言う感じです
ルーターがそうなってたら仕方ないので、サーバパソコンの sshd の設定でリッスンするポートを増やして対処です

グローバル IP アドレス

固定のグローバル IP アドレスを契約していないので、不定期にグローバル IP アドレスが変わります(数週間くらい?)
外出中に自宅のグローバル IP アドレスが変わると、変わった後にアクセスするところがわからなくてアクセスできなくなります

IO DATA のルーターだと無料で DDNS サービスが使えるようですが、上で書いたように IO DATA のルーターはルーターとして使わないのでこの機能は使えません
他社のルーターだとどういう感じか調べると DDNS 機能は「お名前.com」のサービスでドメインを取って、そこと紐付ける機能だったりで、どっちかというとサービスを公開して他人にアクセスしてもらう用途に感じました
そうなると有料になってくるので別の方法を考えます

「自宅のグローバル IP アドレスをどうにかして外部から知ることができればいい」ので、自宅のパソコンからどこかに情報を送るという方向で考えます
SSH サーバを起動しておくパソコンなら常時起動してるはずなので、このパソコンから定期的にグローバル IP アドレスの確認と変化があれば伝えることにします
方法はこんなものでしょうか

◯ 自分が管理してるウェブページにアクセス (GA などで確認)
◯ チャットツールや PushBullet みたいなので送る
◯ オンラインストレージのファイルに書き込む

無料のブログやホームページサービスを使ってるなら、自宅パソコンからそのサイトにアクセスすれば、アクセスログからグローバル IP アドレスを確認できます
他のアクセスと区別が付きやすいように独自のクエリパラメータをつけるなど工夫すればそれなりに使えそうです
詳細なアクセスログを見れないサービスもあるので、 Google Analytics を入れておいてそっちで確認もありです

自分のグローバル IP アドレスを無料で教えてくれるサービスも色々あるので、それらを使ってグローバル IP アドレスを取得してからそれを送るという手も取れます
アカウントを 2 つ取っておいて、チャットツールで送信すれば通知まで届いて便利かもしれません
でも自動でチャットツールからメッセージを送るのって簡単には行きません
楽に使える API が用意されてるサービスを探す必要があります
Skype だとそんな機能なかったような・・・
Slack は API が充実して扱いやすいようなことを聞いた覚えがありますが無料プランで使えるのか知りません
最近使ってないのでまだ生きてるのかわかりませんが、 PushBullet という自分の端末間でチャット風にメッセージやデータを送れるサービスがあったのでこれが使えるかもです

チャット系ツールでの送信以外にも、オンラインストレージで同期しているファイルに書き込むという手もあります
チャット系ツールと違って通知が来ないですが、ファイルに書き込むだけなので一番簡単かもです

PowerShell でなんとこれだけ

(iwr https://checkip.amazonaws.com/).rawcontent > C:\Users\RYLS\OneDrive\ip.txt

ファイルの中身⇩

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 16
Date: Sun, 30 May 2021 06:00:00 GMT
Server: lighttpd/1.4.53

100.100.100.100

ヘッダに入ってる日時も見えるので最終実行がいつかがわかります

Windows10

SSH で考えてましたが、 Linux のパソコンってないんですよね・・・
そもそも、 24 時間ずっとつけたままにするような省電力で静音なパソコン自体がないです
サーバ向けにミニ PC を買おうかなーなんて思ってるのですが、基本 Windows OS がついてるんですよね
せっかく入ってるのに購入直後に消すのはもったいない感がありますし、サポートも無効になりそうな気がします・・・

調べてみたら最近では Windows10 の機能追加に openssh サーバがあるようですし、 Windows10 でも大丈夫なのかもしれません
安定していない開発者向けの機能だったりしないのかとか、 Linux と Windows のユーザ周りの扱いの違いとか不安なところもあります
外部公開してもセキュリティ面で大丈夫ならこれでもいいのですが、情報があまりなくて怖いところがありますね

SSH を前提に考えていましたが Windows にするなら VPN のほうがよかったりするかもです
調べてみると Windows が IPSec の VPN サーバとしての機能を持ってるみたいです
ルーターで設定できなくても Windows で設定できるならこれでも良さそうです

ルーターじゃなくパソコン側で VPN サーバを設定するなら、最近だと WireGuard という VPN ツールが良いらしいです
新しい分、サーバとクライアントの両方にインストールなのが面倒ですけど



とりあえず帰宅したのでルーターを見て、できることを見てから決めようと思います