关于LAN上有两个相同MAC地址的问题

发表于:2007-07-04来源:作者:点击数: 标签:
关于LAN上有两个相同MAC地址的问题 目的:验证发往目的IP的数据包是通过目的MAC来传递 linuxserver的MAC是aa:aa:aa:aa:aa:aa windows 98的MAC是BB:BB:BB:BB:BB:BB windos2000的MAC是cc:cc:cc:cc:cc:cc 将linuxMAC改为与win98的MAC相同,那么LAN上有两个相同

关于LAN上有两个相同MAC地址的问题


目的: 验证发往目的IP的数据包是通过目的MAC来传递
 
linux server  的MAC是 aa:aa:aa:aa:aa:aa

windows 98    的MAC是 BB:BB:BB:BB:BB:BB


windos 2000   的MAC是 clearcase/" target="_blank" >cc:cc:cc:cc:cc:cc


将linux MAC改为与win98的MAC相同,那么LAN上有两个相同的MAC  BB:BB:BB:BB:BB:BB


此时win2000还能正常和linux , windows 98通信,  Why???????????

 nasvel 回复于:2003-09-03 14:17:01
据我所知,不可能有两块ethe.net cards有相同的MAC地址。这由硬件制造商保证的。

 cgweb 回复于:2003-09-03 14:25:01
咳!大哥,没看清楚,俺在写一便"将linux MAC改为与win98的MAC相同"

 supengnest 回复于:2003-09-03 14:29:18
我也想知道,顶一下

 sakulagi 回复于:2003-09-03 14:33:23
我怀疑是不是gatway里面还是有mac的cache,不受你改动的影响。不管怎么改mac,最后网卡在发送包的时候还是会自动将mac的信息附加上去。我对网络不是很熟,猜测而已。

 cgweb 回复于:2003-09-03 14:37:13
linux#ping win98
有回音
#tcpdump
原MAC > 目的MAC              一样.

 孙轩 回复于:2003-09-03 14:57:31
所谓正常,是什么现象?

 cgweb 回复于:2003-09-03 15:05:39
linux能mount win98的共享目录win98能通过linux上网.

 好好先生 回复于:2003-09-03 15:36:41
挺有意思,我也关注结果.

 xinyv 回复于:2003-09-03 15:53:43
看了楼主的帖子,自己实验了一下,确实在linux8.0下存在以上问题,还发现了帮定了相同的ip地址也不会提示冲突。但是其他机器不能访问这两个相同MAC的机器了,但相同MAC的机器对外访问不会影响。

 cgweb 回复于:2003-09-03 15:57:50
why??

 mb 回复于:2003-09-03 16:04:07
接点是不是有交换机呀

 cgweb 回复于:2003-09-03 16:43:39
HUB

 cgweb 回复于:2003-09-03 16:44:29
要是有一台机器发ARP广播,两台MAC的机器谁回应呢

 cgweb 回复于:2003-09-03 17:06:54
UP

 jinxingvenus 回复于:2003-09-03 17:20:30
水不够深,关注中。。。。。

 cgweb 回复于:2003-09-04 09:53:04
请高手看看 谢谢了。

 czsz 回复于:2003-09-04 10:07:10
我们公司用盗版PSOS,6.7台电脑都改成同一个MAC,怎么还是一样上网?一点冲出没有!

 xinyv 回复于:2003-09-04 10:12:15
关注中.

 marlborolj 回复于:2003-09-04 10:17:32
可能是有缓存
linux机器重新启动没有,
你用arp试试!!!!

 pondka 回复于:2003-09-04 10:32:57
可是,MAC怎么能改呢?不是固定在板子中的吗?
不明白!

 platinum 回复于:2003-09-04 10:38:13
有命令可以改

咱们再做个实验吧!把两个相同MAC的网卡分别插到两台机器上,同时重装系统,然后配网,用不同IP,最后再连线,确保无CACHE

 marlborolj 回复于:2003-09-04 11:43:16
在同时去ping一台机器,用arp在看看他们的mac地址

 xinyv 回复于:2003-09-04 12:07:28
cache应该是有时间的,不会一直存在吧。

 cgweb 回复于:2003-09-04 12:31:46
我把更改MAC地址的命令写到起动脚本里 , 情况同上。

 j4fun 回复于:2003-09-04 12:34:20
首先HUB是广播的,每一台接入HUB的主机都能受到所有的数据帧,然后对帧中的目的MAC地址进行检查,如果是本机的MAC地址就会将数据帧传给网络层处理。
网络层查看PACKET的目的IP地址,如果是本机的IP地址就分析是什么协议的数据包,然后传给相应协议处理。

即便主机受到了目的MAC地址与本机MAC地址相同的情况也会进一步发现目的IP地址不同而丢弃该PACKET.

关于ARP:  ARP request 是IP--->MAC的查询,因此会在一个广播域中进行广播查询,目的MAC地址是FFFFFF
每一台主机都会接收并将该帧传给网络层处理,如果目的(即查询)IP地址是自己的IP,才会返回一个ARP REPLY,否则就丢弃该包!只要LINUX与win98主机的IP地址不同,只会由一台主机对该包进行回应!

关于ARP CACHE:  每台主机都会有一个ARP的CACHE 默认是空的(当然windows的主机开机是会PING网关以确认其MAC地址,因此开机后会有一条记录)。ARP CACHE中的内容一般都是通过发送ARP request得到的,是动态的,若干分钟后会清空(是具体OS而定),除非你使用静态的记录。
主机在通讯前都会先通过ARP CACHE查询目的ip对应的mac,如果没有就发送ARP request查询,网络中只有与目的IP相应的主机才会返回其mac地址。接着源就能与目的进行通讯了!在一个ARP CACHE存在一个MAC对应不同IP是允许的,这也是在SWITCH环境中IP包截获的基础。

因此,如果LINUX与win98的主机用了相同的MAC主机,他们都能很好的HUB的环境下和外界进行通讯。当然SWITCH的环境就不同了,可能会造成这两天主机都无法与外界联系的情况!

有兴趣的朋友可以拜读一下W.Richard Stevens 的 TCP/IP Illustrated Volume 1---The Protocols  这本传世宝典!

 xinyv 回复于:2003-09-04 12:40:26
我晕,楼上的,发广播是开始,数据包出去以后要返回的,回送给哪个网卡呀。MAC相同两个都给????

 j4fun 回复于:2003-09-04 12:44:23
返回给每个人,因为是HUB,一个冲突域啊!任何主机都可以受到网络的所有帧。

然后根据目的MAC决定是否丢弃,即便主机受到了目的MAC地址与本机MAC地址相同的情况也会进一步检验目的IP地址,不同则丢弃该PACKET。

 cgweb 回复于:2003-09-04 12:49:56
j4fun  写的好阿!

 j4fun 回复于:2003-09-04 12:54:53
谢谢,小弟也就对TCP/IP有微薄的认识。

 sakulagi 回复于:2003-09-04 13:47:38
谢谢j2fun的回答。
谢谢cgweb最近发起的很多不错的讨论。

 好好先生 回复于:2003-09-04 13:55:46
写的是不错.谢谢!

 joseyu 回复于:2003-09-07 12:53:00
那假设IP,MAC都改成一样呢?
我试过两台机器都可以上网,但是会丢失数据

 jfcat 回复于:2003-09-07 13:31:36
感谢这位老兄的回答,这多半是网络协议的操作控制问题


做网络的应该不光学习系统对网络也要有不少了解才行啊

感谢老兄 :)

 scy99 回复于:2003-09-08 23:15:08
通过软件修改mac地址,到http://www.unixedu.com下载

 q1208c 回复于:2003-09-09 14:08:44
数据包在以太网上是本网段广播的,所以两能机器都能收到数据包,但只有一台能的网络(IP)层会响应,另一个则丢弃数据包。所以,应该能通信的。一点看法,大家共同研究。

 cgweb 回复于:2003-09-09 14:34:25
如果是交换机每一个port 都是一个冲突域呀!

 q1208c 回复于:2003-09-09 16:23:10
那也没关系,如果是交换机,会不停的更新交换机自己的ARP表,如果本机的ARP表没有那个表项,就会的ARP广播,也就学到了IP,但如果有的话,那就会有问题了吧。我没试过。

 JohnBull 回复于:2003-09-09 16:48:30
正常,你的网肯定是用HUB组的.
所以只要IP不一样就没有任何问题.

 JohnBull 回复于:2003-09-09 16:52:07
[quote:22e5e49442="q1208c"]那也没关系,如果是交换机,会不停的更新交换机自己的ARP表,如果本机的ARP表没有那个表项,就会的ARP广播,也就学到了IP,但如果有的话,那就会有问题了吧。我没试过。[/quote:22e5e49442]     

普通交换机里面没有arp表! 只不过有些低档交换机如果发现两个端口上有同一个MAC,就会广播处理.

 q1208c 回复于:2003-09-09 16:56:41
说错了,MAC-ADDRESS-TABLE

 theseus 回复于:2003-09-10 00:20:30
[quote:143bead2a8="cgweb"]关于LAN上有两个相同MAC地址的问题


目的: 验证发往目的IP的数据包是通过目的MAC来传递
 
linux server  的MAC是 aa:aa:aa:aa:aa:aa

windows 98    的MAC是 BB:BB:BB:BB:BB:BB


windos 2000   的MAC是..........[/quote:143bead2a8]     
目的: 验证发往目的IP的数据包是通过目的MAC来传递
 
linux server  的MAC是 aa:aa:aa:aa:aa:aa

windows 98    的MAC是 BB:BB:BB:BB:BB:BB


windos 2000   的MAC是..........[/quote]     
不知道你所说的通讯是什么协议的,
就原理来说TCP是肯定不行的,ICMP,UDP是可以的。
以太网的协议是走带冲突检测的总线协议的,所以任何一台局域网的机器发送的ehter包,其他的网卡都可以接收到。但是网卡在没有设置成promisc的方式下,只会接收MAC地址是自己MAC地址的包,其他的包都会被丢掉。所以win2000向98发送的ICMP 和UDP包 linux和98都会接收到。UDP是无连接状态的,ICMP更不是了。UDP的包接受到以后linux没有相应的监听端口,所以UDP包会自动被linux drop掉。但是98监听了,所以就发给2000回应。如此,
2k和98就正常通讯了。至于ICMP 包,回应一次,也是可以理解的了。
但是TCP是绝对不行的,在主动连接起始阶段,2k向98 发送的SYN包在98接受到以后,98也会向2k发送ACK和SYN 包。2k发送的SYN包也会被linux接收到,但是linux没有相应的监听端口,所以就会向2k发送RST包。无论linux的RST包还是98的ACK/SYN包哪个先到达2k,linux的RST包都会使这个连接中断。

 zerg_009 回复于:2003-09-24 10:42:32
猜测一下:两台机器MAC相同,但是除自己以外没有相同的,所以发出的包能够顺利到达其他的PC而不会产生冲突,但是同网段内有相同的MAC,无法确定哪个是目标,所以其他的PC无法访问这两台MAC相同的PC.

菜鸟的意见.

 cgweb 回复于:2003-09-24 12:37:57
theseus说的好。

 whao 回复于:2003-09-24 14:00:11
ask of vegetable, how to change MAC?

 bearzhang 回复于:2003-09-24 14:24:23
[quote:1d764a4211="cgweb"]j4fun  写的好阿![/quote:1d764a4211]     

举四只手称赞!

 srjiao 回复于:2003-09-24 14:26:20
我看也可能是缓存,多挺一会儿试验一下结果

 godfrey 回复于:2003-10-05 11:00:51
在一个HUB里可能可以访问,在交换机不同端口应该不可以的

 rinehart 回复于:2003-10-10 09:22:00
我也早就发现这样的问题了,但是有一点大家没有注意到,两台机中时常有网络中断的现象发生,我想对于广播的问题可能是有些随机性 . (2002年测试过)

 pinksnoopy 回复于:2003-11-02 16:02:04
这问题我也碰过,,之前我做过测试,,,也不知道原因是什么

我在linuxsir发了有关这贴子,到现在问了很多人都得不到解决!!!!

 namtso 回复于:2004-04-10 22:33:16
[quote:37fb178291="theseus"]    
不知道你所说的通讯是什么协议的,
就原理来说TCP是肯定不行的,ICMP,UDP是可以的。
以太网的协议是走带冲突检测的总线协议的,所以任何一台局域网的机器发送的ehter包,其他的网卡都可以接收到。但是网卡?.........[/quote:37fb178291]
linux并不会发送rst包,它判断收到的包里目的ip与自己的ip不一致时,只是丢弃这个包。如果linux回应rst包,就可能会被别人用来做dos攻击。
其实这情况跟一个网卡配置两个ip的情况是一样的。

 UTOYHW 回复于:2004-05-09 12:45:32
在我们的局域网中有两个网关,一个512K 一个2M ,但两个网关共享在同一个局域网,我是在512K的,所以常盗用隔壁2M 的网关,后来进行MAC-IP绑定,我把自己的机的IP MAC改为隔壁一个同学的,竟然没有IP 冲突. 不过我那台机被我改了很多地方,天网也自己加了很多定义,TTL也改为255的.我用GOOGLE找了很多文章还不能有个清楚的答案!有谁比较清楚.

 UTOYHW 回复于:2004-05-09 12:48:48
操作系统是XP, LINUX下我还是用原来的IP,没有改,我同学也是XP .

 UTOYHW 回复于:2004-05-09 12:49:26
操作系统是XP, LINUX下我还是用原来的IP,没有改,我同学也是XP .

 qq_t1514 回复于:2005-05-21 14:21:05
这个是没有问题的,两个相同的mac互相发包,自己也会收到

原文转自:http://www.ltesting.net