手当たり次第に書くんだ

飽きっぽいのは本能

ネットワーク調査ツール「NetClear」を公開しました – DNS、SSL、HTTP、ポート確認を一つの流れで見る

ネットワークや Web サイトの状態を確認するためのツールとして、NetClear を公開しました。

NetClear では、IP アドレス、CIDR、DNS、SSL 証明書、HTTP 応答、TCP ポートなど、ネットワーク調査で頻繁に確認する情報を Web ブラウザーから調べられます。個別の計算機やチェックツールを並べただけではなく、ドメインや IP アドレスを起点として、関連する調査へ移動しやすい構成にしています。

参考
書籍
ネットワーク基礎の参考書籍

マスタリング TCP/IP 入門編 第 6 版

DNS、IP、TCP、UDP、アプリケーションプロトコルなど、ネットワーク調査の前提となる基礎を確認したい場合の参考書籍です。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

NetClear を作った理由

ネットワーク上の問題を調査するとき、一つの情報だけを確認して終わることはほとんどありません。例えば、Web サイトへ接続できない場合でも、DNS で正しい IP アドレスが返されているか、IPv4 と IPv6 のどちらへ接続しているか、SSL 証明書は有効か、HTTP ではどのステータスコードが返されているか、リダイレクト先はどこか、対象ポートへ TCP 接続できるかを順に見ていく必要があります。

従来は、これらを複数のコマンドや Web サービスに分けて確認する必要がありました。もちろん、専門的な調査では digcurlopensslwhoisipcalc などのコマンドを使用した方が詳細な情報を取得できます。一方で、最初の切り分けや調査対象の概要を把握する段階では、複数の確認を一つの流れとして実行できる方が効率的です。

NetClear は、この初期調査の流れを Web アプリケーションとして整理することを目的に作成しました。

NetClear で確認できること

現在、以下の機能を公開しています。

機能確認できる内容
現在の IP アドレス接続元として認識されている IPv4・IPv6
IP アドレス検索IP アドレスの種別、逆引き、RDAP 情報
IPv4 CIDR 計算ネットワークアドレス、ブロードキャストアドレス、利用可能範囲など
IPv6 CIDR 計算プレフィックス、ネットワーク範囲、アドレス数など
EUI-64 計算MAC アドレスから Modified EUI-64 形式を生成
予約 IP アドレスプライベート、リンクローカル、文書用などの特殊用途アドレス
ドメイン検索DNS、ネームサーバー、メール設定、RDAP 情報
DNS チェックA、AAAA、MX、TXT、NS、CAA などの主要レコード
SSL チェック証明書の発行先、発行者、有効期限、SAN、検証結果
HTTP チェックステータスコード、レスポンスヘッダー、リダイレクトなど
ポートチェック許可された TCP ポートへの接続確認

すべての DNS レコードやネットワーク状態を網羅的に収集するものではありません。NetClear の役割は、対象の状態を短時間で把握し、次に何を詳しく調べるべきか判断できる情報を提示することです。

ドメイン検索を調査の起点にする

NetClear では、ドメイン検索を調査の起点として扱っています。ドメイン名を入力すると、IP アドレス、ネームサーバー、MX レコード、TXT レコード、RDAP 情報などを確認できます。その結果から、同じ対象を引き継いで DNS、SSL、HTTP、ポートチェックへ移動できます。

ネットワーク調査では、個々の機能よりも、調査対象と確認結果の関係を維持することが重要です。DNS を確認した後に対象名をもう一度コピーし、別のツールで SSL 証明書を確認する構成では、操作が分断されます。NetClear では、関連する確認を一つの調査経路としてつなぐことを意識しています。

IPv4 だけでなく IPv6 も独立して扱う

ネットワーク関連の Web ツールでは、IPv4 が中心となり、IPv6 は補助的な機能として追加されている場合があります。NetClear では、IPv4 CIDR と IPv6 CIDR を別の機能として実装しています。

IPv6 については、プレフィックス計算だけでなく、Modified EUI-64 の計算や、リンクローカル、ユニークローカル、文書用アドレスなどの判定にも対応しています。IPv4 と IPv6 は、単にアドレスの長さが違うだけではありません。ブロードキャストの有無、アドレス生成、特殊用途範囲、ネットワーク設計上の考え方も異なります。そのため、一つの計算画面へ無理に統合せず、それぞれの体系に合わせて機能を分けています。

公開サービスとしての安全対策

DNS、HTTP、SSL、ポートチェックなどの機能は、NetClear のサーバーから外部の対象へ通信します。この種の機能を公開する場合、入力された宛先へ無条件に接続する実装にはできません。内部ネットワークへの接続や、意図しないポートスキャンなどに悪用される可能性があるためです。

NetClear では、主に以下の制御を実装しています。

  • プライベート IP やリンクローカルなど、特殊用途アドレスへの接続拒否
  • DNS で名前解決した後の IP アドレス検査
  • 接続先を検証済み IP アドレスへ固定
  • HTTP リダイレクト先の再検証
  • IPv4-mapped IPv6 を含む表記違いへの対応
  • TCP ポートチェック対象の許可リスト化
  • リクエスト回数と同時実行数の制限
  • UI セッションと API トークンの検証
  • リクエストボディーサイズの制限
  • 監査ログに保存する対象情報のハッシュ化

URL の文字列だけを検査しても、DNS の結果やリダイレクト先が内部アドレスを指していれば、接続制限を回避される可能性があります。そのため、入力値、名前解決結果、実際の接続先を分けて検証しています。

異常な状態も確認できる SSL チェック

SSL チェックでは、正常な証明書だけでなく、自己署名証明書や検証に失敗する証明書についても、取得できた範囲の情報を表示します。単に「接続に失敗しました」と表示するだけでは、証明書の期限切れ、ホスト名不一致、信頼されていない認証局などの原因を切り分けられません。

NetClear では、証明書の取得処理と信頼性の評価を分け、証明書情報と検証エラーを診断結果として扱う構成にしています。これは、正常性を確認するだけでなく、異常の内容を確認するための機能です。

Kubernetes での運用を前提とした構成

NetClear のアプリケーションは Node.js で実装しています。コンテナは非 root ユーザーで実行し、Kubernetes での運用を想定して、以下の機能を持たせています。

  • liveness 用のヘルスチェック
  • readiness 用の受付可否確認
  • Redis と Postgres の依存状態確認
  • SIGTERM 受信時の Graceful Shutdown
  • Redis 障害時のメモリー実装へのフォールバック
  • Postgres 接続とクエリーのタイムアウト
  • 運用者向け詳細 API のアクセス制御

Redis は、レート制限や共有キャッシュなど、複数 Pod 間で共有する状態に使用できます。Postgres は監査ログの保存に使用します。ただし、これらを常に必須とするのではなく、環境に応じて readiness の判定条件を変更できるようにしています。

補助的な依存サービスが停止しただけで、診断機能全体が Kubernetes Service から除外されてしまうと、フォールバックを実装した意味がありません。そのため、プロセスの生存、リクエスト受付可否、依存サービスの詳細状態を分離しています。

自動テストで確認していること

公開前の確認では、画面表示だけでなく、実際にサーバーを起動する結合テストも追加しました。現在は、主に以下を自動テストしています。

  • UI とポート許可リストの整合
  • IPv4-mapped IPv6 を使用した内部接続の拒否
  • HTTP、SSL、TCP ポートの各経路での SSRF 対策
  • リクエストサイズの境界値
  • マルチバイト文字を含む JSON のサイズ判定
  • UI トークンがない API アクセスの拒否
  • UDP 指定の拒否
  • 標準モードと厳格モードにおける readiness
  • 運用者トークンの起動時検証

公開後も機能を追加していく可能性があるため、以前修正した問題が再発しないことを確認できる状態にしています。

NetClear が対象としないこと

NetClear は、ネットワーク監視製品や脆弱性診断ツールではありません。また、不特定多数のポートを探索するポートスキャナーでもありません。外部接続を伴う機能には制限があり、内部 IP、特殊用途 IP、許可されていないポートなどは確認できません。

UDP についても、単純にパケットを送信しただけでは、応答がない状態を「閉じている」と断定できません。そのため、現在のポートチェックは TCP に限定しています。NetClear だけで調査を完結させるのではなく、初期確認と切り分けを行い、必要に応じて専門的なコマンドや監視システムへ進む使い方を想定しています。

今後について

現在の機能を安定して運用しながら、表示内容や調査経路を改善していく予定です。機能を増やすことだけを目的にはしていません。ネットワーク調査で必要となる情報を整理し、確認結果から次の調査へ自然に進める構成を維持したいと考えています。

ネットワークや Web サイトの状態を確認する際に、NetClear を利用してみてください。

参考情報

あわせて読みたい:

ネットワーク調査ツール「NetClear」を公開しました – DNS、SSL、HTTP、ポート確認を一つの流れで見る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る