项目名:IPwatchD-IP冲突检测工具
作者:雅罗斯拉夫·伊姆里希(Jaroslav Imrich)
项目主页: IPwatchD
介绍
使用GNU /Linux操作系统时,您可能会不时遇到由于IP冲突而导致网络连接中断的情况。当在同一网络上的两个或多个主机配置了相同的IP地址时,会发生IP冲突事件。目前,Linux内核中似乎没有代码可以通过以下方式解决这种情况:适当的免费ARP响应。通常,Linux内核会让网络管理员完全无知,并且需要用困难的方式解决IP冲突。幸运的是,有一个名为IPwatchD的简单守护程序,其主要目的是捕获和评估包通过这种方式可以防止IP冲突的发生。这是在libpcap的帮助下完成的 Library 。 IPwatchD守护程序用C语言编写,可以在被动或主动模式下运行。被动模式和主动模式之间的区别在于,在被动模式下,IPwatchD仅通过使用syslog守护程序记录每个IP冲突事件,而在主动模式下,IPwatchD进一步向前移动并响应免费ARP请求是防止IP冲突的主要构成要素。本文将在安装,配置和用法方面探索这个简单的守护程序。
先决条件
在我们可以在GNU /Linux操作系统下安装IPwatchD之前,建议先确认IPwatchD所需的所有先决条件已安装在系统上。这是您需要在Ubuntu 8.10上安装的软件包的列表。
* build-essential - C compiler and other development tools
* libpcap-dev - Network packet capture library
* libnet1-dev - Network packet construction library
* libnotify-dev - sends desktop notifications to a notification daemon
在ubuntu或debian linux上,您可以使用以下命令安装这些软件包linux命令:
# apt-get install build-essential libpcap-dev libnet1-dev libnotify-dev
安装
现在,我们已经安装了所有必需的先决条件,是时候编译并安装IPwatchD守护程序了。有两种类型的IPwatchD安装。
- 带有build-in GUI消息通知的桌面版本
- 服务器版本仅包含IPwatchd守护程序,而没有GUI消息通知
桌面版和服务器版之间的区别在于,在桌面版中,IPwatchD通过在GUI上显示消息以及相关的长文件来对IP冲突事件做出反应。与台式机版本相反,服务器版本仅将IP冲突事件记录到相关的日志文件中。
IPwatchD桌面版
台式机和服务器版本的IPwatchD的安装例程非常相似。下载IPwatchD源代码压缩包然后输入以下linux命令s:
$ bunzip2 ipwatchd-x.x.tar.bz2
$ tar xvjf ipwatchd-x.x.tar
$ cd ipwatchd-x.x/src
$ make
编译二进制文件后,以超级用户(root)身份登录并输入:
# make install
IPwatchD服务器版本
要安装IPwatchD服务器版本,请编译IPwatched源代码通过:
$ bunzip2 ipwatchd-x.x.tar.bz2
$ tar xvjf ipwatchd-x.x.tar
$ cd ipwatchd-x.x/src
$ make daemon
编译二进制文件后,登录超级用户(root)并输入:
# make install
此时,所有IPwatchD可执行二进制文件都将复制到/usr /local /sbin中。可以在/usr /local /etc目录中找到配置文件。
注意:要卸载IPwatchD,只需以root用户身份发出命令:
make unistall
组态
正如上面已经提到的,IPwatchD守护程序可以在两种模式下工作。要指示此守护程序以活动方式在eth0上进行侦听,请修改配置文件/usr/local/etc/ipwatchd.conf并添加以下行:
eth0 active
IpwatchD守护程序还可以使用虚拟接口。因此,如果要IPwatchD以被动模式在eth0:1网络接口上侦听,请随意添加“ eth0:1被动”行。
用法
IPwatchD 1.1.1的当前版本不能自行启动。要启动IPwatchD,请运行以下命令linux命令以root用户身份:
# /usr/local/sbin/ipwatchd -c /usr/local/etc/ipwatchd.conf
通过ps命令确认IPwatchD在您的系统上运行:
ps aux | grep ipwatchd
您应该得到与以下输出类似的输出:
root 10814 0.0 0.2 2032 572 ? Ss 19:27 0:00
/usr/local/sbin/ipwatchd -c /usr/local/etc/ipwatchd.conf
root 10818 0.0 0.3 3240 796 pts/1 R+ 19:27 0:00 grep ipwatchd
逻辑如下,现代操作系统正在尝试通过在引导时或在网络接口重新配置期间发送特殊类型的ARP广播数据包来避免IP冲突。这种特殊的广播数据包称为[http://wiki.wireshark.org/Gratuitous_ARP免费ARP]。免费ARP数据包的目的是发现,如果它们要获取的IP地址尚未被另一个主机占用。
GUI通知消息的替代方法是syslog文件。 IPwatchD还将所有相关的IP冲突事件记录到syslog文件中。这是IPwatchD守护程序生成的示例消息:
an 11 20:50:47 linuxconfig-desktop IPwatchD[13215]: MAC address 8:0:27:b6:5a:6c causes
IP conflict with address 10.1.1.6 set on interface eth0 - active mode - reply sent
Jan 11 20:50:47 linuxconfig-desktop avahi-daemon[3965]: Withdrawing address
record for 10.1.1.6 on eth0.
注意:要停止IPwatchD守护程序,可以使用kill命令。这样,IPwatchD守护程序会收到SIGTERM信号,该信号将优雅地停止此过程,释放已使用的内存并停止在网络接口上侦听。从长远来看,要使其自动运行,还可以创建一些简单的守护程序init.d脚本,并从系统上适当的运行级别目录将其链接。
结论
IPwatchD当然是一个方便的工具,有时可以节省您的一天。但是,也有一些限制。 IPwatchD 1.1.1的当前版本仅限于GNOME图形用户界面。但是,如果出现某些意外的连接问题,仍然可以使用服务器版本并引用syslog文件。