父が家にいるときだけインターネットに繋がらなくなる
はじめに
最近、以下のような記事が話題になっていました。
年末年始の時期になって自分の身の回りにも似たような事象があったので綴ります。
現象
- 自分が使用しているPCがインターネットに繋がらないことがある
- 年末年始になってから起きるようになった
- 年末年始で何か変わったことと言えば、父の仕事が休みになり一日中家にいるようになった
調査
Windows イベントビューアー で調べる
Windowsの検索窓に「eventvwr」と入れると、イベントビューアーが起動できます。
今回はIPv4のアドレスが掴めてないようだったので、DHCP Client*1のイベントを見てみることにしました。
すると、以下のようなイベントが見つかりました
これを参照すると、何故か自分のPCが192.168.2.12を掴んでしまい、それをルーターのDHCPサーバー(192.168.1.1)に問い合わせた挙句にIPアドレスのリリースを拒否されているようでした。
nmapでDHCPサーバーを特定する
問題は「なぜかPCのインターネットが繋がらない」から「なぜか192.168.2.0/24のIPアドレスを掴んでいる」にレベルアップしました。
恐らく192.168.2.0/24内でDHCPサーバーが稼働していると思われ、少なくとも自分はそのようなDHCPサーバーを建てた覚えはないので潰しておきたいです。
nmapのdhcp-discoverを使用するとネットワーク内のDHCPサーバーの在りかを確かめることができます。
以下が実行した結果です
nmap -sU -p 67 --script=dhcp-discover 192.168.2.0/24 Starting Nmap 7.80 ( https://nmap.org ) at 2024-01-04 00:37 ???? (?W???) mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-servers Nmap scan report for 192.168.2.10 Host is up (0.0010s latency). PORT STATE SERVICE 67/udp open dhcps | dhcp-discover: | DHCP Message Type: DHCPACK | Server Identifier: 192.168.2.10 |_ Subnet Mask: 255.255.255.0 MAC Address: 00:23:18:F4:BF:00 (Toshiba) Nmap scan report for 192.168.2.11 Host is up (0.0011s latency). PORT STATE SERVICE 67/udp closed dhcps MAC Address: 00:09:B0:F0:00:A4 (Onkyo) Nmap scan report for 192.168.2.16 Host is up (0.019s latency). PORT STATE SERVICE 67/udp closed dhcps MAC Address: 9C:53:22:0A:0A:BC (Unknown) Skipping UDP Scan against 192.168.2.12 because Windows does not support scanning your own machine (localhost) this way. Nmap scan report for 192.168.2.12 Host is up. PORT STATE SERVICE 67/udp unknown dhcps Nmap done: 256 IP addresses (4 hosts up) scanned in 6.03 seconds
これを参照すると192.168.2.10でMACアドレス00:23:18:F4:BF:00
の機器がDHCPサーバーを建ててるらしいです。
東芝製品の調査
先ほどの調査から、ベンダーはToshibaなので安直に家の中にある東芝製品を調べます。
我が家では東芝製品は実にテレビぐらいなので、ネット上に落ちている説明書とにらめっこしながらMACアドレスを調べます。
その結果、見事先ほどのMACアドレスと同一のものを特定することが出来ました。
原因
原因は父が使用しているテレビでした。
使用していたのは15年程前に発売された機種で、そのうち「LANハードディスク機能」とやらが自前でDHCPサーバーを建てる設定になっていました。
年末年始になり、日中テレビを見る機会が増えたため、併せて機能が有効化されて今回のような事象に至ったようでした。
幸い、現在はテレビとは名ばかりのChromecast with Google TV*2専用機となっているため、「LANハードディスク機能」をオフにして解決しました。
おわりに
インターネットに繋がらなくなる現象は解決できました。
ただ、IPセグメント越しにIPアドレスを拾ってきたり、自PC以外の機器(iPhoneとか)は何ともなかったため「もしかして...おま環?」と思いながら調査してました。
おま環だったら申し訳ないです。。
TsukuCTF2023 Writeup
TsukuCTF2023
TsukuCTF23に参加してOSINT問ばかり解いていました。以下はWriteupです
castle
- Googleレンズで検索したところ、太陽公園の白鳥城であることが判明
- 広場のような箇所を指定して回答
eruption
- Googleレンズで検索したところ、https://note.com/bbtower_inc/n/n7ee92a91833a に瓜二つな画像を発見
- 開催期間が2022年1月26日~28日なそうなので総当たりして回答
location_for_what
- オタクなので言の葉の庭と即答しました
airport
- 以前行ったことのある伊丹空港っぽいと思って入力したらまさかの正解でした
green_bridge
- Googleレンズで検索したところ、「もみじ谷大橋」付近であることが判明
- そこに至る一本道を適当に推測して回答
perfume
- 右側の瓶をGoogleレンズで検索して https://travel-beppu.com/%E8%A6%B3%E5%85%89/oita-fragrance-museum/ がヒットしたので回答
mab
- https://www.nslookup.io/domains/mab.main.jp/dns-records/ で調べたところ、GMPペパボがヒット
- レンタルサーバサービスを答えるのでlolipopと回答
tsukushi_estate
- 「つくし不動産」と検索して出てきたサイト https://www.tsukushifudousan.jp/kasi-office/mie/result/ で貸しオフィスを検索
- 伊勢SIビルがそれっぽかったので築年月を参照して回答
travel_with_tsukushi
- 画像の上半分ぐらいをGoogleレンズで検索して https://4travel.jp/travelogue/11245171 がヒット
- クアラルンプールの空港( https://ja.wikipedia.org/wiki/%E3%82%AF%E3%82%A2%E3%83%A9%E3%83%AB%E3%83%B3%E3%83%97%E3%83%BC%E3%83%AB%E5%9B%BD%E9%9A%9B%E7%A9%BA%E6%B8%AF )を調べて回答
- 最初略称の方(KLIA)を入力してて合ってるはずなのに...とかなってた
kiZOU
- 画像右側のガラスに「au style NAHA」と記載されているのを発見
- 入っているビル(?)はパレットくもじというそうで、「パレットくもじ シーサー」とか調べた
- シーサー下の文章にフォーカスしている画像がなかったので、頑張って拡大して人物名を回答
big_statue
- 書いてある中国語(?)を手書き漢字などを駆使して検索
- インスタアカウントに像が写っている投稿( https://www.instagram.com/p/CtOTvh8sRP-/ )を発見
- Upper Serangoonにあるらしいので「Lexus Durian King - Upper Serangoon」で調べて出てきた場所を回答
TrainWindow
- Googleレンズで検索したところ、http://tanakamasayasu.blog.fc2.com/blog-entry-1591.html がヒット
- 伊豆多賀駅周辺らしいのでストリートビューを見ながら推測して回答
CtrlAltPrtSc
- 電卓は恐らくブラフで、その背景に何があるかを当てる問題(だと思う)
- 上部分にYoutubeのロゴらしき箇所があったので回答
laser
- 「夜空 レーザー」で検索したところ https://www.ktv.jp/news/feature/231107-razorbeam/ がヒット
- 動画から阪神百貨店隣の煙突(?)付近だと思われるので回答
Yuki
- 温泉街なのに橋が目の前にあるなんてと思い、Googleレンズで橋付近を検索したところ https://4travel.jp/travelogue/11811657 がヒット
- 記事から定山渓ビューホテルだとわかるので回答
tsukushi_no_kuni
- 面倒なので問題文をそのままGoogle検索したところ、https://ja.wikipedia.org/wiki/%E7%A3%90%E4%BA%95%E3%81%AE%E4%B9%B1 がヒット
- 首謀者の名前を回答
free_rider
- 現在は削除されている動画のURLと再生位置を推測する問題
- 「海外Yotuber 新幹線」で検索して「FIDIAS: I Travelled Across Japan For Free!」という動画だとわかる
- https://www.youtube.com/watch?v=YzUDKBolwXY で再アップロード(著作権とは...)されていたので再生位置を推測
- https://www.insider.com/youtuber-slammed-free-japan-trip-bus-train-ticket-2023-10 の記事に削除された動画のリンクがあったので回答
river
broken display
- 左端にある照明(?)を含めてGoogleレンズで検索すると https://nishi2.jp/205234/ がヒット
- 記事中に「西宮」「ガーデンズ」とあるので検索して回答
stickers
- 画像奥のバンに「熱海」の文字があるので「熱海 東屋」で画像検索
- 画像を見ると「熱海七湯 河原湯」がそれっぽかったので回答
grass_court
- 「パラボラアンテナ テニスコート」で画像検索するとよく似たアンテナが https://www.tripadvisor.jp/Attractions-g298246-Activities-c49-t40-Iwate_Prefecture_Tohoku.html にあった
- 場所名(水沢VERA観測所)を検索すると運よくテニスコートもあったので回答
fiction
- Googleレンズで検索するとValorantというゲームのSunsetというマップなことがわかる
- 「Valorant sunset coordinates」で検索すると https://valorantfiles.com/maps.php?action=92584fbe-486a-b1b2-9faa-39b0f486b498 が出てきて座標も出てくる
- 但し、同じく検索して出てきた https://www.reddit.com/r/VALORANT/comments/162d7oc/valorant_real_life_locations/ によると Valorantの世界では緯度経度の秒が文字に置換されるらしい
- https://valorant.fandom.com/wiki/Maps#Map_Coordinates を見ながら変換して回答
終わりに
わからない問題もありましたがOSINT問はやはり楽しいなと再確認しました。
OSINT問以外でも答えられるように精進します...
Sensecap Indicator D1Sに書き込んでみる
はじめに
SenseCAP Indicator D1S — スイッチサイエンス
ESP32およびRP2040のデュアルMCUを備えた4インチのタッチスクリーン液晶です。Wi-Fi/BLE通信やGroveコネクタにより各種センサーや周辺機器に接続でき、またESP32およびRP2040のオープンソース・エコシステムにより多くのアプリケーションに対応できます。3種の環境センサーが搭載され、環境モニターにも最適です。
構成
公式WikiによるとESP32とRP240の両方が使用されている
SoCによって司るコンポーネントが異なり、それぞれに書き込む必要がある
- ESP32
- 4インチスクリーン
- Wifi
- BLE
- ボタン
- RP2040
- tVOCセンサ(I2C経由)
- CO2センサ(I2C経由)
- Grove(I2C)
- Micro SD
- Grove(ADC)
- ブザー
ESP32への書き込み
基本的にはWikiの通りに進めればよいのだが、注意点が記されている
Understanding the Need for Patching: LVGL, operates within the SenseCAP ESP32 SDK at a clock frequency of 120 MHz. However, to prevent encountering the "FLASH and PSRAM Mode configuration are not supported" error, it's crucial to apply a specific patch.
This patch is designed to optimize the RGB LCD's performance using the PSRAM Octal 120 MHz feature. It's specifically intended for use with the release/v5.0 branch of ESP-IDF. Please avoid using a version higher than v5.0.
特に「It's specifically intended for use with the release/v5.0 branch」とあるが、ESP-IDFのrelease/v5.0ブランチは常に更新され続けているため、最新のブランチを持ってきてもうまく行かない
そのため、v5.0.1用のofflineインストーラーを使用する必要がある
これを用いれば何も問題なくgit applyすることでパッチを適用できる
RP2040への書き込み
こちらは先ほどとは打って変わってWikiの指示通りにすればすんなり書き込めた
COMポートの選択
ESP32とRP2040、どちらも別々の書き込み口を持っているので当然ながらCOMポートも別になる。自分がWindows機で試したところ、以下のように表示された
- USB シリアル デバイス (COM4)
- RP2040の場合、こちらを使用
- USB-SERIAL CH340 (COM5)
- ESP32の場合、こちらを使用
おわりに・感想
M5Stackのような非常にリッチな環境とは異なり、組込み系をやってる感を得られる
次はLVGLを用いた画面の構成・RP2040とESP32間の通信をやってみる
docker-composeでValheim + Grafanaなゲームサーバーを作る
docker-composeでValheimのゲームサーバー + Grafanaによる監視を構成したのでメモ
Valheimとは
Valheimは北欧神話ライクなオープンワールドサバイバルクラフトゲームです。
デフォルトでは1~10人のマルチプレイに対応しています。
Valheimゲームサーバーを作る
友人(最大4人程度)とマルチで遊ぶためにValheimの専用サーバーを建てることにしました。
専用サーバーの構築にはSteam CLIのインストール等が必要ですが、幸いにも有志の方によってdocker imageが公開されています。
Deploymentの項目に様々な導入方法がありますが、今回は同時接続の人数が多くて4人程度だったのでdocker-composeを使用した方法を選択しました
VPSの選定
ゲームサーバーにはIndigo VPSを選択しました。
選定した理由は以下のとおりです
- 料金が安い
- 使用するdocker imageのSystem requirementsの項目には「4コアCPU & 8GBを推奨」との記載がありますが、他VPSだと月7000円ほどになり、最大4人で遊ぶには高額すぎると感じました
Indigo VPSの評判に関してSSH接続が不安定とのレビューも散見されましたが、特に運用に関して大きく困った点はありませんでした。*1
Grafana Cloud
サーバーのリソース監視やアラート等も出したかったのでGrafana(とPrometheus)による監視を入れることにしました。
Grafanaというとオンプレで動かすことが一般的なように思えますが、クラウド版を使ってみたかったのでGrafana Cloudを使用することにしました。
また、Grafana Cloudのサイトには丁寧にdocker-composeによる構築方法も記載されていたため、それに従って各種設定をしました。
docker-compose.yml
上記のことを実行したdocker-compose.ymlならびにその他設定ファイルは以下のリポジトリにまとめてあります。
余談
Indigo VPSを契約する前、RAMは4GBで十分だろうと、さくらのVPSの4GBプランを契約しましたが、8GBにスケールアップする際に高額 & スケールダウン出来ないのでIndigo VPSに乗り換えました。
契約してしまったさくらのVPSは最低利用期間が3ヶ月なので、何に使おうかな...
ターミナルライクでイケてるHugoのTheme作ってみた
この記事はStatic Site Generator Advent Calendar 2021の20日目*1の記事です
作ったもの
shell
という名前のHugoのThemeを作りました
ベースとなるのは7月ぐらいに完成していたのですが、ちょくちょくアップデートをかけたものが一応ひと段落しました
研究そっちのけで作ってたHugoのThemeが完成した pic.twitter.com/o7TMYwmaao
— ユクロ (@kurokuro_dev) 2021年7月16日
イケてるポイント
①Goghから取得可能なカラースキーム
ターミナルライクなので配色(カラースキーム)を変更できます
7月の時点では、テーマ内に用意された数種類からしか選べなかったのですが、この度 Mayccoll/Gogh のカラースキームに対応しました
Mayccoll/Goghとは
GoghはGnome等のターミナルの配色を変更できるツールです
変更できる配色はかなり多く、以下のページにあるだけ選択肢があります
これらの配色はjson形式で配布されており、他のアプリケーション等で使うことができます
shell
ではHugoの機能を使ってこのjsonを取得し、config.toml
にテーマ名を書くだけで使えるようにしてあります
なので、豊富なカラースキームを自分のWebサイトに適用できます
②忠実に再現したターミナルっぽさ
本物のターミナルっぽさ*2を追求しました
下記のgif画像のように、コマンドの部分のみにタイピングエフェクトがかかるようにし、それ以外は即表示されるようにしました
また、レスポンシブにも対応しています*3
最後に
ターミナルっぽい見た目のThemeが欲しいなと思って作ってみました
豊富なカラースキームが使えるようになり、よりターミナルっぽさが増したかと思います
README.md
も極力丁寧にかいてるつもりなので、ぜひ使ってみてもらえたら幸いです
easyなCanSat作ってみた(と反省)
先日、easyなCanSatであるeasyCansatを作ってIoTLTで発表してきました
これの件を今日のIoTLTで話します~#IoTLT #M5Stack #CanSathttps://t.co/aI9Eih48Ks https://t.co/GGcsMmZLb2
— ユクロ (@kurokuro_dev) 2021年10月21日
発表スライド
CanSatとは
CanSatとは、教育目的で製作される模擬人工衛星をいいます
「模擬」であるため、実際に宇宙に打ち上げるわけではありません
CanSatの難しさ
このCanSatですが、製作に回路設計やプログラミングの知識等が必要であり、単に「宇宙に興味がある」人に 簡単に 作れるよ!とは勧めがたいのが現状です
何がeasyか
そこでM5Stackを中心にしたCanSatを作れば "簡単に" なるのではないかと考えました
具体的には以下の通りです
- M5Stackの使用
- 回路設計の知識が不要
- (UIFlowを使用すれば)プログラミングの知識が不要
- 組み立てガイド等のドキュメントを製作し、作るための情報に容易にアクセス cansat.unknownsky.net
コロナ禍での共同開発
下記は僕のCanSat製作に関する反省日記です
このeasyCansatですが、元々は所属サークルで作ろうと言い出したものなのですが、コロナ禍等の紆余曲折を経て出来上がりました
以下が簡単な経緯なので、コロナ禍のサークル活動(と自分の協調性のなさ)をみて今後の参考にしてもらえたらと思います
2020年5月:製作開始
私が所属していたのはハイブリットロケットを飛ばすことを主な目的としたサークルなのですが
ロケットを飛ばすことが主目的なため、CanSatの製作は下火にあり、作ったことのある先輩方も学年が大きく違う & コロナ禍で会えないので製作にまつわる技術はロステクの状態にありました。
そこで、自団体のCanSatをつくり、後輩に知見を残したいねということで私を含む4人程でCanSatの製作を始めました
2020年6月~7月:仕様の決定
ロステクしていたとはいえ、仕様決定の部分はロケットと共通する部分があり、割と順調に仕様が決定していきました
また、2020年8月に開催されるであろう能代宇宙イベントに出場したいねということで、出場がとりあえずの目標になりました
2020年8月:イベントの延期
目標にしていた能代宇宙イベントが11月に延期されることが発表されました
ただ、製作スケジュールの遅延やハイブリッドロケットの打上の都合上、延期後であっても出場は難しく、出場は諦めることにしました
この製作スケジュールの遅延は主に作業環境の不備が関係しており、以下のようなことがありました
- 活動場所(大学)がコロナの影響で入構制限がかけられており、気軽に集まることができない
- 工作設備(工具、3Dプリンター等)にアクセスできない
- 試作品を実際に触れず、ZoomのMTGでWebカメラ越しに見せるしかない
- したがって、「設計→実物を作ってみる→修正」のアプローチが取りづらく、実物が出来にくい
2020年10月~11月:再燃?
目標にしていた大会への出場は諦めたものの、別の大会への出場を目標とし、活動をしていました
しかしながら、大会の審査が迫るなか、出場させるCanSatとして実際に組みあがったものが出来ていないことから出場を断念することにしました
代わりに、初心に立ち返って後輩に知見を残すためのCanSatを作ることにしました
2020年12月:自由
大会の期日や規格に縛られないCanSatのアイデア出しが始まりました
個人的には期日に追われていたころより楽しいなと感じていました
2021年1月~:僕の暴走
しかしながら、前述のとおり、作業環境の不備による影響でCanSatの実物は依然として出来づらい(共有しづらい)状況にありました
幸いにも僕の自宅には3Dプリンタがあったり、M5Stackが転がっていたりしたので、僕は以前にも増して自宅での作業を増やしていきました
自宅での作業はだんだんとエスカレートし、最終的には、機体に関することも電装に関することも一人で決めたり作ったりするようになりました
本来は他のメンバーに「この設計を思いついたんだけど、どう?」と相談すべきだったのですが、
相談した先の状況(試作品を共有する)がボトルネックになっている以上、
相談するより先に一人で試して一人で実装、そして出来上がったものを他のメンバーに見せるといったループが自分の中で構築されていきました
2021年3月:空中分解
製作に関することが僕一人で完結するような形になり、他のメンバーへのタスクが次第になくなっていったことから、定期的に開かれていたMTGは次第に開かれなくなっていきました
連絡ツールとして使用していたSlackも、僕の一方的な報告のみになり、実質的な空中分解の状態に陥りました
~2021年10月:easyCansat完成
そんなこんなで空中分解したのち、僕はモチベーションが絶え絶えになりながらもCanSatを完成させました
ただ、当初の「後輩に知見を残す」という目的よりかは、空中分解して中途半端になったプロジェクトを終わらせるという目的の方が大きくなっていました
どうするべきだったか
どうするべきだったかに関して、僕は僕の中で結論を出せていません
実際に集まることが難しく、共用の工作機械が使えず、実際の製作物とその出来具合を共有することが難しい中、停滞する進捗に身を任せることが正解だったとは思えません
しかしながら、タスクを皆に振り分け、共同かつ円満にプロジェクトを進めていくことも(工作機械を使えない等の理由も相まって)できませんでした
まとめ
結果的には完成したCanSatですが、コロナ禍の難しさがあった中で製作したことを知っていただければ幸いです
宇宙・ロケット界隈以外では知名度の低いCanSatですが、このeasyCansatが少しでも知るきっかけになればと思います
無料で制限のないngrok的サービスを求めて
とあるハッカソンにてlocalhostで建てたサービスを外部に公開したいなぁという時があり、様々なサービスを試したのでメモ
ngrokの問題点
ngrokはコマンド一つでPublicなURLを得ることができるため、非常に便利ですが、今回使うにあたって以下のような問題にあたりました
要約すると「過去1分間のコネクション数が多すぎるから20コネクション/分にしてね」というエラーなのですが、個人的には割とシビアな制限*1だな〜と思いました
ngrokのpricingを見ると
FREEプランは40コネクション/分となっているので、ngrok全体への制限なのかなとも思ったりしましたが、最上位のプラン(Businessプラン)にしても制限はかかるっぽいので別のサービスを探すことにしました
localtunnel
localtunnel もngrokと同じ類のサービスですが、2年ほど前のIssueをみると
「セキュリティ的な迷惑行為が起きても、サーバーが落ちても、無制限」みたいなことを言っているためngrokの完全上位互換じゃん!とか思ったりしました
localtunnelの問題点
localtunnelはWebhookのテストを目的としているため、クソデカファイル(自分が試したときは60MBぐらい)を投げるとHTTP 413(Payload Too Large)
を吐かれます
確かにテスト目的では良さそうなのですが、今回は画像を送り付けて何かするみたいなサービスを作っていたので、他のサービスを探すことにしました
最適解:frp
ここまでサービスの類を検討してきて、大体の場合に制限がかかっていたので自分でホスティングする方向で探しはじめました
frp は fast reverse proxyの略らしく、githubのstarの数が現時点で46.5k付いている人気なプロキシです
Readmeも丁寧かつ導入も楽そうなので、今回のハッカソンではこれを用いました
導入
frpの実行ファイルには2種類あり、Public IPが付与されるサーバー用のfrps
とクライアント用のfrpc
です
githubのReleaseに各種実行ファイルがあり、これに設定ファイル(frps.ini
/ frpc.ini
)をつけて実行します
親切なことにsystemd
で動かせるような*.service
ファイルも付属しており、これを/etc/systemd/system
とかにコピーするとsystemd
で動かせるようになります
機能
frps.ini
ではクライアントとのSSHするポートのほかに、vhost_http_port
としてPublicに公開したいポートも選ぶことができる*.ini
のgroup
をいじることでロードバランサーにもなる
やったこと
今回のハッカソンでは、Public IPが付与されるAzure上のVMの無料枠(B1s)をfrp server、本番環境をfrp clientとしてセルフホストなngrok的なやつを構築しました
また、本番環境だけでなくメンバー宅PCもfrp clientに指定して、もし本番環境が落ちたらメンバー宅PCに切り替えるみたいなこともできるようにしました
以下に使用した*.ini
を示します
frps.ini
[common] token = XXXXXX bind_port = 8080 vhost_http_port = 80 vhost_https_port = 443
frpc.ini
[common] token = XXXXXX server_addr = XX.XX.XX server_port = 8080 [web1] type = http local_ip = 127.0.0.1 local_port = 5000 custom_domains = www.example.com group = XXX group_key = XXXXX
token
を指定しないとタダ乗りされる恐れがあるので、推測されにくいやつを指定するcustom_domains
で指定したドメインのAレコード(or CNAME)をserver_addr
で指定したやつを指し示すようにする- ロードバランサーの設定である
group
とgroup_key
はクライアント間で共通にする
今回は導入における手間を最小限にしたかったのでtype=http
にしました
vhost_http_port
に80番を指定すると(自分の環境では) Permission denied
で弾かれたのですが、sudo
をつけると実行できました
よって、systemd
で動かす際にはfrps.service
を
[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s ExecStart=/usr/bin/frps -c /etc/frp/frps.ini [Install] WantedBy=multi-user.target
のようにUser=nobody
からUser=root
に書き換えました
まとめ
frp自体はHTTPS等他のプロトコルにも対応しているようなので、ハッカソン以外にも自分専用のngrok的サービスとして使うのも良さげだなと思いました
特に学生はAzure for StudentでB1s枠が実質無料で使えるため、おすすめです
*1:まぁ課金しろという話だとは思いますが