红联Linux门户
Linux帮助

RedHat Linux下ARP实验

发布时间:2015-04-23 16:05:54来源:linux网站作者:wuhaoshu

实验环境:

VMware,Red Hat Linux主机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的请求-应答)包,如下图:
RedHat Linux下ARP实验

arp缓存的情况:两台主机的arp缓存中均有对方主机IP地址与mac地址的对应关系的记录。


第二种情况:

包的情况:没有Linux主机先广播的arp请求包。只有四对ICMP(ping的请求-应答)。
RedHat Linux下ARP实验

注:以上图片上传到红联Linux系统教程频道中。

arp缓存的情况:两台主机的arp缓存中均有对方主机IP地址与mac地址的对应关系的记录。


Red Hat Linux下常用的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