注:IP地址与MAC地址的关系: IP地址是根据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,长度4个字节。而 MAC地址却是用网卡的物理地址,保存在网卡的EPROM里面,与硬件有关系,比较难于记忆,长度为6个字节。
  
  虽然在TCP/IP网络中,计算机往往需要设置IP地址后才能通讯,然而,实际上计算机之间的通讯并不是通过IP地址,而是借助于网卡的MAC地址。IP地址只是被用于查询欲通讯的目的计算机的MAC地址。
  
  ARP协议是用来向对方的计算机、网络设备通知自己IP对应的MAC地址的。在计算机的 ARJ缓存中包含一个或多个表,用于存储IP地址及其经过解析的以太网MAC地址。一台计算机与另一台IP地址的计算机通讯后,在ARP缓存中会保留相应的MAC地址。所以,下次和同一个IP地址的计算机通讯,将不再查询MAC地址,而是直接引用缓存中的MAC地址。
  
  在交换式网络中,交换机也维护一张MAC地址表,并根据MAC地址,将数据发送至目的计算机。  (转载注明出处n et130)
  
  为什么要绑定MAC与IP 地址:IP地址的修改非常容易,而MAC地址存储在网卡的EEPROM中,而且网卡的MAC地址是唯一确定的。因此,为了防止内部人员进行非法IP盗用(例如盗用权限更高人员的IP地址,以获得权限外的信息),可以将内部网络的IP地址与MAC地址绑定,盗用者即使修改了IP地址,也因MAC地址不匹配而盗用失败:而且由于网卡MAC地址的唯一确定性,可以根据MAC地址查出使用该MAC地址的网卡,进而查出非法盗用者。
  
  目前,很多单位的内部网络,都采用了MAC地址与IP地址的绑定技术。下面我们就针对Cisco的交换机介绍一下IP和MAC绑定的设置方案。
  
  在Cisco中有以下三种方案可供选择,方案1和方案2实现的功能是一样的,即在具体的交换机端口上绑定特定的主机的MAC地址(网卡硬件地址),方案3是在具体的交换机端口上同时绑定特定的主机的MAC地址(网卡硬件地址)和IP地址。
  
  1.方案1——基于端口的MAC地址绑定
  
  思科2950交换机为例,登录进入交换机,输入管理口令进入配置模式,敲入命令:
  Switch#config terminal
  #进入配置模式
  Switch(config)# Interface fastethernet 0/1
  #进入具体端口配置模式
  Switch(config-if)#Switchport port-secruity
  #配置端口安全模式
  Switch(config-if )switchport port-security mac-address MAC(主机的MAC地址)
  #配置该端口要绑定的主机的MAC地址
  Switch(config-if )no switchport port-security mac-address MAC(主机的MAC地址)
  #删除绑定主机的MAC地址
  
  注意:
  
  以上命令设置交换机上某个端口绑定一个具体的MAC地址,这样只有这个主机可以使用网络,如果对该主机的网卡进行了更换或者其他PC机想通过这个端口使用网络都不可用,除非删除或修改该端口上绑定的MAC地址,才能正常使用。
  
  注意:
  
  以上功能适用于思科2950、3550、4500、6500系列交换机
  
  2.方案2——基于MAC地址的扩展访问列表
  
  Switch(config)Mac access-list extended MAC10
  #定义一个MAC地址访问控制列表并且命名该列表名为MAC10
  Switch(config)permit host 0009.6bc4.d4bf any
  #定义MAC地址为0009.6bc4.d4bf的主机可以访问任意主机
  Switch(config)permit any host 0009.6bc4.d4bf
  #定义所有主机可以访问MAC地址为0009.6bc4.d4bf的主机
  Switch(config-if )interface Fa0/20
  #进入配置具体端口的模式
  Switch(config-if )mac access-group MAC10 in
  #在该端口上应用名为MAC10的访问列表(即前面我们定义的访问策略)
  Switch(config)no mac access-list extended MAC10
  #清除名为MAC10的访问列表
  
  此功能与应用一大体相同,但它是基于端口做的MAC地址访问控制列表限制,可以限定特定源MAC地址与目的地址范围。
  
  注意:
  
  以上功能在思科2950、3550、4500、6500系列交换机上可以实现,但是需要注意的是2950、3550需要交换机运行增强的软件镜像(Enhanced Image)。
  
  3.方案3——IP地址的MAC地址绑定
  
  只能将应用1或2与基于IP的访问控制列表组合来使用才能达到IP-MAC 绑定功能。
  Switch(config)Mac access-list extended MAC10
  #定义一个MAC地址访问控制列表并且命名该列表名为MAC10
  Switch(config)permit host 0009.6bc4.d4bf any
  #定义MAC地址为0009.6bc4.d4bf的主机可以访问任意主机
  Switch(config)permit any host 0009.6bc4.d4bf
  #定义所有主机可以访问MAC地址为0009.6bc4.d4bf的主机
  Switch(config)Ip access-list extended IP10
  #定义一个IP地址访问控制列表并且命名该列表名为IP10
  Switch(config)Permit 192.168.0.1 0.0.0.0 any
  #定义IP地址为192.168.0.1的主机可以访问任意主机
  Permit any 192.168.0.1 0.0.0.0
  #定义所有主机可以访问IP地址为192.168.0.1的主机
  Switch(config-if )interface Fa0/20
  #进入配置具体端口的模式
  Switch(config-if )mac access-group MAC10 in
  #在该端口上应用名为MAC10的访问列表(即前面我们定义的访问策略)
  Switch(config-if )Ip access-group IP10 in
  #在该端口上应用名为IP10的访问列表(即前面我们定义的访问策略)
  Switch(config)no mac access-list extended MAC10
  #清除名为MAC10的访问列表
  Switch(config)no Ip access-group IP10 in
  #清除名为IP10的访问列表
  
  上述所提到的应用1是基于主机MAC地址与交换机端口的绑定,方案2是基于MAC地址的访问控制列表,前两种方案所能实现的功能大体一样。如果要做到IP与MAC地址的绑定只能按照方案3来实现,可根据需求将方案1或方案2与IP访问控制列表结合起来使用以达到自己想要的效果。
  
  注意:以上功能在思科2950、3550、4500、6500系列交换机上可以实现,但是需要注意的是2950、3550需要交换机运行增强的软件镜像(Enhanced Image)。
  
  后注:从表面上看来,绑定MAC地址和IP地址可以防止内部IP地址被盗用,但实际上由于各层协议以及网卡驱动等实现技术,MAC地址与IP地址的绑定存在很大的缺陷,并不能真正防止内部IP地址被盗用。
普通绑定命令为一一对应的,命令格式如下:
Arp -s ip地址 mac地址 例 Arp -s 192.168.1.18 0050BAF0978E
  一、问题的提出


  校园网建成后,要求在服务器端把网内各工作站的MAC地址和分配的静态IP地址进行绑定,以方便统一管理,减小安全隐患。无论是在终端获取MAC地址后再在服务器端进行绑定,还是利用“MAC扫描器”远程批量获取MAC地址,对于网管员来说工作量都非常大。有没有更加方便快捷的方法呢?

  二、解决问题思路

  笔者经过摸索,发现组合使用“MAC扫描器”和Excel 2000可以很好地解决这个问题。思路如下:

  1. 运行“MAC扫描器”(下载地址:[url]http://www.onlinedown.net/soft/16209.htm[/url]),扫描完成后,点击[保存]按钮,将扫描的结果保存为文本文件,如Mac.txt(内容见图1)。

 
07180953734.jpg

图1

 

  2. 利用Excel强大的数据处理功能,将文本文件中的MAC地址转换成ARP命令要求的格式后,把数据复制粘贴到记事本,保存为批处理文件(内容见图2)。
 

 
07180953580.jpg

图2

  3. 在服务器端运行这个批处理文件就大功告成了。
  三、具体操作步骤

  1.将Mac.txt导入Excel工作簿

  (1)启动Excel 2000,新建一个工作簿,保存为“MAC地址表.xls”。单击“数据→获取外部数据→导入文本文件”,在弹出的对话框中,选择用“MAC扫描器”获得的文本文件“Mac.txt”,单击[导入]按钮,弹出“文本导入向导”对话框。

  (2)在“文本导入向导——3步骤之1”中点击“原始数据类型”,在“请选择最合适的文件类型”单选项下,修改默认的“固定宽度”为“分隔符号”,然后单击[下一步]按钮;进入“文本导入向导——3步骤之2”,在“分隔符号”多选项下,取消“Tab键”,只选中“空格”项,再单击[下一步]按钮;进入“文本导入向导——3步骤之3”,单击[完成]按钮,弹出“导入数据”对话框时,单击[确定],完成数据导入。导入后的工作表如图3所示。

 
07180953621.jpg

图3


  2. 利用Excel处理数据

  (1)在A列前插入一列,在A1单元格内输入绑定MAC地址的命令和参数“ARP -S”。

  (2)在MAC地址和计算机名两列之间插入7列,列号依次为D、E、F、G、H、I、J。

  (3)利用字符串函数分割12位MAC地址为两两一组:

  在D1单元格输入“=left(C1,2)”;

  在E1单元格输入“=mid(C1,3,2)”;

  在F1单元格输入“=mid(C1,5,2)”;

  在G1单元格输入“=mid(C1,7,2)”;

  在H1单元格输入“=mid(C1,9,2)”;

  在I1单元格输入“=right(C1, 2)”。

  (4)在J1单元格内把D1~I1单元格的内容合并起来,中间用减号分隔。合并方法:在J1内输入“=D1&&"-"&&E1&&"-"&&F1&&"-"&&G1&&"-"&&H1&&"-"&&I1”。

  (5)利用填充法完成A列和D~J列的数据处理(图4)。

 
07180953360.jpg

图4

  (6)隐藏C~I列。

  3. 制作批处理文件

  (1)复制Excel工作表A、B、J列的数据,粘贴到记事本中。保存工作簿“MAC地址表.xls”,退出Excel。

  (2)保存记事本文件为Mac.bat。

  4. 批量绑定MAC地址和IP地址

  在服务器端DOS模式下运行Mac.bat,即可完成批量MAC地址和IP地址的绑定。
 

  前言:
  
  我本来没有想过写关于ARP绑定的文章,坦白的说一句,在你理解ARP工作的原理时,这其实比较简单。只是看到最近论坛很多人在问关于绑定IP和MAC地址的问题,所以才决定写这个文章,希望能一劳永逸。
  
  作为企业级的路由防火墙,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来上网。
  
 2005.8.23.14.42.5.12.1.jpg

  各计算机的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上的绑定就成功了。
  
 2005.8.23.14.43.29.12.2.jpg

  现在我们在客户机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的全部过程:
  
 2005.8.23.14.43.56.12.3.jpg

  
点击看大图

  
  由于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地址发送数据包,这没有任何问题。
  
 2005.8.23.14.47.24.12.4.jpg

  
点击看大图

  
  那么看看第四个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回复数据包,自然就是超时了。
  
2005.8.23.14.46.14.12.5.jpg

  
点击看大图

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

回了两篇关于MAC/IP的帖子,发现有研究的价值,发个帖子,滥竽充数一下

首先,学习一下理论

(大家不要着急,慢慢来,不过不要睡着了)

                              IP/MAC捆绑原理及ARP

链路层用mac,网络层用ip:

网络中传输的是IP地址--三层32位地址,终端需要的是MAC地址--两层48位地,

ARP(RARP)都属于3层协议


     网络通信中,两个节点想要通信,必须先知道源与目标的MAC地址。为了让系 

统能快速地找到远程节点的MAC,每一个本地的内核都保存有一个即时的查询表 

(ARP缓存)。 

     ARP中有映射远程主机的IP--->对应的MAC地址的一个列表。地址解析协议 

(ARP)缓存是一个TSR的数据结构,由本地的内核来管理的。Default ARP缓 

存中留有last 10 mins本地系统与之通信的节点的IP地址(和对应的MAC地址)。 

当一个远程MAC存在于本地ARP 缓存中,转换远程节点的IP地址为MAC地址 

no problem。然而,系统在知道一个远程IP,但MAC不在本地ARP缓存中时,是这 

样来获取远程MAC的:本地主机发送一个Broadcast package,询问各节点是否有对 

应的IP。回应是唯一的。在回应包中就包含此MAC。在收到返回包后,本地节点就 

会在本地ARP缓存中记录远程MAC。 

    如果将IP/MAC对应关系中那些合法IP地址建立静态的MAC/IP绑定,那么即使 

非法用户盗用IP地址,linux路由器在回应这些IP发出的连接请求时则不会通过arp协 

议询问其MAC,而是使用Linux建立的静态MAC, 发出应答数据,这样....... 


两种方法
1.
建立/etc/ether,指定正确的IP/MAC对应关系: 

168.192.12.6 XX:AS:YOUR:MAC:WISH:XX 

在/etc/rc.d/rc.local中加: 

arp -f 


2. 

# arp -i eth0 -s 168.192.12.6 XX:AS:YOUR:MAC:WISH:XX 

_____________________________________________________


理智告诉我们:缺憾同优点孪生

                        IP/MAC捆绑缺陷

这种方法本意是用来管理内网的IP,但无心插柳........不过,

缺陷随之表现:即router对发出的包不检查,即使网卡MAC 是未登记的,也可以向外发数据包,而且

可以用伪造的IP,(有的路由器检查源IP范围), 这时候伪造的IP也必须属于子网内的IP. 

还有的server是这样做的:把没有登记的IP对应的MAC一致设为XXXXXXXXXX,这种方法很危险,只要

把网卡的MAC改成XXXXXXXXXX, 就能以任何没有登记的IP出去.......

采用IP/MAC来防止IP盗用不是根本办法:因为不仅所有的网卡MAC都可以修改,而且网卡发

出包的源MAC地址并不是网卡本身write的,而由驱动或APP提供的:他们先从网卡上得到了MAC地址,

每次发送包的时候用此MAC地址,所以等于没有!配置程序修改MAC仅仅靠修改其driver就可以

(Win下利用NDIS就可以). 

注:但基于Link的TCP来说,伪造IP就不是"太"容易,需要TCP连接序号的预测的知识--大有学问呀.

   如有兴趣,到安全网站上去看看,尤其是国外的 

_____________________________________________________


                          软件修改MAC的原理


MAC写在ROM中,在网卡组帧时需要将MAC写入帧中,其并不是直接从ROM中写入帧的,
 
而是从网卡的ARegs中读出,然后由硬件写入帧中,ARegs的内容是Driver在网卡 

初始化时从ROM中读入的.
 
So,我们可以截取NC Driver中相关代码,进而修改MAC. 

在linux下简单实现

#/sbin/ifconfig eth0 down

#/sbin/ifconfig eth0 hw ether 00:AS:YOU:WISH:00

#/sbin/ifconfig eht0 up 

_____________________________________________________


                           关于Switch/MAC/Port

     一般的局域网采用HUB连接,如果换用Switch, 某些Switch可以锁定端口和MAC, 某个端口

只允许指定MAC接入,再加上IP/MAC绑定(还要将Switch加锁), 情况会好许多. 这时 

如有人盗用IP除了要改IP,改MAC,还要将机器搬过来换网线(只要在雇两个保安就可以解决:))

 
这是Linux的ifconfig后一般没有信息(除了log).关键在于合法IP的MAC地址是在router处定好的,

router不会发ARP查询MAC, 因此至少从router外来的包,ARP不会乱:IP的MAC合法,

而非法盗用的IP相当于进入promisc模式, 从合法IP机包中取出属于自己的IP包(port不对的丢弃).

ping, traceroute等ICMP双方(合法非法IP机)可以用, UDP也可以. 但TCP不行(telnet, ftp等),

即合法IP机TCP可用, 盗用者不可用(要是TCP也可以了, 那盗用IP就非常简单了, 根本不用改MAC,

ifconfig/route就可以了)


CU精华文章
路由器的网络地址转换、管理登陆限制、MAC与IP的绑定(作者:xjc1027)

[url]http://chinaunix.net/jh/30/13886.html[/url]


_____________________________________________________

几个注意点

1.
***方法是把***者自己的服务器绑定成***目标的IP,这样后者无法正常工作:报警说某一个MAC

地址的IP与其冲突,如何利用这个MAC地址查找到当前的绑定IP?

如果是在同一个网段里的可以发arp请求包,然后再解析arp回复包,即取得mac地址,

至于不在一个网段内的就不能直接取mac了.


2.DHCp&MAC&IP
配置DHCP让一个具体的MAC绑定到一个固定的IP上完全可以,在isc的dhcpd中有一个host字段,

可以定义这个功能,在dhcpd.conf文件中有详细的例子.

自动分配固定内部IP给相应的MAC网卡,对不上MAC的不能上网,但可以强行写上IP,网关,DNS一样

可以上网.修改一下就能实现控制用户上网(不要让人知道你的网关)

 
内网ip最好不要像192.168.0.0/24一样,否则非上网权限用Winxp的用户无需写任何设置一样可以上
-----------------------------------------------------------------
dhcpd.conf 
option domain-name "your"; 
option routers 192.168.1.254; 
option domain-name-servers 192.168.1.254;61.144.56.101; 
ddns-update-style none; 
default-lease-time 88600; 
max-lease-time 887200; 

subnet 192.168.1.0 netmask 255.255.255.0 { 
# range 192.168.1.0 192.168.1.0; 


host usr1 { #user1 
hardware ethernet 00:90:99:BD:85:F7; 
fixed-address 192.168.1.21; 

host usr2 { #user2 
hardware ethernet 00:A0:C9:75:A7:45; 
fixed-address 192.168.1.22; 

host usr3 { #user3
hardware ethernet 00:D0:09:59:02:DB; 
fixed-address 192.168.1.23; 
}

当MAC是以上的主机user1.2.3请求分配IP地址时,DHCP会固定的分配相应的IP
--------------------------------------------------------------------

关于用编程获得MAC.IP

CU精华区里有几篇文章很好

1.本地机

[url]http://chinaunix.net/forum/viewtopic.php?t=85716&highlight=MAC[/url]

(作者:gadfly)

shell下大致方法:
ifconfig -a 
set - - 
Ip=$.............. 
MAC=$.......... 




2.子网其他机器

[url]http://chinaunix.net/forum/viewtopic.php?p=870221&highlight=mac#870221[/url]

(解答者:gadfly)

---------------------------------------------------------------------

现在防地址盗用的最好方法:

 MAC/IP  +   VLAN/PVC

 VLAN +  PPPoE
 
 Port + MAC/IP
 
[ 来源:伊瓦资讯 ]
 
 
1 引言
 对“IP地址盗用”的解决方案绝大多数都是采取MAC与IP地址绑定策略,这种做法是十分危险的,本文将就这个问题进行探讨。在这里需要声明的是,本文是处于对对MAC与IP地址绑定策略安全的忧虑,不带有任何***性质。

1.1 为什么要绑定MAC与IP 地址
  影响网络安全的因素很多,IP地址盗用或地址欺骗就是其中一个常见且危害极大的因素。现实中,许多网络应用是基于IP的,比如流量统计、账号控制等都将IP地址作为标志用户的一个重要的参数。如果有人盗用了合法地址并伪装成合法用户,网络上传输的数据就可能被破坏、窃听,甚至盗用,造成无法弥补的损失。
  盗用外部网络的IP地址比较困难,因为路由器等网络互连设备一般都会设置通过各个端口的IP地址范围,不属于该IP地址范围的报文将无法通过这些互连设备。但如果盗用的是Ethernet内部合法用户的IP地址,这种网络互连设备显然无能为力了。“道高一尺,魔高一丈”,对于Ethernet内部的IP地址被盗用,当然也有相应的解决办法。绑定MAC地址与IP地址就是防止内部IP盗用的一个常用的、简单的、有效的措施。

1.2 MAC与IP 地址绑定原理
  IP地址的修改非常容易,而MAC地址存储在网卡的EEPROM中,而且网卡的MAC地址是唯一确定的。因此,为了防止内部人员进行非法IP盗用(例如盗用权限更高人员的IP地址,以获得权限外的信息),可以将内部网络的IP地址与MAC地址绑定,盗用者即使修改了IP地址,也因MAC地址不匹配而盗用失败:而且由于网卡MAC地址的唯一确定性,可以根据MAC地址查出使用该MAC地址的网卡,进而查出非法盗用者。
  目前,很多单位的内部网络,尤其是学校校园网都采用了MAC地址与IP地址的绑定技术。许多防火墙(硬件防火墙和软件防火墙)为了防止网络内部的IP地址被盗用,也都内置了MAC地址与IP地址的绑定功能。
  从表面上看来,绑定MAC地址和IP地址可以防止内部IP地址被盗用,但实际上由于各层协议以及网卡驱动等实现技术,MAC地址与IP地址的绑定存在很大的缺陷,并不能真正防止内部IP地址被盗用。

2 破解MAC与IP地址绑定策略
2.1 IP地址和MAC地址简介
  现行的TCP/IP网络是一个四层协议结构,从下往上依次为链路层、网络层、传输层和应用层。
  Ethernet协议是链路层协议,使用的地址是MAC地址。MAC地址是Ethernet网卡在Ethernet中的硬件标志,网卡生产时将其存于网卡的EEPROM中。网卡的MAC地址各不相同,MAC地址可以唯一标志一块网卡。在Ethernet上传输的每个报文都含有发送该报文的网卡的MAC地址。
  Ethernet根据Ethernet报文头中的源MAC地址和目的MAC来识别报文的发送端和接收端。IP协议应用于网络层,使用的地址为IP地址。使用IP协议进行通讯,每个IP报文头中必须含有源IP和目的IP地址,用以标志该IP报文的发送端和接收端。在Ethernet上使用IP协议传输报文时,IP报文作为Ethernet报文的数据。IP地址对于Ethernet交换机或处理器是透明的。用户可以根据实际网络的需要为网卡配置一个或多个IP地址。MAC地址和IP地址之间并不存在一一对应的关系。
  MAC地址存储在网卡的EEPROM中并且唯一确定,但网卡驱动在发送Ethernet报文时,并不从EEPROM中读取MAC地址,而是在内存中来建立一块缓存区,Ethernet报文从中读取源MAC地址。而且,用户可以通过操作系统修改实际发送的
Ethernet报文中的源MAC地址。既然MAC地址可以修改,那么MAC地址与IP地址的绑定也就失去了它原有的意义。
2.2 破解方案
 
  下图是破解试验的结构示意图。其内部服务器和外部服务器都提供Web服务,防火墙中实现了MAC地址和IP地址的绑定。报文中的源MAC地址与1P地址对如果无法与防火墙中设置的MAC地址与1P地址对匹配,将无法通过防火墙。主机2和内部服务器都是内部网络中的合法机器;主机1是为了做实验而新加入的机器。安装的操作系统是W2000企业版,网卡是3Com的。

 
 目前,网络中最常用的协议是TCP/IP协议,网络应用程序一般都是运行在TCP或者UDP之上。例如,实验中Web服务器采用的HTTP协议就是基于TCP的。在TCP或者UDP中,标志通信双方的不仅仅是IP地址,还包括端口号。在一般的应用中,用户端的端口号并不是预先设置的,而是协议根据一定的规则生成的,具有随机性。像上面利用IE来访问Web服务器就是这样。UDP或者TCP的端口号为16位二进制数,两个16位的随机数字相等的几率非常小,恰好相等又谈何容易?两台主机虽然MAC地址和IP地址相同,但是应用端口号不同,接收到的多余数据由于在TCP/UDP层找不到匹配的端口号,被当成无用的数据简单地丢弃了,而TCP/UDP层的处理对于用户层来说是透明的;所以用户可以“正确无误”地正常使用相应的服务,而不受地址盗用的干扰。