10日で覚えるネットワークDay 10: ネットワークトラブルシューティングとツール

Day 10: ネットワークトラブルシューティングとツール

今日学ぶこと

  • 体系的なトラブルシューティングアプローチ(OSIレイヤーごと)
  • 必須ツール:ping、traceroute、nslookup/dig、netstat/ss、curl、tcpdump、Wireshark
  • よくあるネットワーク問題と診断方法
  • ネットワーク監視(SNMP、Nagios、Zabbix)
  • パフォーマンス最適化(帯域幅、レイテンシ、ジッター、パケットロス)
  • クラウドネットワーキングの基礎(VPC、セキュリティグループ、ロードバランサー)
  • ネットワークエンジニアのキャリアパス

体系的なトラブルシューティング

ネットワーク問題を効率的に解決するには、OSI参照モデルの各レイヤーを下から順に確認する方法が有効です。

flowchart TB
    subgraph Approach["OSIレイヤーごとのトラブルシューティング"]
        L1["L1 物理層<br/>ケーブル接続、リンクランプ"]
        L2["L2 データリンク層<br/>MACアドレス、ARP、VLAN"]
        L3["L3 ネットワーク層<br/>IPアドレス、ルーティング、ping"]
        L4["L4 トランスポート層<br/>ポート、TCP接続、ファイアウォール"]
        L7["L5-7 アプリケーション層<br/>DNS、HTTP、TLS、アプリ設定"]
    end
    L1 --> L2 --> L3 --> L4 --> L7
    style L1 fill:#ef4444,color:#fff
    style L2 fill:#f59e0b,color:#fff
    style L3 fill:#22c55e,color:#fff
    style L4 fill:#3b82f6,color:#fff
    style L7 fill:#8b5cf6,color:#fff

各レイヤーでの確認項目

レイヤー 確認項目 ツール
L1 物理 ケーブル接続、ランプ点灯、Wi-Fi信号 目視確認
L2 データリンク MACアドレス、ARP テーブル arp -a, ip link
L3 ネットワーク IPアドレス、デフォルトゲートウェイ、到達性 ping, traceroute, ip addr
L4 トランスポート ポート開放、TCP接続状態 netstat, ss, telnet
L5-7 アプリケーション DNS解決、HTTP応答、TLS証明書 dig, curl, openssl

必須ネットワークツール

ping

指定したホストへのICMPエコーリクエストを送信し、到達性と応答時間を確認します。

# Basic ping
ping -c 4 example.com

# Ping with specific packet size
ping -c 4 -s 1472 example.com

# Continuous ping (Linux)
ping example.com

# Ping with timeout
ping -c 4 -W 2 example.com

出力例:

PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=11.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=56 time=10.8 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=56 time=11.1 ms
64 bytes from 93.184.216.34: icmp_seq=3 ttl=56 time=10.9 ms

--- example.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 10.8/11.0/11.3/0.2 ms
結果 意味
応答あり ネットワーク到達可能
Request timeout ホスト到達不可またはICMPブロック
Destination unreachable ルーティング問題
高いRTT ネットワーク遅延
パケットロス ネットワーク品質問題

traceroute / tracert

パケットが目的地まで経由するルーター(ホップ)を表示します。

# Linux
traceroute example.com

# Using TCP instead of UDP (more reliable through firewalls)
traceroute -T example.com

# Windows
tracert example.com

# Alternative: mtr (combines ping + traceroute)
mtr example.com
flowchart LR
    A["自分のPC"] -->|Hop 1| B["ルーター1<br/>192.168.1.1<br/>1ms"]
    B -->|Hop 2| C["ISP<br/>10.0.0.1<br/>5ms"]
    C -->|Hop 3| D["中継<br/>172.16.0.1<br/>15ms"]
    D -->|Hop 4| E["目的地<br/>93.184.216.34<br/>25ms"]
    style A fill:#3b82f6,color:#fff
    style E fill:#22c55e,color:#fff

nslookup / dig

DNS名前解決を確認するツールです(Day 6で詳しく学びました)。

# Quick DNS check
nslookup example.com

# Detailed DNS query
dig example.com

# Check specific record type
dig example.com MX

# Use specific DNS server
dig @8.8.8.8 example.com

netstat / ss

ネットワーク接続、リスニングポート、ルーティングテーブルを表示します。

# Show all listening ports (ss is the modern replacement for netstat)
ss -tlnp

# Show all TCP connections
ss -tnp

# Show listening ports with process info
ss -tlnp | grep :80

# Show network statistics
ss -s

# Legacy: netstat equivalent
netstat -tlnp
オプション(ss) 意味
-t TCPのみ
-u UDPのみ
-l リスニング状態のみ
-n 名前解決しない(高速)
-p プロセス情報を表示

curl

HTTPリクエストを送信し、レスポンスを確認します。

# Basic GET request
curl https://example.com

# Show response headers
curl -I https://example.com

# Verbose output (request + response details)
curl -v https://example.com

# POST request with JSON
curl -X POST https://httpbin.org/post \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

# Follow redirects
curl -L https://example.com

# Show timing information
curl -o /dev/null -s -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTLS: %{time_appconnect}s\nTotal: %{time_total}s\n" https://example.com

tcpdump

ネットワークインターフェースを流れるパケットをキャプチャします。

# Capture all traffic on eth0
sudo tcpdump -i eth0

# Capture only HTTP traffic
sudo tcpdump -i eth0 port 80

# Capture traffic to/from specific host
sudo tcpdump -i eth0 host 93.184.216.34

# Save capture to file (for Wireshark analysis)
sudo tcpdump -i eth0 -w capture.pcap

# Capture DNS traffic
sudo tcpdump -i eth0 port 53

# Capture with readable output
sudo tcpdump -i eth0 -A port 80

Wireshark

WiresharkはGUIベースのパケット解析ツールで、tcpdumpよりも視覚的にパケットを分析できます。

機能 説明
リアルタイムキャプチャ ネットワークトラフィックをリアルタイムに表示
フィルタリング 表示フィルタとキャプチャフィルタ
プロトコル解析 数百のプロトコルを自動解析
ストリーム追跡 TCP/HTTPストリームの再構築

よく使うWiresharkフィルタ:

http                          # HTTPトラフィックのみ
tcp.port == 443               # HTTPS(ポート443)
ip.addr == 192.168.1.1        # 特定IPのトラフィック
dns                           # DNSクエリのみ
tcp.flags.syn == 1            # SYNパケット(接続開始)
tcp.analysis.retransmission   # 再送パケット

よくあるネットワーク問題と診断

トラブルシューティングのフローチャート

flowchart TB
    Start["インターネットに接続できない"]
    Q1{"ケーブル/Wi-Fi<br/>接続済み?"}
    Q2{"IPアドレス<br/>取得済み?"}
    Q3{"デフォルトGW<br/>にping可能?"}
    Q4{"外部IP<br/>にping可能?"}
    Q5{"DNS解決<br/>可能?"}
    Fix1["ケーブル接続<br/>Wi-Fi再接続"]
    Fix2["DHCP確認<br/>手動設定"]
    Fix3["ルーター再起動<br/>設定確認"]
    Fix4["ISP障害確認<br/>ルーティング確認"]
    Fix5["DNSサーバー変更<br/>8.8.8.8 等"]
    OK["接続成功"]

    Start --> Q1
    Q1 -->|No| Fix1
    Q1 -->|Yes| Q2
    Q2 -->|No| Fix2
    Q2 -->|Yes| Q3
    Q3 -->|No| Fix3
    Q3 -->|Yes| Q4
    Q4 -->|No| Fix4
    Q4 -->|Yes| Q5
    Q5 -->|No| Fix5
    Q5 -->|Yes| OK

    style Start fill:#ef4444,color:#fff
    style OK fill:#22c55e,color:#fff
    style Fix1 fill:#f59e0b,color:#fff
    style Fix2 fill:#f59e0b,color:#fff
    style Fix3 fill:#f59e0b,color:#fff
    style Fix4 fill:#f59e0b,color:#fff
    style Fix5 fill:#f59e0b,color:#fff

よくある問題と対処法

問題 症状 確認方法 対処法
物理接続 完全に通信不可 ランプ確認 ケーブル交換、Wi-Fi再接続
DHCP障害 IPアドレス未取得 ip addr DHCP再要求、手動設定
DNS障害 名前解決失敗 dig example.com DNSサーバー変更
ファイアウォール 特定ポートがブロック telnet host port ルール確認・修正
MTU問題 大きいパケットが通らない ping -s 1472 MTU値を調整
帯域不足 通信が遅い iperf3 QoS設定、帯域増強

ネットワーク監視

SNMP(Simple Network Management Protocol)

SNMPは、ネットワーク機器の情報を収集・管理するためのプロトコルです。

flowchart LR
    subgraph NMS["管理サーバー(NMS)"]
        A["監視ソフトウェア"]
    end
    subgraph Devices["管理対象デバイス"]
        B["ルーター<br/>SNMPエージェント"]
        C["スイッチ<br/>SNMPエージェント"]
        D["サーバー<br/>SNMPエージェント"]
    end
    A -->|GET/SET| B
    A -->|GET/SET| C
    A -->|GET/SET| D
    B -->|TRAP| A
    C -->|TRAP| A
    D -->|TRAP| A
    style NMS fill:#3b82f6,color:#fff
    style Devices fill:#22c55e,color:#fff
SNMPバージョン 認証 暗号化 推奨度
SNMPv1 コミュニティ文字列 なし 非推奨
SNMPv2c コミュニティ文字列 なし 限定使用
SNMPv3 ユーザー認証 あり 推奨

監視ツール

ツール 種類 特徴
Nagios オープンソース プラグインが豊富、老舗
Zabbix オープンソース エージェント型、テンプレート充実
Prometheus オープンソース Pull型、Kubernetes連携
Grafana ダッシュボード 可視化に特化
Datadog SaaS クラウドネイティブ
CloudWatch AWS AWSリソース監視

パフォーマンス最適化

4つの主要指標

flowchart TB
    subgraph Metrics["ネットワークパフォーマンス指標"]
        BW["帯域幅<br/>(Bandwidth)<br/>データ転送の最大容量"]
        LAT["レイテンシ<br/>(Latency)<br/>データ到達までの時間"]
        JIT["ジッター<br/>(Jitter)<br/>レイテンシのばらつき"]
        PL["パケットロス<br/>(Packet Loss)<br/>失われたパケットの割合"]
    end
    style BW fill:#3b82f6,color:#fff
    style LAT fill:#8b5cf6,color:#fff
    style JIT fill:#f59e0b,color:#fff
    style PL fill:#ef4444,color:#fff
指標 定義 測定方法 理想値
帯域幅 単位時間あたりのデータ転送量 iperf3 契約速度に近い値
レイテンシ パケットの往復時間(RTT) ping 国内 < 20ms
ジッター レイテンシの変動幅 mtr < 5ms
パケットロス 失われるパケットの割合 ping -c 100 0%

アプリケーション別の要件

アプリケーション 帯域幅 レイテンシ ジッター パケットロス
Webブラウジング 低い影響 低い影響
ビデオ会議 重要 重要
オンラインゲーム 極低 重要 重要
ファイル転送 低い影響 低い影響 低い影響
VoIP 非常に重要 重要

クラウドネットワーキングの基礎

VPC(Virtual Private Cloud)

VPCは、クラウド上に作成するプライベートネットワークです。

flowchart TB
    subgraph VPC["VPC (10.0.0.0/16)"]
        subgraph Public["パブリックサブネット (10.0.1.0/24)"]
            ALB["ロードバランサー"]
            NAT["NATゲートウェイ"]
        end
        subgraph Private["プライベートサブネット (10.0.2.0/24)"]
            App["アプリサーバー"]
        end
        subgraph DB["データベースサブネット (10.0.3.0/24)"]
            RDS["データベース"]
        end
    end
    IGW["インターネット<br/>ゲートウェイ"]
    IGW --> ALB
    ALB --> App
    App --> RDS
    App --> NAT
    NAT --> IGW
    style VPC fill:#3b82f6,color:#fff
    style Public fill:#22c55e,color:#fff
    style Private fill:#f59e0b,color:#fff
    style DB fill:#ef4444,color:#fff

主要コンポーネント

コンポーネント 説明
VPC 仮想ネットワーク空間
サブネット VPC内のネットワーク分割
インターネットゲートウェイ VPCとインターネットの接続点
NATゲートウェイ プライベートサブネットからの外部通信
セキュリティグループ インスタンスレベルのファイアウォール
ネットワークACL サブネットレベルのファイアウォール
ロードバランサー トラフィックの分散(ALB、NLB)
Route 53 AWS のDNSサービス

セキュリティグループ vs ネットワークACL

項目 セキュリティグループ ネットワークACL
レベル インスタンス サブネット
ステートフル はい いいえ
ルール 許可のみ 許可 + 拒否
評価 すべてのルールを評価 番号順に評価
デフォルト 全拒否(インバウンド) 全許可

キャリアパス

ネットワークの知識は、さまざまなIT分野で活かせます。

flowchart TB
    subgraph Career["ネットワーク関連キャリア"]
        NE["ネットワークエンジニア"]
        SE["セキュリティエンジニア"]
        CE["クラウドエンジニア"]
        SRE["SRE / DevOps"]
        SA["ソリューションアーキテクト"]
    end
    subgraph Certs["主要資格"]
        CCNA["Cisco CCNA"]
        CCNP["Cisco CCNP"]
        AWS["AWS SAA / ANS"]
        SEC["CompTIA Security+"]
        LPIC["LPIC / LinuC"]
    end
    NE --> CCNA
    NE --> CCNP
    CE --> AWS
    SE --> SEC
    SRE --> LPIC
    style Career fill:#3b82f6,color:#fff
    style Certs fill:#8b5cf6,color:#fff
キャリア 主な業務 推奨資格
ネットワークエンジニア ネットワーク設計・構築・運用 CCNA, CCNP
セキュリティエンジニア セキュリティ対策・監視 CompTIA Security+, CISSP
クラウドエンジニア クラウドインフラ設計 AWS SAA, Azure AZ-104
SRE / DevOps 信頼性・自動化 CKA, AWS DevOps
ソリューションアーキテクト システム全体設計 AWS SAP, TOGAF

まとめ

今日学んだことの整理

トピック キーポイント
トラブルシューティング OSIレイヤーを下から順に確認
必須ツール ping, traceroute, dig, ss, curl, tcpdump, Wireshark
よくある問題 物理接続、DHCP、DNS、ファイアウォール、MTU
ネットワーク監視 SNMP、Nagios、Zabbix、Prometheus
パフォーマンス指標 帯域幅、レイテンシ、ジッター、パケットロス
クラウドネットワーキング VPC、セキュリティグループ、ロードバランサー
キャリアパス NE、セキュリティ、クラウド、SRE

重要ポイント

  1. 体系的なアプローチが重要:闇雲に試すのではなく、レイヤーごとに切り分ける
  2. ツールを使いこなす:適切なツールを選べることがプロの条件
  3. 監視は予防:問題が起きてからではなく、常時監視で早期発見
  4. クラウドの知識は必須:現代のネットワークはクラウドと切り離せない

練習問題

基礎レベル

  1. 「Webサイトにアクセスできない」という問題に対し、OSIレイヤーの下から順に確認すべき項目とコマンドを列挙してください。
  2. pingtracerouteの違いを説明し、それぞれどのような場面で使うか述べてください。
  3. クラウドにおけるセキュリティグループとネットワークACLの違いを3つ挙げてください。

中級レベル

  1. 以下のpingの結果から、何が問題かを診断してください。
    64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=1.2 ms
    64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.1 ms
    Request timeout for icmp_seq 3
    64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=245.3 ms
    Request timeout for icmp_seq 5
    64 bytes from 10.0.0.1: icmp_seq=6 ttl=64 time=1.3 ms
    
  2. Webアプリケーションが遅い場合の原因を、ネットワーク(帯域幅、レイテンシ)、DNS、サーバー(CPU、メモリ)の3つの観点から診断する手順を説明してください。
  3. VPCを設計し、パブリックサブネットにWebサーバー、プライベートサブネットにアプリサーバー、データベースサブネットにRDSを配置する構成図と、必要なルーティングテーブルを作成してください。

上級レベル

  1. 大規模なeコマースサイトで、特定のページだけが間欠的に遅くなるという報告がありました。tcpdumpとWiresharkを使った詳細な診断手順を説明してください。
  2. 以下の要件を満たすネットワーク監視システムを設計してください:
    • 100台以上のサーバーとネットワーク機器を監視
    • CPU、メモリ、ディスク、ネットワークトラフィックのメトリクス収集
    • 異常検知と自動アラート
    • ダッシュボードでの可視化
  3. マイクロサービスアーキテクチャにおけるサービスメッシュ(Istio等)がネットワークトラブルシューティングに与える影響と、従来のネットワーク監視との違いを論じてください。

参考リンク


おめでとうございます!

おめでとうございます!10日間のネットワークの学習を完了しました。

この10日間で学んだことを振り返りましょう:

Day テーマ 学んだこと
Day 1 ネットワーク基礎 ネットワークの基本概念
Day 2 OSI参照モデル 7層の役割と通信の流れ
Day 3 IPアドレスとサブネット IPv4/IPv6、CIDR
Day 4 TCP/UDP トランスポート層プロトコル
Day 5 スイッチングとルーティング L2/L3の転送技術
Day 6 DNS 名前解決の仕組み
Day 7 HTTPとWeb Webプロトコルの詳細
Day 8 TLS/SSLとセキュリティ 暗号化と防御
Day 9 ワイヤレスとVPN 無線技術とVPN
Day 10 トラブルシューティング 診断ツールと実践

ネットワークの知識は、すべてのIT分野の基盤です。この10日間で学んだことを土台に、実務での経験を積み、さらに深い知識を身につけてください。

次のステップ:

  • 実際のネットワーク環境で学んだツールを使ってみる
  • CCNA等の資格取得に挑戦する
  • クラウド環境(AWS、Azure、GCP)でVPCを構築してみる
  • 自宅ラボを構築して実験する