我已经安装了 Wireshark,我想监控特定 IP 地址的流量,因此,如果我能让 Wireshark 在启动时自动启动,然后开始捕获来自或发往eth0
该特定 IP 地址的数据包,那将非常有用。它还可以自动将符合这些规范的捕获数据包保存到我指定的目录中,这也非常有用。我知道可以做这样的事情,或者至少是类似的事情,但我不知道如何让它工作的技术细节,所以这就是我在这里询问它的原因。
即使我无法让它在启动时在后台启动并在不启动任何 GUI 的情况下自行执行此操作,至少有一种办法可以让它过滤并自动保存特定的数据包(即使我需要手动启动 Wireshark)。
信息更新:
目前提供的解决方案似乎不起作用,这是我的/etc/network/interfaces
文件的新内容:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
post-up tcpdump -i eth0 host 80.177.214.176 -w '/home/arthur-dent/tcpdumpLog/eth0-%F-%H-%M-%S.bin' -G 600 &
那么它应该是这样的吗,是否需要重新启动,或者是否要执行任何命令?
操作系统信息:
Description: Ubuntu 14.10
Release: 14.10
封装信息:
wireshark:
Installed: 1.12.1+g01b65bf-2~ubuntu14.10.3
Candidate: 1.12.1+g01b65bf-2~ubuntu14.10.3
Version table:
*** 1.12.1+g01b65bf-2~ubuntu14.10.3 0
500 http://gb.archive.ubuntu.com/ubuntu/ utopic-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu/ utopic-security/universe amd64 Packages
100 /var/lib/dpkg/status
1.12.0+git+4fab41a1-1 0
500 http://gb.archive.ubuntu.com/ubuntu/ utopic/universe amd64 Packages
答案1
建议使用 tcpdump 进行实际的数据包捕获和保存。稍后您仍然可以使用 wireshark 查看数据包的详细信息。
例如(我使用本地 IP 地址,仅用于示例):
sudo tcpdump -i eth0 host 192.168.111.190 -w 'eth0-%F-%H-%M-%S.bin' -G 600
将捕获所有往返于 192.168.111.190 的流量并将整个数据包保存到文件中。为了防止文件过大,并便于后续调查,文件名每 10 分钟更改一次,文件名包含日期和时间作为标识符。示例:
-rw-r--r-- 1 root root 169739 Apr 16 16:11 tcpdump/075/eth0-2015-04-16-16-01-02.bin
-rw-r--r-- 1 root root 60191 Apr 16 16:21 tcpdump/075/eth0-2015-04-16-16-11-02.bin
-rw-r--r-- 1 root root 177895 Apr 16 16:31 tcpdump/075/eth0-2015-04-16-16-21-02.bin
-rw-r--r-- 1 root root 134816 Apr 16 16:41 tcpdump/075/eth0-2015-04-16-16-31-02.bin
-rw-r--r-- 1 root root 660839 Apr 16 16:51 tcpdump/075/eth0-2015-04-16-16-41-02.bin
-rw-r--r-- 1 root root 678867 Apr 16 17:00 tcpdump/075/eth0-2015-04-16-16-51-02.bin
现在,假设我有一个有趣的/var/log/kern.log
条目,我想在数据包级别进行详细调查。我会打开 wireshark,file
然后open
根据日志条目时间戳打开相应的文件。
或者,您可以使用-C
选项来-G
根据文件大小(而不是时间)旋转输出文件。请参阅tcpdump 手册页面以了解更多详情。
现在,为了在启动时自动启动此命令,您可以将其添加到/etc/rc.local
,如评论中所述,但是,这可能容易导致 rc.local 和接口之间出现竞争条件,导致以下条目/var/log/syslog
(其中 1/3 次不起作用):
Apr 22 12:06:45 desk-ss rc.local[679]: tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Apr 22 13:30:47 desk-ss rc.local[674]: tcpdump: eth0: That device is not up
Apr 22 13:33:20 desk-ss rc.local[665]: tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
因此,请考虑添加延迟,或将其作为文件的后续附加/etc/network/interfaces
内容添加。首先,将以下行添加到延迟方法/etc/rc.local
:
sleep 20; tcpdump -i eth0 host 192.168.111.1 -w '/home/doug/eth0-%F-%H-%M-%S.bin' -G 600 &
第二种,post-up方法,这里是/etc/network/interfaces
文件:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
post-up tcpdump -i eth0 host 192.168.111.1 -w '/home/doug/eth0-%F-%H-%M-%S.bin' -G 600 &
作为参考,这里是原始/etc/network/interfaces
文件:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback