如何让 Wireshark 在后台监控特定 IP

如何让 Wireshark 在后台监控特定 IP

我已经安装了 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

相关内容