实验环境:
VMware7.0,Red Hat Linux 9主机IP地址:192.168.0.132(一下简称Linux主机),windows xp主机IP地址:192.168.0.150(以下简称xp主机),二虚拟主机均挂在vmnet2交换机上。
抓包工具:
wireshark-win32-1.2.9,安装在xp主机上。
实验目的:
1、深刻理解arp缓存的意义和原理;
2、掌握Linux环境下arp命令。
实验操作:
1、将Linux和xp主机上的arp缓存清空,在Linux上ping xp主机,分析wireshark截获到的包,最后分别检查Linux主机和xp主机的arp缓存;
2、将xp主机的arp缓存清空,在Linux主机上执行arp -s 192.168.0.150 xp主机mac地址的命令,然后在Linux上ping xp主机,分析wireshark截获到的包,最后分别检查Linux主机和xp主机的arp缓存。
第一种情况:
包的情况:Linux主机先广播一个询问xp主机mac地址的arp请求包,xp主机收到请求包后发出一个arp应答包给Linux主机,告诉Linux主机,自己的mac地址是多少。然后就是四对ICMP(ping的请求-应答)包,如下图:
arp缓存的情况:两台主机的arp缓存中均有对方主机IP地址与mac地址的对应关系的记录。
第二种情况:
包的情况:没有Linux主机先广播的arp请求包。只有四对ICMP(ping的请求-应答)。
arp缓存的情况:两台主机的arp缓存中均有对方主机IP地址与mac地址的对应关系的记录。
Red Hat Linux 9下常用的arp命令:
1、显示arp缓存
#arp
或#cat /proc/net/arp
flags的对应值:
C 完整记录,在/proc/net/arp显示的值为2
M 永久性记录,在/proc/net/arp显示的值为4
P Proxy记录,在/proc/net/arp显示的值为8
incomplete 被arp -d命令删除的记录,在/proc/net/arp显示的值为0
引申用法:
arp 主机名或IP地址 #检查arp缓存中的特定内容
arp -i eth0 #检查指定网络接口的arp缓存
2、增加arp缓存记录
arp -s ip地址或主机名 MAC地址 #这种方式产生的记录其flags标志为CM(PERM),且不受TTL时间的限制,重启系统消失
arp -s ip地址或主机名 MAC地址 temp #这种方式产生的记录其flags标志为C,受TTL时间的限制
注意:
1、若使用主机名,则该主机名应可以利用/etc/hosts、DNS等工具进行解析;
2、ARP广播包不能穿越路由器。
3、删除arp缓存记录
arp -d 主机名或IP地址 #实质是变更flags的值为incomplete,超时后由系统自动删除
4、停用与启用arp功能
第一步:完全停用网络功能
#ifconfig eth0 down
第二步:启用网络功能时用参数-arp停用arp功能
#ifconfig eth0 -arp up
停用arp功能后,执行ifconfig eth0,显示NOARP
再次启用arp功能:
#ifconfig eth0 arp up