🌐

DenoでグローバルIPを確認できるサイトを作った

2023/12/11に公開

Deno Advent Calendar 2023 11日目の記事です。

作ったもの

ブラウザやcurlでアクセスすると、アクセスした端末のグローバルIP(パブリックIP)を返してくれるサイトです。Deno Deploy上で動いています。
https://checkip.deno.dev

curl https://checkip.deno.dev

実装

接続時のホスト名を返しているだけです。Denoだとワンライナーで書けます。

Deno.serve((_req, info) => new Response(info.remoteAddr.hostname));

作った背景

開発環境によってはIP制限回避のためにCIのグローバルIPを知る必要があるケースがあります。グローバルIPを確認できるサイトはいくつか存在しています。

  • ipinfo.io/ip
  • api.ipify.org
  • checkip.amazonaws.com

https://qiita.com/kazu_wsx/items/790a31409524d3b4e7fd

上記の確認サイトを使うことも出来ますが、
万が一、偽のIPを返されてしまうとセキュリティ上の問題が発生します。
checkip.amazonaws.comなど、比較的信頼できる企業のサイトもありますが、そのサイトがダウンしていたり、アクセス制限されていたりすると困ります(ないと思いますが...)。

自前で用意しておくと安心なので作っておきました。

Deno Deploy上で作るメリット

Deno Deployには、簡単にプロジェクトを始められるプレイグラウンドが備わっています。数十行程度で構築できるアプリで動作確認しながら使うのに都合が良いです。
今回でいえば、ローカル環境ではグローバルIPを確認できないため丁度良かったです(どこからIPが拾えるか分からなかったため)。また、プレイグラウンドはパブリックにして共有することも出来るので、サイトの透明性も確保できるメリットがあります。

今回のサイトのプレイグラウンド

https://dash.deno.com/playground/checkip

おわりに

DenoでIP返してくれるサーバーを簡単に作れるよってだけの話でした。

Denoは最近Deno KVDeno Cronなど、Deno Deployで使える便利な機能を増やしているので、次はその辺りを使って何か作ってみたいです。

Discussion