IP地址冲突简单查找方法与预防管理策略
IP地址冲突简单查找方法与预防管理策略
对于在Internet和Intranet网络上,使用TCP/IP协议时每台主机必须具有独立的IP地址,有了IP地址的主机才能与网络上的其它主机进行通讯。随着网络应用大力推广,网络客户急剧膨胀,由于静态IP地址分配,IP地址冲突的麻烦相继而来。IP地址冲突造成了很坏的影响,首先,网络客户不能正常工作,只要网络上存在冲突的机器,在客户机上都会频繁出现地址冲突的提示:“如果网络上某项应用的安全策略(诸如访问权限,存取控制等)是基于IP地址进行的,这种非法的IP用户会对应用系统的安全造成了严重威胁。
分析原因
出现问题有时并不能及时发现,只有在相互冲突的网络客户同时都在开机状态时才能显露出问题,所以具有相当的隐蔽性。分析原因有如下几种情况可以造成IP地址冲突。
很多用户对TCP/IP并不了解,不知道“IP地址”、“子网掩码”、“默认网关”等参数如何设置,有时用户不是从管理员处得到的上述参数的信息,或者是用户无意修改了这些信息;
管理员或用户根据管理员提供的上述参数进行设置时,由于失误造成参数输错;
在客户机维修调试时,维修人员使用临时IP地址应用造成;
有人窃用他人的IP地址。
查找与解决方法
接到冲突报告后,我们首先确定冲突发生的VLAN。通过IP规划的VLAN定义,和冲突的IP地址,找到冲突地址所在的网段。这对成功地找到网卡MAC地址很关键,因为有些网络命令不能跨网段存取。
首先将客户机与网络隔离,让非法的IP地址的微机在网上运行,网管员便可以设法找到它了。应用网络测试命令有ping命令和arp命令。使用ping命令,假设冲突的IP地址为10.119.40.40,在msdos窗口,命令格式如下,其中斜体部分是命令结果。
c:widows〉ping 10.119.40.40
request timed out
reply from 10.119.40.40 : bytes=32 time〈1ms ttl=128 略
我们之所以要ping这台机器,是出于两个目的,首先我们要知道我们要找的机器确实在网络上,其次,我们要知道这台机器的网卡的MAC地址,那么我们如何知道它的MAC地址哪?这就需要使用第二个命令arp:arp命令只能在某一个VLAN中使用有效,它是低层协议,并不能跨路由。
c:widows〉arp -a
interface: ...... on inerface ......
internet address/physical address/type
10.119.40.40/00-00-21-34-63-56/ dynamic 以下略
以上列表表示出冲突IP地址10.119.40.40 处网卡的MAC地址为00-00-21-34-63-56。接下来我们要找的是MAC地址为00-00-21-34-63-56的网卡的具体物理位置。
网络简介中已经说明,每台客户机的网卡直接连接到第二级交换机上,接下来面对大量的以太网交换机,我们要查找是冲突MAC所对应交换机端口。本网络中与客户连接的设备是bay的303/304,本文以303为例,描述如何查找某一个MAC地址所在的端口位置。bay303的网管有多种方式,下面仅以web浏览器方式描述查找非法MAC的方法。
在查找之前,首先要确定VLAN内的交换机位置,查出这些交换机的IP地址,使用交换机地址可以访问该交换机的网管信息。
在网管员的机器上启动浏览器
键入交换机的IP地址
提示登陆信息后输入用户名和密码
进入“mac address table”选项
显示表格如下:
index/mac address/learned on port/learning method/filter packets to this address
00:00:21:34:63:56 13 dynamic no
-------------------------------------------
00:00:81:65:c3:a0 n/a static no
-------------------------------------------
00:00:a2:f7:c3:e4 25 dynamic no
-------------------------------------------
00:00:21:34:63:56 2 dynamic no
以下略。
此时你可以看到索引的第4项,它正是我们要查找的MAC地址,它的端口号为2。根据综合布线资料,可以查找出相应的信息点的物理位置,从而定位到所连接的微机位置。当然,在此是针对特有的交换机所举的例子,在实际工作中我们要查找很多台交换机,才能找到我们要找的MAC地址,当VLAN中存在大量的交换机时,我们需要在这些交换机中逐个去查找,直到找到为止,这是一个相当烦琐的事情。
对于某一交换机的端口中存在下联交换机的情况,因为交换机支持多个MAC地址,会在上级的MAC表中有下级MAC的记载,所以首先查找上级交换机MAC表,确定较具体位置后再去查找下一级交换机,这样会大幅度地缩减查找范围。
当然使用专业的网络测试仪可以更快速简单地排除故障,但对于没有昂贵仪器的小型网络的管理者,上述的方法还是很奏效的。
管理策略
对于局域网来讲此类IP地址冲突的问题会经常出现,用户规模越大,查找工作就越困难,所以网络管理员必须深思加以解决。目前有两种方案,一是使用动态IP地址分配(dhcp),另一种方案是使用静态地址分配,但必须加强MAC地址的管理。
用动态IP地址分配(dhcp)的最大优点是客户端网络的配置非常简单,在没有管理员的帮助和干预的情况下,用户自己便可以对网络进行连接设置。但是,因为IP地址是动态分配的,网管员不能从IP地址上鉴定客户的身份,相应的IP层管理将失去作用。而且使用动态IP地址分配需要设置额外dhcp服务器。
使用静态IP地址分配可以对各部门进行合理的IP地址规划,能够在第三层上方便地跟踪管理,如果我们通过加强对MAC地址的管理,同样也会有效地解决这一问题。
在网络用户连网的同时,建立IP地址和MAC地址的信息档案,自始至终地对局域网客户执行严格的管理、登记制度,将每个用户的IP地址、MAC地址、上联端口、物理位置和用户身份等信息记录在网络管理员的数据库中。试想,在我们上述的案例中,如果知道了非法用户的MAC地址后,我们可以从管理员数据库中进行查寻,如果我们对MAC地址记录全面,我们便可以立即找到具体的使用人的信息,这会节省我们大量宝贵时间,避免大海捞针的烦恼。同时我们对于某些应用应避免使用IP地址来进行权限限制,如果我们从MAC地址上进行限制相对来说要安全的多,这样可以有效地防止有人窃取IP地址的侥幸行为。
ARP防御之双绑批处理+++集合
一:此批处理有缺陷,有时不能实现真正意义的双绑!
@echo off
::读取本机Mac地址
if exist ipconfig.txt del ipconfig.txt
ipconfig /all >ipconfig.txt
if exist phyaddr.txt del phyaddr.txt
find "Physical Address" ipconfig.txt >phyaddr.txt
for /f "skip=2 tokens=12" %%M in (phyaddr.txt) do set Mac=%%M
::读取本机ip地址
if exist IPAddr.txt del IPaddr.txt
find "IP Address" ipconfig.txt >IPAddr.txt
for /f "skip=2 tokens=15" %%I in (IPAddr.txt) do set IP=%%I
::绑定本机IP地址和MAC地址
arp -s %IP% %Mac%
::读取网关地址
if exist GateIP.txt del GateIP.txt
find "Default Gateway" ipconfig.txt >GateIP.txt
for /f "skip=2 tokens=13" %%G in (GateIP.txt) do set GateIP=%%G
::读取网关Mac地址
if exist GateMac.txt del GateMac.txt
arp -a %GateIP% >GateMac.txt
for /f "skip=3 tokens=2" %%H in (GateMac.txt) do set GateMac=%%H
::绑定网关Mac和IP
arp -s %GateIP% %GateMac%
arp -s 网关IP 网关MAC
exit
这个批处理要查询本机的ARP 缓存表,看里面是不是有网关的IP和MAC,有则能成功
绑定,但是没有的话就绑不定了!!!不过可以改进一下,达到双绑的目的,比如
加上arp -s 网关IP 网关MAC一行就可以了。。。
二、这个也不能实现真正意义的双绑,只能绑定本机IP和MAC
(多谢中国DOS联盟lxmxn提供)
@echo off
for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "Physical Address"') do set local_mac=%%a
for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "IP Address"') do set local_ip=%%a
for /f "delims=: tokens=2" %%a in ('ipconfig /all^|find "Default Gateway"') do set gate_ip=%%a
fo* /* %%* in ('getmac /nh /s %local_ip%') do set gate_mac=%%a
arp -s %local_ip% %local_mac%
arp -s %gate_ip% %gate_mac% (这个地方有问题,改进中……)
经测试,此批处理不能绑定网关IP和MAC,只能绑定本机IP和MAC
三、这个还不是很清楚,我要测试才行的,目前所知也能绑定本机IP和MAC
(多谢中国DOS联盟everest79提供)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=2 delims=[]=" %%i in ('nbtstat -a %COMPUTERNAME%') do call set local=!local!%%i
for /f "tokens=3" %%i in ('netstat -r^|find " 0.0.0.0"') do set gm=%%i
for /f "tokens=1,2" %%i in ('arp -a %gm%^|find /i /v "inter"') do set gate=%%i %%j
arp -s %gate%
arp -s %local%
arp -s 网关IP 网关MAC
这个批处理可以绑定网关IP和MAC,但是还是有缺陷,要依赖于本机上存在的ARP缓存!
改进方法为在最后加一个arp -s 网关IP和MAC!
四、这个是一个兄弟的博客上找到的,原理和第一个一样,只是改进了一点点!
这个P通过ping网关三次得到了网关的MAC其实以上的批都可以通过这个来搞定网关的IP和MAC,
但是如果开机的时候正在发生ARP欺骗的话 这样你绑的IP和MAC就是错的,不能上网了。。
不过这种情况很少,发过来试一下先吧!
@echo off
:::::::::::::清除所有的ARP缓存
arp -d
:::::::::::::读取本地连接配置
ipconfig /all>ipconfig.txt
:::::::::::::读取内网网关的IP
for /f "tokens=13" %%I in ('find "Default Gateway" ipconfig.txt') do set GatewayIP=%%I
:::::::::::::PING三次内网网关
ping %GatewayIP% -n 3
:::::::::::::读取与网关arp缓存
arp -a|find "%GatewayIP%">arp.txt
:::::::::::::读取网关MAC并绑定
for /f "tokens=1,2" %%I in ('find "%GatewayIP%" arp.txt') do if %%I==%GatewayIP% arp -s %%I %%J
:::::::::::::读取本机的 IP+MAC
for /f "tokens=15" %%i in ('find "IP Address" ipconfig.txt') do set ip=%%i
for /f "tokens=12" %%i in ('find "Physical Address" ipconfig.txt') do set mac=%%i
:::::::::::::绑定本机的 IP+MAC
arp -s %ip% %mac%
:::::::::::::删除所有的临时文件
del ipconfig.txt
del arp.txt
exit
以上P可以配合路由上对客户机的IP和MAC进行绑定实现完全防ARP,只是单绑下面机和网关IP及MAC
没有多大用处,关于路由上面的,因为大家用的路由不一样,所以这个就不写了!











没有评论:
发表评论