UUUMエンジニアブログ

UUUMのエンジニアによる技術ブログです

パケットキャプチャに入門しました

システムユニットの5n4wasa6です。

UUUMではゲームの運用も行なっており、最近アプリのNW対応をしていたエンジニアがおり、普段業務で、触ることのないパケットキャプチャの勉強をし他ので綴る。

※キャッシュ(CDN)対応をしていたので、パケチャは関係ないのだが...

UUUMには、福利厚生の一環でエンタメ費として10,000円まで支給される制度があり、攻殻機動隊員は、主に技術書を購入している(と思う)。

業務では、なかなか触れない領域の知識を身に着けることも非常に大事であるため、この制度を利用してインプットをしている。

詳しくはこちら

はじめに

私は、前々職でキャリアの法人営業をしており、

800程拠点のある運送業様のNW(主にWAN)を担当し、NWエンジニアと毎週謝りに手厚いサービスを提供していた。

一番記憶に残っているのは、3週連続土曜日に同拠点同区間で障害がおきたことで、原因は小動物(ネズミ)によるケーブル断線(地下埋設)。

解決策は、ケーブルに唐辛子(カプサイシン)を練りこんだカバーをおおうことで、障害はおさまった(笑)

マスタリングTCP/IPは数回読んだが、パケットキャプチャを使ったことがほぼなかったの今回はこちらを購入して実際にパケットキャプチャしてみた。

パケットキャプチャの教科書

パケチャ本まとめ (第3章まで)

第1章 パケットキャプチャの流れ

パケットキャプチャとは…

  • パケット => NWを介してやりとりされたデータ(小包)
  • キャプチャ => 取得する、捕捉する ex)画面キャプチャ

どんな時にパケットキャプチャするか?

[インフラシステム構築の6フェーズ]

①要件定義 -> ②基本設計 -> ③詳細設計 -> ④構築 -> ⑤試験 -> ⑥運用管理

  • パケットキャプチャが活躍するフェーズ
    • 試験フェーズ => 単体試験、正常試験、障害(冗長化)試験など各試験を実施するフェーズ

      • 試験にパスしなかった場合に、失敗原因を追求
      • 試験結果に関わらず、お客様にエビデンス提出することも有
    • 運用管理フェーズ => サービスインしたサービスを継続的かつ安定的に維持する

      • 設定変更
      • トラブル対応 ※パケットキャプチャが役立つのがこちら

パケットキャプチャツール

  • Wireshark

  • tcpdump → CLIでしか使用できない環境で利用 → パケットキャプチャした後に、SCPやFTPで移動して、Wireshark環境のあるPCで解析することもある)

  • Micsoft Message Analyzer → 本番商用環境等で、OSSを安易にインストールできない環境で利用 → tcpdumpと同様、キャプチャしたデータをWiresharkで解析することも可能

パケットキャプチャ手法の検討

  • パケットキャプチャ端末自身がやりとりしているパケットをキャプチャする
    • パケットキャプチャツールは、パケットキャプチャ端末自身が持っているNICを通過するパケットをソフトウェア的にインターセプト(傍受、盗み見)してキャプチャする。
    • パケットキャプチャの処理不可は気を付ける点であり、フィルタ条件を指定することで対象のパケットを絞り込むなどして、処理負荷の軽減を図る。
  • パケットキャプチャ端末とは別の端末がやりとりしているパケットをキャプチャする
    • この場合、自分のNICにパケットを流し込むためにの仕掛けが必要 リピータハブミラーポート(圧倒的にこちらが多い)

    リピータハブ… 受け取ったパケットのコピーを、そのままその他全てのポートに転送するネットワーク機器。(バカハブ)

    ミラーポート… 指定したポートでやりとりしているパケットを別のポートにリアルタイムにコピー。(SPAN)

最近では、ミラーポート機能を備えたスイッチが安価に入手できるため、ミラーポートが圧倒的に多いようです。 コストにかなりシビアで機能を求めていない企業様はまだ、バカハブを使っていると思われる。(数年前は結構使っている企業あった)

第2章 Wiresharkの使い方

Wiresharkのインストール https://www.wireshark.org/#download

wiresharkの見方や便利機能はこちらの記事を参考にしました。

物理アドレス解決(MAC)ネットワークアドレス解決(IP)の設定をしておくと、直感的でわかりやすい。

こんな感じですね。

【設定前】 設定前

【設定後】 設定後

第3章 Layer2プロトコル

  • レイヤー2プロトコル… 現代のNWで使用されているのは、Ethernet(有線LAN)とIEEE802.11(無線LAN)のどちらか

  • Ethernetプロトコル Ethernetネットワークを流れるパケットのことをEthernetフレームという

  • Ethernet Ⅱのフレームワークフォーマット

プリアンブル,宛先/送信元MACアドレス,タイプ,Ethernetペイロード,FCSの5つのフィールドで構成。 宛先/送信元MACアドレス,タイプを合わせてEthernetヘッダーと言う。

プリアンブル 「これからEhernetを送りますよー」と言う合図を意味する64ビット(8バイト)の特別なビットパターン。先頭から「1010101010」が7つ送られ、最後に「10101011」が1つ送られる。 受信側はこの特別なビットパターンを見て、「これからEhternetフレームが届くんだな」と判断。 ※Wiresharkでキャプチャする前に取り外される。

宛先/送信元MACアドレス Ehernetネットワークにおける住所のようなもの。 Ehernetネットワークに接続されている端末を表す48ビット(6バイト)の識別ID。

タイプ ネットワークそうでどんなプロトコルを使用しているかを表す16ビット(2バイト)の識別IDです。IPv4だったら「0x0800」、ARPだったら「0x0806」など使用するプロトコルによって値が決まっています。

Ethernetペイロード 上位層のデータそのもの。 IPだったら「IPパケット」、APRだったら「ARPフレーム」 データのサイズは、デフォルトで46バイトから1500バイトまでで、この範囲に収めなければいけない。 46バイトに足りない場合、「パディング」と呼ばれるダミーのデータを付加して強引に46バイトに。 1500バイト以上の場合、上位層でデータを分割して1500バイトに収める。 Ethernetフレームに入るデータの最大サイズをMTU(Maximum Transmission Unitと言う)

FCS (Frame Check Sequence) Ethernetペイロードが壊れていないかどうかを確認する32ビット(4バイト)フィールド。 Ethernetペイロードに対して一定の計算(チェックサム計算、CRC)を行い、その結果をFCSとしてフレームの最後に付与。 受信側の端末がフレームを受け取ると、同じ計算を行い、その値がFCSと同じだったら正しいEthernetフレームと判断。 FCSは送信側から見て、Wiresharkでキャプチャした後に付与され、受信側から見てキャプチャキャプチャする前に取り外される。 フレーム長としても換算されない。

MACアドレス Ehernetネットワークに接続している各端末(ノード)の識別IDです。 NICを製造するときにROMに書き込まれる。 48ビットで構成され、16進数で表記。

先頭から8ビット目にあるI/Gビット (Individual/Groupビット)と 7ビット目にあるU/Lビット (Unique/Localビット)が特別な意味を持つビット。

I/Gビット (Individual/Groupビット) 1:1通信のためのユニキャストアドレスか、1:n通信のためのマルチキャストアドレスかを表す。 0の場合、各端末に個別に割り当てられているMACアドレス 1の場合、複数の端末のグループに割り当てられているMACアドレス ※同じEthernet上にいる全ての端末を表すブロードキャストアドレスは、全てのビットが1の「ff:ff:ff:ff:ff:ff」の特別なMACアドレスが割り当てられる。

U/Lビット (Unique/Localビット) そのMACアドレスがグローバルアドレスローカルアドレスかを表している。 Wiresharkでは、LG bitと表記されます。 0の場合、IEEEから割り当てられた世界で唯一のMACアドレス 1の場合、管理者が独自に割り当てたMACアドレス

3種類のMACアドレス

通信の種類 送信元:宛先 送信元MACアドレス 宛先MACアドレス
ユニキャスト 1:1 送信元端末のMACアドレス 宛先端末のMACアドレス
ブロードキャスト 1:n(同Ethernet上の全端末) 送信元端末のMACアドレス ff-ff-ff-ff-ff-ff
マルチキャスト 1:n(特定Groupの端末) 送信元端末のMACアドレス I/Gビットが「1」のMACアドレス

PPPoE (Point to Point over Ethernet) ポイントとポイントを1:1に繋ぐためのに繋ぐためのレイヤー2プロトコル

ARP (Address Resolution Protocol) 実際のデータ通信に先立って,IPアドレスからMACアドレスを求めるもの

終わりに

パケットキャプチャのまとめと言うよりも、TCP/IP基礎のまとめになってしまったため、 レイヤー2までとして、次回以降(たぶんない)見せ方を工夫せねば... (次回は、業務のお話を書こう)

弊社では、ネットワークに長けているアプリケーションエンジニアも募集しております。

www.wantedly.com