Network Doctor(netdoc)とは?ネットワーク障害を層別に診断する CLI ツール
「ping は通るのに HTTP がつながらない」「DNS が疑わしいが dig の出力をどう読めばいいかわからない」――ネットワーク障害の切り分けは、熟練したインフラエンジニアでも時間のかかる作業です。Network Doctor(コマンド名: netdoc)は、そのプロセスを自動化した Go 製のクロスプラットフォーム CLI TUI ツールです。
2026年9月13日に v1.17.0 がリリースされ、OpenSSH キーワード構文のサポートや、オフラインスナップショット読み込みの改善が加わりました。スター数は371を超え、コントリビューター17人が継続的に開発に参加しています。
ネットワーク診断ツール CLI の比較――なぜ今このツールか
従来のネットワーク診断は ping、dig、curl、traceroute、openssl s_client など多数のコマンドを組み合わせる必要があり、それぞれの出力を人間が読み解かなければなりませんでした。
Network Doctor は依存グラフに基づくプローブ設計を採用しており、「DNS が失敗したら TCP・TLS・HTTP はスキップ(原因不明のフォールスラームを防ぐ)」という連鎖的な診断を自動で実行します。最終的な出力は「障害が発生しているレイヤーと、次にやるべきこと」という平易な英語の verdict です。
| ツール | 診断の深さ | root権限 | TUI | JSON出力 | クロスプラットフォーム |
|---|---|---|---|---|---|
| ping | L3のみ | 一部要 | ❌ | ❌ | △ |
| dig | DNS のみ | 不要 | ❌ | △ | ✅ |
| curl | HTTP のみ | 不要 | ❌ | ❌ | ✅ |
| netdoc | L2〜L7 全層 | 不要 | ✅ | ✅ | ✅ |
| mtr | L3 経路 | 一部要 | ✅ | △ | △ |
root 権限なしで path-MTU チェックも実行できる点は、コンテナ環境や制限されたサーバー環境での利用に特に有用です。
最新 v1.17.0 の変更点
v1.17.0(2026-09-13)では、OpenSSH の Host, Match, Include などのキーワード形式の構文解析が強化されました。SSH 設定でエイリアスを多用している環境での SSH バナーチェックが正しく動作するようになっています。
インストール方法(Linux・macOS・Windows 対応)
macOS・Linux(Homebrew)
brew install network-doctor
Homebrew Core に収録されており、brew upgrade network-doctor で最新版に更新できます。
Windows(Scoop)
scoop bucket add heymaikol https://github.com/heymaikol/scoop-bucket
scoop install network-doctor
Linux(パッケージマネージャー)
各ディストリビューションに対応した prebuilt パッケージが Releases ページから取得できます。
# Debian/Ubuntu
sudo apt install ./network-doctor_X.Y.Z_linux_amd64.deb
# RHEL/Rocky/AlmaLinux
sudo dnf install ./network-doctor_X.Y.Z_linux_amd64.rpm
# Alpine Linux
sudo apk add --allow-untrusted ./network-doctor_X.Y.Z_linux_amd64.apk
Go から直接インストール
go install github.com/heymaikol/network-doctor/cmd/netdoc@latest
Go 1.27 以上が必要です。インストール後は netdoc --version でバージョンを確認してください。
DNS TCP TLS 障害 切り分け コマンドの基本的な使い方
ローカルネットワーク全体を診断する
netdoc
引数なしで実行すると、ローカルインターフェース・DNS・外部向け egress・Wi-Fi 接続を一括チェックします。
特定ホストを診断する
netdoc github.com # DNS, TCP, TLS, HTTP を全レイヤーで確認
netdoc github.com:22 # ポート指定 → SSH バナーのチェックに切り替わる
netdoc https://api.example.com/health # HTTPS エンドポイントの到達性確認
間欠的な障害を捕捉する(Watch モード)
netdoc --watch github.com
--watch は継続的に再実行し、障害発生〜復旧までのインシデントタイムラインをバッファに保持します。i キーでタイムライン確認、w でファイルに保存できます。
スクリプト向け JSON 出力
netdoc --json github.com
verdict フィールドに ok, degraded, dns, network, service, incomplete のいずれかが入り、終了コードも 0(正常)/ 1(異常)/ 2(実行不可)で返るため、CI/CD パイプラインや監視スクリプトへの組み込みに適しています。
診断スナップショットの保存と比較
# 障害時のスナップショット保存
netdoc --save snapshot_fail.ndoc github.com
# 2 つのスナップショットを比較(ソケットを開かずオフライン比較)
netdoc --compare snapshot_good.ndoc snapshot_fail.ndoc
サポートへの問い合わせ時は --support フラグで個人情報を匿名化したスナップショットを生成できます。
こんなインフラエンジニアに向いている
SRE・インフラエンジニアの日常業務
本番環境でアラートが発火したとき、障害の原因レイヤーを即座に特定したい SRE にとって、netdoc target.hostname の一発コマンドは非常に有効です。「DNS は問題なし、TCP 接続成功、TLS ハンドシェイク失敗」という具体的な verdict が出るため、無駄な調査を省けます。Watch モードを常駐させておくことで、間欠的な障害のタイムラインを自動記録できます。
DevOps エンジニア(CI/CD パイプライン組み込み)
--json オプションと終了コードを活用して、デプロイ後のスモークテストとして netdoc を組み込めます。例えば、ロードバランサーの背後にある新しいエンドポイントが正常に応答するか、TLS 証明書の有効期限が近づいていないかを CI パイプラインで自動チェックするユースケースです。
ネットワーク管理者・セキュリティエンジニア
--two-sided 診断モードでは、2 つの拠点から同じターゲットへの診断を比較し、障害がどちらの側に固有なのかを判定できます。--via server host を使えば SSH 経由でリモートマシンから診断を実行でき、エージェント不要・インストール不要で利用できます。
使う前に知っておきたいこと
プラットフォームと依存関係
netdoc は Linux・macOS・Windows に対応しており、バイナリ 1 本で動作します。Go ランタイムは実行時不要です。ただし、netdoc-sim(Challenge Mode 用シミュレーター)は Linux のみ提供されています。macOS/Windows では Challenge Mode は利用できません。
権限と制限
root 権限は一切不要ですが、一部の組み込みドリルダウンツール(例: traceroute の ICMP モード)は OS 側で root が必要な場合があります。netdoc 自身はその場合でも動作し、代替手法で診断を継続します。
ライセンス
Network Doctor は Apache-2.0 ライセンスです。商用利用・改変・再配布が可能ですが、NOTICE ファイルの記載を保持することが求められます。
--no-reference-egress フラグ
netdoc は外部の参照サービス(egress チェック用)と通信します。エアギャップ環境・閉じたネットワーク環境では --no-reference-egress フラグを付けることで外部通信なしの診断に限定できます。
Issue のトレンド
2026年9月時点のオープン Issue は主にシミュレーターのバウンドチェック・プロキシ診断の改善に集中しており、コアの診断ロジックは安定しています。
まとめ
Network Doctor(netdoc)は、ping や dig の結果をコピペして読み解く手間を省き、「どのレイヤーで何が壊れているか」を一発で教えてくれるCLI TUI ツールです。root 権限不要・クロスプラットフォーム・JSON 出力対応と、個人の開発環境から CI/CD 組み込みまで幅広く活用できます。
まずは brew install network-doctor でインストールして、netdoc github.com を実行してみてください。診断フローを見るだけでも、ネットワーク障害の切り分け方法を体感できます。
関連ツール・おすすめサービス
- DigitalOcean — 開発者向けクラウド・App Platformでかんたんデプロイ
- さくらVPS — 国内ホスティングでのセルフホストならこちら
この技術を学ぶ
CLIに興味を持った方には、Udemyのオンラインコースもおすすめです。
- 🎓 関連するCLIコース一覧 — セール時(最大90%OFF)を狙うとお得です
関連記事
この記事が役に立ったらシェアしてください