「ネットワークがおかしいんですけど」ハンドブック


これはなに?

社内ネットワークで問題が起こった時に、私が調査する観点を書き出してみた。
各組織、各人のやり方はあると思いますが、何かの参考になれば。
#無線に明るくないため、無線は割愛

調査概要

レイヤー

L1 -> L3(L4) -> L2 -> L7 の順番で見る。

  • 何はなくとも物理層。障害の大半はここ。
  • 次いで IPアドレス周りやフィルタ。

各レイヤーで見ることは後半で。

切り分け観点

  • 問題が起こっているのは一人か?複数か?
    • 複数の場合どの単位か?島、セグメント、など。
  • 問題は一時的?常時?
    • 一時的なら何と相関するか?トラフィック量、日時、など。
  • 今まで使えていたのか?新たに使おうとしてだめなのか?
  • 物理障害?論理障害?
  • どこまで疎通できるのか?
    • デフォルトゲートウェイ(デフォゲ)?ISPのルータ?8.8.8.8?

調査に使う代表的なコマンド/ツール

  • ifconfig ipconfig
    • 端末の IPアドレス設定など確認
  • netstat route
    • 端末のルーティングテーブル確認
  • ping
    • どこまで疎通できるか
    • ICMP のエラーメッセージは宝物
  • traceroute tracert
    • どこまで疎通できるか
    • パケットが届いていないのか、ICMP エラーを返さない設定なのかは判断つかないので、インターネット上は参考程度に
  • arp
    • 実存確認
    • IPアドレス被り確認
  • tcpdump wireshark
    • 端末でのパケット確認
    • 適切な場所で pcap を取得できれば、解決に近づく

知識

  • TCP/IP の正しい挙動
    • 正しい挙動との差分を見ることで、事象を把握する

L1調査

障害が物理セグメントに紐づく

  • 物理ミスがないか確認する
    • HUBなどの電源が抜かれてないか
    • ポート挿し間違え
    • ケーブル (ストレート/クロス)
      • AutoMDI/MDIX は、autoネゴじゃないと効かないので注意
    • メタルケーブルは 100m まで
  • ポート挿し替え、ケーブル入れ替えてみる
    • ポート/ケーブル不良がないか切り分ける
      • ケーブルの内部断線、接触不良はよくある
  • half でリンクアップしてる?
    • autoネゴと固定のインタフェースを接続すると、auto側が half でリンクアップする
    • 通信はできるがエラーが頻発する
    • 機器によって(Catalystなど)は 1G/half の実装がなくて、auto と 1G/full固定を接続しても 1G/full でリンクアップする機器もある

障害が端末単体

  • 同上

L3/L4調査

障害が論理セグメントに紐づく

  • ルータ調査
    • インタフェース設定確認
      • IPアドレス/マスクが正しい?
      • IPアドレスかぶりしてない?
      • エラーパケット発生頻度はどうか?
    • ルーティングテーブル確認
      • デフォゲある?
    • ping をうつ
      • 自身のIPアドレス
      • デフォゲ
      • 対向ISPルータ
      • 8.8.8.8
    • フィルタリング
      • ルータのACL
      • Firewallのポリシー
        • 上二つは、設定変更というトリガーがあるはずなので、気づきやすい
      • 端末のパーソナルファイアウォール、iptables
    • 各種リソース
      • NATテーブル
      • トラフィック
        • 理論上WireSpeed以上はでない
      • セッションテーブル
        • FW や SLB など L4 以上みる機器の場合

障害が端末単体

  • インタフェース設定確認
    • ipconfig /all ifconfig -a
      • IPアドレス/マスクが正しい?
      • IPアドレスが 169.254.x.x?
        • この場合は DHCP の IPアドレス取得失敗
          • ルータ(DHCPサーバ)との疎通?
          • ルータ(DHCPサーバ)の DHCPプール?
    • ルーティングテーブル確認
      • route print netstat -rn
        • デフォゲある?
        • 個別のルーティングが切られている?
    • 設定問題なかったら、近くから順に ping をうつ
      • 127.0.0.1(loopbackアドレス)
      • 自身のIPアドレス
      • デフォゲ
        • デフォゲが失敗したら、隣の人宛
      • 対向ISPルータ
      • 8.8.8.8
      • 本当に繋ぎたいアドレス
        • ここまでいけば L3/L2 は大抵OK

L2調査

障害が物理セグメントに紐づく

  • ルータ/SW調査
    • デフォゲの arp が正しく解決できているか
    • MACアドレステーブル確認
      • デフォゲのMACが正しいインタフェースに紐づいているか
    • 対向機器とネイティブVLAN比較
      • タグVLANを使っている場合
        • ネイティブVLANにはタグがつかない
          • ネイティブVLANが違うと認識がずれる

障害が端末単体

  • デフォゲの arp が正しく解決できているか
    • ping した後に(ping は失敗する前提) arp -a
      • 正しく解決できている
      • 違う MACアドレスが解決できている
        • 静的エントリが入っている?
        • 違うネットワークにつながっている?
      • 解決できていない
        • 違うネットワークにつながっている?

L7調査

  • DNS
    • 名前解決確認
      • nslookup dig
        • 本来のリゾルバ指定
        • オープンリゾルバ (@8.8.8.8) 指定
  • HTTP(S)
    • エラーコードある?
    • SSLネゴシエーション?
      • pcap取得してどこで失敗しているか