netdiag-mcp¶
オンデマンドのネットワーク診断MCPサーバーです。DNS参照(DNSSEC ADビット確認込み)・
ping・mtrベースの経路レポート・TCPポート疎通確認・HTTPステータス/リダイレクト確認・
TLS証明書確認・WHOIS・ASN/GeoIP逆引きを1本にまとめています。
「〇〇に繋がらない」「DNS反映されたか」といった問い合わせの下調べを、踏み台サーバーへ
都度SSHしてdig/ping/curlを打つ代わりに済ませることを狙っています。
ツール一覧¶
| ツール | 用途 |
|---|---|
dns_lookup |
digによるDNSレコード解決(A/AAAA/MX/TXT/NS/CNAME/SOA/PTR/CAA)。特定リゾルバ指定・平文DNS/DoT/DoH対応 |
dnssec_check |
検証済みリゾルバへ問い合わせADビットの有無を確認(平文/DoT/DoH) |
ping_host |
ICMP ping(countは1〜10にクランプ) |
traceroute_path |
mtr --reportによるホップ単位の経路/損失レポート(固定サイクル、常時実行ではない) |
tcp_port_check |
TCPポートの開放確認(単純なsocket接続、ポートスキャンではない) |
http_check |
URLへHEAD/GETしステータス・リダイレクトチェーン・レイテンシを報告 |
tls_cert_check |
ホストが提示する証明書を取得しsubject/issuer/有効期限/SANを報告 |
whois_lookup |
ドメインのWHOIS参照 |
asn_lookup |
Team CymruのwhoisサービスによるIPのAS番号・国コード逆引き、またはAS番号の組織情報(APIキー・GeoIP DB不要) |
health_check |
バージョンとラップしているバイナリ(dig/ping/mtr/whois)のPATH上の有無 |
全ツールは読み取り専用・単一ターゲットのみ(バッチ/スイープ機能なし)です。運用者が手動で
行う確認のラッパーであり、スキャンツールではありません。nmap的な複数ホスト/ポートの
スキャンは意図的にスコープ外です。
設計上の注意点¶
3ツールは外部バイナリを一切呼びません。 tcp_port_check・http_check・
tls_cert_checkはPython標準のsocket/ssl/httpxスタックを使い、nc/curl/opensslに
依存しません。そのためdig/ping/mtr/whoisしか入っていない(あるいは何も入っていない)
環境でもこの3つは動作します(health_checkが欠けているバイナリを報告するだけで、
サーバー全体は落ちません)。
DNS over TLS/HTTPSには新しいdigが必要です。 dns_lookup/dnssec_checkの
transport="dot"/"doh"(digの+tls/+https)はBIND 9.18以降が必要です。古いdigは
このフラグを拒否して即座にエラーになります(平文DNSへ黙ってフォールバックしない)。
IPアドレス指定でのTLS確認は正常な相手でも失敗しうります。 tls_cert_check/
http_checkをSNIホスティング/CDN配下(Cloudflare等)のオリジンへIPアドレス指定で
実行すると、TLSハンドシェイクが失敗することがあります。SNIはホスト名しか運べないため、
IPリテラルでは共有エッジ上の正しい証明書へルーティングできません。これはツールの不具合
ではなく正常なTLSの挙動です。CDN配下の対象はホスト名で確認してください。
次のステップ¶
- リファレンス — 各ツールのパラメータ・CLI・終了コード