完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一.ARP协议简介 当主机上的需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址. 系统需要将IP地址转换为网络地址,再传递给设备驱动程序发送出去. ARP(地址解析协议)就是这样的一种网络协议.用于将高层协议地址(IP地址)转换为物理 网络地址. linux内核中保存有一个ARP表,里面保存有IP地址和MAC地址的对应关系.使用arp命令 可以查看主机的ARP表. # arp -a m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0 二.ARP协议相关工具 1.arptables a)arptables简介 arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来 检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层, 用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理. arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT, DROP等. b)arptables的安装 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 c)arptables命令的语法 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 d)arptables使用实例 # arp -a m1 (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 -a m1 (192.168.0.1) at arp表中已没有m1主机的信息. # ping 192.168.0.1 PING m1 (192.168.0.1) 56(84) bytes of data. From m2 (192.168.0.2) icmp_seq=2 Destination Host Unreachable From m2 (192.168.0.2) icmp_seq=3 Destination Host Unreachable From 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 -a m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0 arp表中重新记录了m1的MAC信息. # ping 192.168.0.1 PING 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 2.arpwatch a)arpwatch简介 arpwatch用来监听网络中的ARP数据包并进行记录,同时将监听到的 变化通过E-mail来报告给系统管理员. arpwatch使用pcap(3)来监听本地以太接口的arp数据包. b)arpwatch的安装 Turbolinux 10.5和11版本中,已经集成有arpwatch. 你也可以从源码安装: # wget -c ftp://ftp.ee.lbl.gov/arpwatch.tar.gz # cd arpwatch-2.1a15 # ./configure # make # make install c)arpwath命令的语法 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 指定一个用于接收变更信息的邮件地址. d)arpwatch使用实例 # arpwatch -i eth0 -s root@localhost.localdomain 监听eth0接口,并将arp的变更信息,发送到本地的root用户邮箱中.
|
|
|
|
只有小组成员才能发言,加入小组>>
1348 浏览 0 评论
2110 浏览 0 评论
7990 浏览 0 评论
写了一个用DMA读取ADC数据的程序,记录下整个过程和一点心得
3265 浏览 0 评论
3551 浏览 0 评论
1312浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 16:33 , Processed in 0.593955 second(s), Total 72, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号