作为企业级的路由防火墙,ISA Server并没有提供对于MAC地址的控制功能。不过,你可以使用Windows的命令ARP来实现IP地址和MAC地址的绑定。这篇文章介绍了Windows下ARP协议工作的原理,以及如何使用ARP命令来静态绑定IP地址和MAC地址。
 
ISA Server中没有提供对于MAC地址的控制功能,Why?这是因为MAC地址只能在本地网络中使用,当数据包跨越路由器时,数据包中主机的源MAC地址就会被路由器的出站接口的MAC地址所代替,这个时候,使用MAC地址来进行控制就不适用了。所以只要是企业级的硬件或者软件防火墙,都基本没有提供对MAC地址的控制功能。
不过微软也早就考虑到了这点,在Windows中,如果你安装了TCP/IP网络协议组件,那么你就可以执行命令ARP。ARP命令的作用是查看本机的ARP缓存、静态绑定IP地址和MAC地址和删除静态绑定项。其实绑定IP地址和MAC地址的本意是为了减少ARP广播流量,只是可以利用这一功能来控制IP地址的使用。
在这里我还是先简单的描述一下Windows下ARP协议的工作原理。ARP协议(Address Resolve Protocol,地址解析协议)工作在TCP/IP协议的第二层-数据链路层,用于将IP地址转换为网络接口的硬件地址(媒体访问控制地址,即MAC地址)。
无论是任何高层协议的通讯,最终都将转换为数据链路层硬件地址的通讯。
每台主机都具有一个用于缓存MAC地址的ARP缓存列表,你可以使用命令ARP -a或ARP -g来查看当前的ARP缓存列表。此ARP缓存列表是动态更新的,默认情况下,当其中的缓存项超过两分钟没有活动时,此缓存项就会超时被删除。你可以使用ARP -s来静态绑定IP地址和MAC地址,不过在Windows server 2003和XP以前的Windows系统中,就算你设置了静态MAC地址绑定项,同样会通过接收其他主机的数据包而更新已经绑定的项。
在Windows server 2003和XP中,静态绑定的项不会被动态更新,直到TCP/IP协议终止为止,例如重启计算机
。如果要创建永久的静态MAC地址绑定项,你可以写一个脚本文件来执行ARP静态绑定,然后使用计划任务在启动计算机时执行该脚本即可。
例如A主机的IP地址为192.168.0.1,它现在需要与IP为192.168.0.8的主机(主机B)进行通讯,那么将进行以下动作:
A主机查询自己的ARP缓存列表, 如果发现具有对应于目的IP地址192.168.0.8的MAC地址项,则直接使用此MAC地址项构造并发送以太网数据包,如果没有发现对应的MAC地址项则继续下一步;
A主机发出ARP解析请求广播,目的MAC地址是FF:FF:FF:FF:FF:FF,请求IP为192.168.0.8的主机回复MAC地址;
B主机收到ARP解析请求广播后,回复给A主机一个ARP应答数据包,其中包含自己的IP地址和MAC地址;
A接收到B主机的ARP回复后,将B主机的MAC地址放入自己的ARP缓存列表,然后使用B主机的MAC地址作为目的MAC地址,B主机的IP地址(192.168.0.8)作为目的IP地址, 构造并发送以太网数据包;
如果A主机还要发送数据包给192.168.0.8, 由于在ARP缓存列表中已经具有IP地址192.168.0.8的MAC地址,所以A主机直接使用此MAC地址发送数据包,而不再发送ARP解析请求广播;当此缓存地址项超过两分钟没有活动(没有使用)后,此ARP缓存将超时被删除。
默认情况下ARP缓存的超时时限是两分钟,你可以在注册表中进行修改。可以修改的键值有两个,都位于
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters
修改的键值:
键值1:ArpCacheLife,类型为Dword,单位为秒,默认值为120
键值2:ArpCacheMinReferencedLife,类型为Dword,单位为秒,默认值为600
注意:这些键值默认是不存在的,如果你想修改,必须自行创建;
修改后重启计算机后生效

如果ArpCacheLife的值比ArpCacheMinReferencedLife的值大,那么ARP缓存的超时时间设置为ArpCacheLife的值;如果ArpCacheLife的值不存在或者比ArpCacheMinReferencedLife的值小,那么对于未使用的ARP缓存,超时时间设置为120秒;对于正在使用的ARP缓存,超时时间则设置为ArpCacheMinReferencedLife的值。
下图是我们的试验网络结构,ISA Server作为一个边缘防火墙,内部局域网(192.168.0.0/24)通过ISA Server接入Internet。在这个试验中,我将在ISA Server上绑定内部客户True的IP地址192.168.0.8和MAC地址,这样,当True不在线时,另外一个内部客户Fake就算修改自己的IP地址为True的IP地址192.168.0.8,也不能通过ISA Server来上网。

各计算机的TCP/IP设置如下,本次试验不涉及DNS解析,各服务器的DNS服务器设置为空,在试验之前已经确认了网络连接工作正常:

ISA 2004 Firewall:

LAN Interface:
IP:192.168.0.1/24
DG:None
MAC:00:03:47:F4:FC:E7
 

True(将离线):

IP:192.168.0.8/24
DG:192.168.0.1
MAC:00:0D:60:C3:05:34
 

Fake(将修改IP地址为192.168.0.8):

IP:192.168.0.8/24
DG:192.168.0.1
MAC:00:06:D0:06:05:47
 
 
首先,我在ISA Server上使用ARP -S来绑定True的IP地址和MAC地址,运行命令:
ARP -s 192.168.0.8 00-0D-60-C3-05-34
然后执行ARP -a来查看ARP缓存列表,结果如下图所示。你可以看到在ARP缓存列表中IP地址192.168.0.8的类型为static,这表明它是静态项。此时,我们在ISA Server上的绑定就成功了。

现在我们在客户机Fake上,将自己的IP地址修改为192.168.0.8,然后Ping ISA Server:
C:/Documents and Settings/admin>ipconfig /all
Windows IP Configuration
Host Name . . . . . . . . . . . . : anonymous
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Intel(R) PRO/100 VE Network Connection
Physical Address. . . . . . . . . : 00-06-D0-06-05-47
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.8
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1
DNS Servers . . . . . . . . . . . : 192.168.0.1
C:/Documents and Settings/admin>ping 192.168.0.1 -n 2
Pinging 192.168.0.1 with 32 bytes of data:
Request timed out.
Request timed out.
Ping statistics for 192.168.0.1:
Packets: Sent = 2, Received = 0, Lost = 2 (100% loss),
 
Ping超时,Why?从Sniffer上捕获的数据包可以更清楚的进行说明:
下图是捕获的数据包,它描述了Fake(192.168.0.8) Ping 192.168.0.1的全部过程:
由于Fake(00:06:D0:06:05:47)没有192.168.0.1的MAC地址,所以Fake发送ARP地址解析请求广播,询问192.168.0.1的MAC地址是什么;
ISA Server(00:03:47:F4:FC:E7)使用ARP应答回复Fake(00:06:D0:06:05:47),告诉Fake自己的IP地址(192.168.0.1)和MAC地址;
获得192.168.0.1的MAC地址后,Fake(192.168.0.8)向192.168.0.1发送PING请求数据包;
192.168.0.1向192.168.0.8回复PING回复数据包;
Fake(192.168.0.8)再次向192.168.0.1发送PING请求数据包;
192.168.0.1再次向192.168.0.8回复PING回复数据包;
这一切看起来没有任何问题?那为什么Fake的Ping会超时呢?
这一切从表明上看是没有任何问题,但是仔细看捕获的数据包的以太网头部,你就会发现问题所在:
首先,我们看第三个数据包,Fake(192.168.0.8)向192.168.0.1发送的Ping请求,如下图所示,Fake以自己的MAC地址为源MAC地址、192.168.0.1的MAC地址(00:03:47:F4:FC:E7)为目的MAC地址发送数据包,这没有任何问题。

那么看看第四个ISA Server回复的Ping回复数据包呢,源MAC地址是ISA Server的MAC地址(00:03:47:F4:FC:E7),这也没有问题,但是注意看目的MAC地址,00:0D:60:C3:05:34是离线的客户机True的MAC地址。还记得我们在ISA Server上做的IP地址(192.168.0.8)和MAC地址绑定吗?
ISA Server直接使用自己ARP缓存中的静态绑定项来发送数据,而不是使用收到的Ping请求数据包中的源MAC地址来作为目的地址。
因此,Fake认为此数据包不是发给自己的,不会处理此数据包,所以认为没有Ping回复数据包,自然就是超时了。

最后说一下,
我不推荐大家使用静态IP地址和MAC地址的绑定,这会带来更多的管理负荷。你可以利用ISA Server强大的身份验证功能,结合IP地址来进行管理,这样具有更好的效果。也请不要在论坛问我ARP命令是如何使用的,Windows的帮助是最好的老师。

使用ARP命令来绑定IP和MAC地址相关推荐

  1. oracle arp绑定mac地址,使用ARP命令来绑定IP和MAC地址

    使用ARP命令来绑定IP和MAC地址 前言:我本来没有想过写关于ARP绑定的文章,坦白的说一句,在你理解ARP工作的原理时,这其实比较简单.只是看到最近论坛很多人在问关于绑定IP和MAC地址的问题, ...

  2. linux绑定ip mac地址,人文网-Linux系统绑定IP和MAC地址

    一.ARP欺骗病毒,主要表现为: 中病毒的机器不仅影响自身,同时也会影响同网段的其它机器,将其它机器的HTTP数据包里加入病毒代码. 代码例子如: 这种病毒危害非常大!即使你机器的安全性做得很好,可是 ...

  3. 华为三层交换机绑定IP和MAC地址

    假设OldMonster模具公司环境如下 现在需要绑定"研发部"的所有电脑的IP和MAC地址 所有vlan和端口信息如下 由于之前搭建的时候所有电脑都是自动获取ip的,dhcp配置 ...

  4. ARP绑定IP与MAC地址

    1.首先确认需要进行ARP绑定的 IP地址以及mac地址(FPGA的ip 和mac) 2.电脑通常有多个网卡,无线.有线,确定好要绑在哪个接口.举例,第一个是无线网卡,第二个是有线网卡. C:\Use ...

  5. win7下绑定IP和MAC地址,提示ARP项添加失败,拒绝访问

    解决方法: 请访问 http://wenku.baidu.com/view/55415fee998fcc22bcd10d62.html

  6. IP和MAC地址绑定的好处和作用

    IP和MAC地址绑定的好处和作用:可以实现静态IP,也可以防止ARP攻击. IP和MAC地址知识: 如果你是通过校园网或小区接入Internet,那么一定听说过MAC地址.什么是MAC地址,MAC地址 ...

  7. 用nmap获取ip和mac地址

    在windows下有lansee和Advanced IP scanner来查找IP和对应的MAC地址,在ubuntu中,好用的工具似乎不多,nmap命令行工具倒是提供了强大的功能. 可以使用命令来获取 ...

  8. IP与MAC地址绑定

    经常有人换网络地址,给维护带来一些麻烦. 今天绑定IP与MAC,在H3C S3100上,后续再对其他的交换机的绑定. 在接入交换机上绑定,就近原则. 1.限制具体的计算机,但可以换IP 有些计算机是可 ...

  9. linux查看ip下mac地址命令,windows 命令方式查找指定IP的MAC地址

    运行arp -d * 需要用管理员身份运行,进入windows\system32文件夹找到cmd.exe, 右键"以管理员身份运行",这样打开cmd程序就能运行arp -d命令了. ...

最新文章

  1. Windows Service
  2. oracle中同义词的用法,Oracle中使用同义词介绍
  3. 辉瑞新冠疫苗有效率达90%?但科学家们还有这3个疑问
  4. android垂直公告,【Android之垂直翻页公告】
  5. 关于最近实践 Bert 的一些坑
  6. Android sim卡清空,Android手机卡了?用这几种方法变回来...
  7. java实现单链表常见操作,java面试题,java初级笔试题
  8. 【数据结构】分治代码模板
  9. css手型指针_前端基础面试题(HTML+CSS部分)
  10. shiro原理_Shiro-实战(二)-身份认证
  11. 蓝桥杯2014java_【图片】2014-2016蓝桥杯java本科B组省赛题_蓝桥杯吧_百度贴吧
  12. 小游戏制作-其他系列-数独
  13. python爬虫——正则表达式
  14. 聊聊高效的与第三方合作方沟通的一些技巧
  15. 计算机音乐文献,论音乐文献计算机编郭小株.pdf
  16. WPF帝友借贷系统MV模式开发日志2021/04/02_前台登入注册页面搭建
  17. b和B的区别?以及b、B、KB、MB、TB、PB、EB的换算
  18. [SWPUCTF 2021 新生赛]PseudoProtocols
  19. HI3518e学习笔记
  20. 企业IT信息化的方案设计

热门文章

  1. C语言输出0-100之间的奇数
  2. Java遍历一个类的所有属性和值
  3. phpstydu MYSQL无法启动。
  4. 读取SpringBoot(Spring)的配置信息,定义常量
  5. Python相关系列
  6. word --- 如何设置word里的代码格式,使之有底纹的效果
  7. python实现大乐透号码生成器
  8. 稻城亚丁6日游之第四天(稻城-理塘-雅江-新都桥)
  9. 一个简单的九宫格计算器
  10. PDF文件如何旋转页面,来教你这两种方法