iPXEを使ってPXEBootをやっております。
iPXEのサイトによるとPXEBoot時のPacket CaptureをIntercept(捕まえる)しておくと問題の分析がやりやすいそうです。
GUIのないLinuxやQNAPのようなサーバーにはWiresharkを仕掛けることはできません。
tcpdumpならCUIで動きます。
CommandLine上で全て動きます。
さらにtcpdumpのdumpファイル=PacketCaptureをWiresharkに読み込んで分析することができます。
tcpdumpでdumpファイルを保存し、Wiresharkで分析するところまでをやってみます。
環境
- Debian jessie
- Dnsmasq(proxydhcp) + iPXE
- SSHd
tcpdumpインストール
PXEのPacketを捉えるにはPXE Serverにtcpdumpを仕掛けてPacket Captureするのが手っ取り早い。
PXE Serverにtcpdumpをインストールします。
tcpdumpをインストール
$ sudo apt-get install tcpdump
tcpdumpでPacket Capture
- PXE ServerにTerminalでログインしておきます。
- ClientでPXEBootした瞬間に以下のコマンドを実行します。
PXEをCapture
$ cd ~
$ tcpdump -w ipxe.pcap
- Bootが終わるまでCaptureし続けます。
- Ctrl + cでtcpdumpを止めます。
Wiresharkに分析させる
MacだとFilezillaを使わずに、SCPコマンドを使ってサーバーからファイルを取得することができます。
scpでPacketCaptureをget
$ cd ~
$ scp user@pxeserverip:~/ipxe.pcap ~/Desktop
$ ls ~Desktop/ipxe.pcap
ipxe.pcap
Wiresharkで読み込む。
- Wiresharkを起動
- ファイル > 開く
- ipxe.pcapを開く
- 表示フィルターに ip.addr == pxeserverip and ip.addr == clientip を入れる。
- 表示フィルターの右端のフィルター適用を押す
こうすると、PXESERVERのパケットとClientのパケットだけを分析できます。