Cloudflare DNS をダイナミック DNS として利用するための定期実行スクリプトを書いた
以下の記事のとおり、WSL 環境に cloudlfared をインストールし Cloudflare Tunnel の設定をすることで、自分のドメイン URL から WSL 環境に対して SSH 接続ができるようになった。そしてマシン起動時に自動ログインを済ませ、WSL 環境を起こすための VBScript もタスクスケジューラに仕込んだ。
- 過去記事 : 2026-09-03 2026年版・Cloudflare Tunnel で WSL 環境に SSH 接続する
- 過去記事 : 2026-09-05 Windows 11 起動時に WSL も起動させておく VBScript
つまり、PC の電源さえ入れれば WSL 環境のスタンバイは完了するので、あとは https://my-pc.example.com にブラウザでアクセスして認証すれば、WSL 環境に対して SSH 接続できる状態になっているワケだ。
…じゃあその、PC の電源を入れるってのは、どうやるんです?というと、DDNS (ダイナミック DNS) が必要になりますな。電源が切られているマシンに対するトンネルは Cloudflare Tunnel といえどトンネリングできておらず、依然として Wake on WAN (インターネット越しの Wake on LAN) が必要になるワケです。
- 過去記事 : 2020-08-24 Wake on LAN・Wake on WAN が実現できたのでやり方細かく教える
- 「RemoteBoot WOL」という iPhone アプリは2026年現在も使っています
自分は過去に mydns.jp を使っていたけど、mydns.jp に自分の IP アドレスを送信するには DiCE というフリーソフトを常駐させないといけなくて、タスクトレイにコレが居るというのが個人的に鬱陶しかった。
そこで調べてみると、Cloudflare DNS も API コールで更新することが出来て、DDNS の用途で使っている事例もあるようだと知ったので、そのためのスクリプトを組んでみた。その名も Update Cloudflare DNS。
Cloudflare DNS を更新するための API コールは Node.js スクリプトとして実装した。コレはもう、ワイの好きな JavaScript という言語で何でもやりたい、ただそれだけの理由でございます。Windows 環境で動けばいいので、GitBash を活用して Bash スクリプトから curl コマンドを叩いてもいいし、PowerShell の curl = Invoke-WebRequest で実装しても自然よね。
まぁともかく、グローバル IP アドレスを確認して Cloudflare DNS を API で更新するというスクリプトは用意したので、あとはコレを定期実行するようにすればいい。ということで GitHub リポジトリの README.md に設定手順を書きましたが、ウィンドウを出すことなくスクリプト実行を済ませるための VBScript を置いといて、コレをタスクスケジューラで定期実行するという構成になっとります。
コレで、マシン起動中は定期的に自身の IP アドレスを my-pc-ddns.example.com なドメインへと反映できるようになったので、あとは iPhone アプリの「RemoteBoot WOL」なりでこのドメインを指定してやれば、自動的にグローバル IP アドレスが解決され、PC に向けて Wake on WAN のマジックパケットが届いてマシンは起動、そして冒頭で説明したとおり Windows ログインから WSL の起動までが自動的に済むので、あとは SSH したらええねん、ということですな。
ついでに、マジックパケットを受信したことをチェックできる Node.js スクリプトも作った。ホントに DNS の更新が上手く出来ているのか、他の端末から送信したマジックパケットが PC へと到達しているのかどうかを確認する際に使える。
このスクリプトを Node.js で実行すると、マジックパケットを監視するサーバが起動するので、その状態で iPhone などから Wake on WAN なり Wake on LAN なりを想定したマジックパケット送信を行ってみる。「マジックパケットを受信しました!」とコンソール出力されればネットワーク的な疎通は出来てることになるので、そしたら最後に PC の電源を切った状態で動作チェックすれば完璧だ。