我正在运行 OS X Mavericks 并使用“数据包过滤器”防火墙。但是,“pflogd”似乎不可用。
我发现您可以创建一个名为 pflog0 的接口,然后使用 tcpdump 查看 pf 丢弃的数据包。但是,我希望有一个日志文件。
我的解决方案是制作一个 launchd plist 并在启动时创建这个接口,启动 tcpdump(以 root 身份)并将所有内容记录到 /var/pf.log;它运行完美。
但是我有点担心 tcpdump 在后台以 root 模式整天运行,我应该这样做吗?
谢谢
答案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 将其终止:
ps -ef
sudo kill pid
要打开捕获文件:
tcpdump -s 0 -n -e -x -vvv -r ~/Desktop/myfile.pcap
答案2
我发现 tcpdump 在监听接口时不需要 sudo(没有特殊选项),我以为它需要......
无论如何,我只需使用 /Library/LaunchDaemons 中的脚本创建接口,然后使用 ~/Library/LaunchAgents 中的另一个脚本启动 tcpdump 并启用日志记录即可。一切顺利 :)