OS X Mavericks を実行しており、「パケット フィルター」ファイアウォールを使用しています。ただし、「pflogd」は利用できないようです。
pflog0 という名前のインターフェースを作成し、tcpdump を使用して pf がドロップしたパケットを確認できることが分かりました。ただし、ログ ファイルが必要です。
私の解決策は、launchd plist を作成し、起動時にこのインターフェイスを作成し、tcpdump を (root として) 起動して、すべてを /var/pf.log に記録することでした。これは完璧に機能します。
しかし、tcpdump がバックグラウンドでルート モードで 1 日中実行されることに少し懸念があります。そうすべきでしょうか?
ありがとう
答え1
OS X Mavericks については知りませんが、OS X Mountain でテストしました (起動時ではありません) :
ファイルを編集/etc/sudoers
パスワードを要求されないようにするには、以下を追加します。
youruser ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump
tcpdump をバックグラウンドで起動し、キャプチャ ファイルにログを記録します (ここでの主なポイントは、&
コマンドをバックグラウンドで実行することです)。
sudo tcpdump -i pflog0 -s 0 -B 524288 -w ~/Desktop/myfile.pcap &
tcpdump を停止するには、プロセス ID を取得して tcpdump を強制終了します。
ps -ef
sudo kill pid
キャプチャファイルを開くには:
tcpdump -s 0 -n -e -x -vvv -r ~/Desktop/myfile.pcap
答え2
tcpdump はインターフェースでリッスンするときに sudo を必要としないことがわかりました (特別なオプションはありません)。必要だと思っていましたが...
とにかく、/Library/LaunchDaemons のスクリプトでインターフェースを作成し、~/Library/LaunchAgents の別のスクリプトで tcpdump を起動して、ログを有効にするだけです。すべてうまくいきます :)