本文共 4997 字,大约阅读时间需要 16 分钟。
当主机上的需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址.
系统需要将IP地址转换为网络地址,再传递给设备驱动程序发送出去.ARP(地址解析协议)就是这样的一种网络协议.用于将高层协议地址(IP地址)转换为物理网络地址.linux内核中保存有一个ARP表,里面保存有IP地址和MAC地址的对应关系.使用arp命令可以查看主机的ARP表.# arp -am1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0
arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来
检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,DROP等.Turbolinux 10.5和11版本中,已经集成有arptables命令.
你也可以从源码进行安装:# wget -c http://jaist.dl.sourceforge.net/sourceforge/ebtables/arptables-v0.0.3-3.tar.gz# tar zxvf arptables-v0.0.3-3.tar.gz# cd arptables-v0.0.3-3# make# make install
arptables [-t table] -[AD] chain rule-specification [options] arptables [-t table] -[RI] chain rulenum rule-specification [options] arptables [-t table] -D chain rulenum [options] arptables [-t table] -[LFZ] [chain] [options] arptables [-t table] -[NX] chain arptables [-t table] -E old-chain-name new-chain-name arptables [-t table] -P chain target [options]
链(chain)
kernel表是用来区分不同设置的不同功能.规则的每个设置叫做一个”链”.每个链是有一个排序了的规则列表,用来于ARP帧相匹配.如果一个规则与一个ARP帧相匹配,一个”操作说明”会提供需要进行哪些操作.操作说明叫做”目标”.然而,如果帧与当前链中的当前规则不匹配,则继续与链中的下一条规则进行检查.用户可以建立一个新的链,作为规则的”目标”来使用.目标(target)包含有一个ARP帧与一个帧处理说明的防火墙规则说明叫做一个”目标”.当一个帧与一个规则相匹配时,则kernel按”目标”的定义进行下一步操作.“目标”可以是:ACCEPT,DROP.CONTINUE,RETURN,扩展定义或用户指定规则.ACCEPT表示允许这个帧通过.DROP表示这个帧将被丢弃.CONTINUE表示继续进行下一条规则.这样可以很方便的计算,有多少帧经过了某个规则.RETURN表示不在这个链中继续进行匹配,返回到上一条链的下一条规则.表(table)在kernel中只有一个ARP表.这个表是一个过滤器.你可以在arptables命令中使用’-t filter’参数.使用时,-t参数必须是arptables命令的第一个参数.-t,–table是一个过滤器,在kernel中仅有这一个表,它包含2个(2.4.x内核)或3个(2.6.x内核)内建规则:INPUT(发送帧的源主机),OUTPUT(本地产生的帧),FORWARD(由桥代码转发的帧).2.4.X内核中没有FORWARD规则.arptables命令参数命令行参数分为几个部分:命令部分,杂项部分,规则说明,匹配扩展,监视器扩展.命令(command)arptables命令参数用于指定在使用-t参数定义的表中的执行动作.如果你没有使用-t参数指定一个表名,则命令将应用于默认的过滤表.使用-Z命令时,命令行每次只能使用一个命令.-A,–append在指定的链结尾添加一个规则.-D,–delete从指定的链中删除规则.这个命令有2种用法:1.指定要删除规则的序号,语法是: start_nr[:end_nr],可以使用负数.2.指定要删除规则的详细内容.-I,–insert按序号,在指定的链中插入规则.如当前的序号为N,则可以使用-N到N+1作为插入序号.序号0表示表示在最后一条规则后插入新规则,等同于-A参数.-R,–replace替换链中指定的规则.如果当前的序号是N,则指定的序号可以是1到N之间的数字.-P,–policy在链中设置指定目标的策略,可以为:ACCEPT,DROP或RETURN.-F,–flush清空指定的链.如果没有指定链,则所有的链都将被清空.清空链不会改变链的策略.-Z,–zero将指定链的计数器置0.如果没有指定链,则所有计数器都将置0.-Z命令可以与-L命令结合使用.当同时使用-Z,-L命令时,计数器的值会先被打印出来,然后置0.-L,–list输出指定链中的规则.如果没有指定链,所有将输出所有链中的规则.-N,–new-chain建立新的用户链.用户链的数量没有限制,但用户链的名称最多可以有31个字符.-X,–delete-chain删除指定的用户链.用户链中必须为空.如果没有指定用户链,则所有为空的用户链将被删除.-E,–rename-chain重命名指定链.你可以重命名一个用户链,也可以重命名一个标准链名.<其他命令>-V,–version显示arptables程序的版本号.-h,–help输出语法帮助信息.-j,–jump 目标规则的目标.可以是:ACCEPT,DROP,CONTINUE,RETURN,目标扩展或用户定义链名.<规则说明>-s,–source-ip [!] IP地址[/掩码]源IP地址-d,–destination-ip [!] IP地址[/掩码]目的IP地址–source-mac [!] MAC地址[/掩码]源MAC地址–destination-mac [!] MAC地址[/掩码]目的MAC地址.-i,–in-interface [!] 设备名用于接收帧的接口(应用于INPUT,FORWARD链).–in-if是这个选项的别名.-o,–out-interface [!] 设备名用于发送帧的接口(应用于OUTPUT,FORWARD链).–out-if是这个选项的别名.-l,–h-length 长度[/掩码]硬件长度(单位字节).–opcode 代码[/掩码]操作码(2字节).可以使用:1=请求,2=回复,3=反解析请求,4=反解析回复,5=动态反解析请求,6=动态反解析回复,7=动态反解析错误,8=逆向ARP请求,9=ARP_NAK–h-type 类型[/掩码]硬件类型(2字节,十六进制).可以使用:1=Ethernet.–proto-type 类型[/mask]协议类型(2字节).可以使用:0×800=IPv4# arp -am1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0显示当前ARP表信息当前ARP表中保存有一个主机的arp信息,m1主机,ip地址192.168.0.1# arptables -D INPUT -s 192.168.0.1 -j DROP设置arp规则,将所有192.168.0.1的arp包全部丢弃.# arp -d 192.168.0.1 -i eth0使用arp命令,删除arp表中的192.168.0.1的记录.# arp -am1 (192.168.0.1) aton eth0arp表中已没有m1主机的信息.# ping 192.168.0.1PING m1 (192.168.0.1) 56(84) bytes of data.From m2 (192.168.0.2) icmp_seq=2 Destination Host UnreachableFrom m2 (192.168.0.2) icmp_seq=3 Destination Host UnreachableFrom m2 (192.168.0.2) icmp_seq=4 Destination Host Unreachable由于无法获得m1主机MAC信息,所以,无法与m1主机进行通信.# arptables -D INPUT -s 192.168.0.1 -j DROP删除arptables规则.# arp -am1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0arp表中重新记录了m1的MAC信息.# ping 192.168.0.1PING m1 (192.168.0.1) 56(84) bytes of data.64 bytes from m1 (192.168.0.1): icmp_seq=1 ttl=64 time=0.315 ms
arpwatch用来监听网络中的ARP数据包并进行记录,同时将监听到的
变化通过E-mail来报告给系统管理员.arpwatch使用pcap(3)来监听本地以太接口的arp数据包.Turbolinux 10.5和11版本中,已经集成有arpwatch.
你也可以从源码安装:# wget -c ftp://ftp.ee.lbl.gov/arpwatch.tar.gz# cd arpwatch-2.1a15# ./configure# make# make install
arpwatch [ -dN ] [ -f datafile ] [ -i interface ] [ -n net[/width ]] [ -r file ] [ -s sendmail_path ] [ -p ] [ -a ] [ -m addr ] [ -u username ] [ -R seconds ] [ -Q ] [ -z ignorenet/ignoremask ]
-d 标记用来启用调试模式.
-f 标记用来设置使用的数据库名,默认是arp.dat.-i 用来指定网络接口.-n 用于说明本地网络.-r 指定读取一个由tcpdump或pcapture生成信息文件,而不从网络接口中读取.//
-s 用于指定sendmail程序的路径.
-p 指定禁用”混合模式”.网络接口不是”混合模式”时,ARP广播也可以通过.-a 默认情况下,arpwatch仅记录默认网络接口上,第一个IP地址子网的arp信息.使用-a参数,则记录网络接口上所有IP地址子网的arp信息.-m 指定一个用于接收变更信息的邮件地址.# arpwatch -i eth0 -s root@localhost.localdomain监听eth0接口,并将arp的变更信息,发送到本地的root用户邮箱中.
转载地址:http://xlqmb.baihongyu.com/