摘 要:本文主要介绍了地址转换协议ARP在网际互连中的作用,以及如何利用ARP技术将IP地址与MAC物理地址绑定,防止局域网IP地址被盗用的问题。
关键定:IP地址 MAC地址 ARP 捆绑
一、前 言
在网络高速发展的今天,其应用已经涉及现代生活的方方面面,对于网络管理员来讲,加强网络安全管理工作,无疑是一件重要的事情,而其中解决IP地址盗用问题,又是网络管理工作中的一件非常棘手的事情。
在网际互连中,地址转换协议ARP是将IP地址与网络接口卡的物理地址(MAC)相关联的一个环节。IP地址在一定范围内,客户可以随意更改(或称为IP盗用),而网卡的MAC地址相对而言却是唯一的、难以更改的,利用ARP程序将IP地址与MAC地址绑定,就可以解决IP地址被盗用的问题。
二、ARP协议
ARP协议是与IP协议配套使用的一种重要协议,它将上层的IP地址与底层的MAC地址进行绑定,在主机上生成一张IP与MAC地址的映射表(ARP Table),存储在高速缓存区(ARP Cache)中。每个主机都有各自的ARP Cache。
ARP协议由三部份:输出模块、输入模块和高速缓存管理程序组成。下面举一个例子来说明ARP工作的过程与ARP的功能。
图1 ARP工作过程示意图
当主机A通过域名www.ief.cug.edu.cn访问主机B时,就要通过DNS服务器将域名解释为202.114.194.130,再利用ARP协议将IP地址转换为MAC地址00-00-00-21-97-54,从而确定主机B,然后主机A与主机B进行通信。
如果主机A直接利用IP地址访问主机B时,主机A首先在自己的ARP Cache中查看B的IP地址,如果存在B的IP与MAC映射关系,就可以查出B的MAC地址,然后将报文发往此MAC地址。
如果B刚刚加入网络中,或A刚刚上电初始化,其ARP Cache尚是空的,那么在A的ARP Cache中就不会找到B的IP的地址。这种情况下,A就会运行ARP输出模块,执行下列过程找出主机B的MAC地址。
① 在网络中广播发送一个ARP请求分组,上面写有B的IP地址和A的IP与MAC地址的映射关系。
② 本网络中所有入网的主机都通过ARP输入模块收到A的ARP请求分组。
③ 主机B在ARP请求分组中查到自己的IP地址,就向A发送一个ARP响应分组,上面写入B的IP地址与MAC地址,并处理A的ARP请求分组,如果B的ARP Cache中不存在A的IP与MAC映射,则将A的IP与MAC的映射加入ARP Cache中。
④ 主机A接收到B的ARP响应分组后,将其写入ARP Cache中。
通过上面的实例,我们已经清楚地看到ARP工作的全过程,如果在主机A上电,ARP初始化结束后,管理员通过程序将IP与MAC映射写入ARP Cache中,就可以使服务器不必广播发送ARP请求分组,这样就可以防止IP地址被盗用。但是如何得到客户端主机的MAC的地址呢?
三、获取MAC地址
网络管理员在合理分配IP地址后,就要获取每一个分配IP地址主机的MAC地址,并将其写入服务器的ARP Cache中,将IP与MAC建立映射,即进行绑定。
获得客户主机的MAC地址的方法,下面介绍几种:
①使用网卡厂家提供的驱动盘上的设置程序查看MAC地址,如NE2000网卡的驱动盘中的DIAG9008.EXE程序。
②在WINDOWS操作系统上,使用WINIPCFG.EXE程序可以查看本机的MAC地址(如图2)。
图2 WINDOWS中利用WINIPCFG查看MAC地址
③在WINDOWS9.x或WINNT中利用“ARP –A”查看IP与MAC映射。利用“ARP –A”之前,必须先将服务器与要查看的主机交换过报文,否则无法查看IP与MAC地址映射。例如,要查看“192.168.0.254”主机的MAC地址,在“ping 192.168.0.254”之后,再运行“ARP –A”,显示如下:
Interface: 192.168.0.242 on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 00-00-21-72-97-02 dynamic
192.168.0.254 00-00-21-ea-3b-73 dynamic
④在LINUX操作系统中,可以利用“ifconfig”命令查看本机的MAC,也可以利用“ARP –A”查看其他主机MAC地址,显示如下:
(202.114.194.130) at 00:00:21:72:97:02 [ether] PERM on eth1
(192.168.0.16) at 52:54:AB:15:E8:B9 [ether] PERM on eth1
(202.114.194.129) at 00:E0:16:86:2E:82 [ether] PERM on eth0
(192.168.0.33) at 00:00:21:72:97:02 [ether] PERM on eth1
在Linux系统中,所有已经通信过的主机的IP与MAC地址都存储在/proc/net/arp文件中,也可以从此文件中查看。
从以上介绍,我们不难看出在WINDOWS操作系统和Linux操作系统中的MAC地址的表示形式是不同的,但都是利用48bit来表示的,在WINDOWS中MAC是用“-”连接的,在Linux中则是用“:”。
四、IP与MAC地址绑定
在获得MAC地址以后,管理员就可以在服务器上的ARP Cache中写入IP与MAC地址的映射,即将IP与MAC绑定。在写入映射时,WINDOWS系统与Linux系统的写入命令有一定的不同,下面分别讲述。
① WINDOWS系统
正确设置网络系统后,在WINDOWS的目录中就装入了ARP.EXE程序,此程序带有几个常用的参数,上面我们已经使用了“ARP –A”来查看MAC地址,写入ARP Cache的参数是“ARP –S”,其格式是:
ARP –S IP MAC
例如要将IP地址为192.168.0.254的主机与00-00-21-ea-3b-73绑定,就要用下面的命令:
ARP –S 192.168.0.254 00-00-21-ea-3b-73
② Linux系统arp.exe程序存在于/sbin的目录中,其写入ARP Cache命令格式是:
arp –i eth0 –s IP MAC
例如要绑定上例中的IP,就要用下面的命令:
arp –i eth0 –s 192.168.0.254 00:00:21:ea:3b:73
在使用上述写入ARP Cache命令时,如果服务器ARP Cache中没有该IP与MAC地址的映射,就会将新映射加入ARP Cache中,如果已经存在,就会将其改写为新映射。以后只有MAC地址正确的主机才能使用其绑定的IP地址,这样就起到了防止IP地址被盗用的作用。
如果网络中的IP地址只分配了一部分,那么除了分配的IP地址与该IP地址的MAC地址绑定外,还要将未分配的IP地址与全“0”的MAC地址绑定,从而彻底防止IP地址的随意更改。如果要将本网络中所有IP地址进行绑定,那么就要使用许多条ARP命令,如在C类IP地址中,就要使用254条ARP命令,所以管理员在分配IP地址时,应将未分配的IP地址集中于某一段,就可以使用一些方法将这一段IP地址全部拒绝使用,就可以避免大量使用ARP命令的麻烦。但即便是这样,也将使用多条ARP命令,一种简单的方法就是将这些命令写入到一个批处理文件(WINDOWS)或SHELL脚本文件(Linux)中,将批处理文件或SHELL脚本文件加入到AUTOEXEC.BAT文件(windows)或/etc/rc.d/rc.local文件(Linux)中,当机器一启动时,就将IP与MAC地址映射写入ARP Cache中。
五、结论
IP地址的盗用给网络管理员的管理和维护工作带来许多困难,如网络计费就无法正确地记录每个主机的花费情况。IP地址盗用的一种有效而且简单的防范措施就是利用ARP地址转换协议,将IP与MAC地址绑定,其程序是操作系统自带的,大大方便了网络管理员的维护与管理。
参考文献
1. 计算机网络 谢希仁 大连理工大学出版社 1996.4
2. Internetnetworking With TCP/IP Vol II Douglas E.Comer 电子工业出版社 1998.7
3.UNIX系统网络程序员指南 杨芙清 电子工业出版社 1992.8
|