zoukankan      html  css  js  c++  java
  • [精彩] 关于LAN上有两个相同MAC地址的问题

    http://www.chinaunix.net 作者:cgweb  发表于:2006-08-22 01:14:11
    发表评论】 【查看原文】 【Linux讨论区】【关闭

    关于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是 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

    据我所知,不可能有两块ethernet 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

    引用:原帖由 "q1208c"]那也没关系,如果是交换机,会不停的更新交换机自己的ARP表,如果本机的ARP表没有那个表项,就会的ARP广播,也就学到了IP,但如果有的话,那就会有问题了吧。我没试过。
     发表:

          

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


     q1208c 回复于:2003-09-09 16:56:41

    说错了,MAC-ADDRESS-TABLE


     theseus 回复于:2003-09-10 00:20:30

    引用:原帖由 "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是..........

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

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


    windos 2000   的MAC是..........
          
    不知道你所说的通讯是什么协议的, 
    就原理来说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

    引用:原帖由 "cgweb"]j4fun  写的好阿!
     发表:

          

    举四只手称赞!


     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

    引用:原帖由 "theseus" 发表:
         
    不知道你所说的通讯是什么协议的, 
    就原理来说TCP是肯定不行的,ICMP,UDP是可以的。 
    以太网的协议是走带冲突检测的总线协议的,所以任何一台局域网的机器发送的ehter包,其他的网卡都可以接收到。但是网卡?.........


    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互相发包,自己也会收到


     aaaaaaa 回复于:2006-08-22 01:14:11

    我在局域网内两台WINXP的机器(A,B)台机器的MAC地址修改成和一台一样,IP地址自动捕获,结果IP地址也一样了,但计算机名不同,在B飞鸽列表里能看到B,看不到A飞鸽传书,A给B发信息,自己能收到B收不到,给C发信息,C看到的是A发的,给A回信息,结果B收到了.




    原文链接:http://linux.chinaunix.net/bbs/viewthread.php?tid=153868
    转载请注明作者名及原文出处
  • 相关阅读:
    Es学习第六课, ES基本搜索_search
    Es学习第一课,了解基本功能和概念
    Es学习第二课, ES安装和客户端使用
    Es学习第四课, 倒排索引
    nginx的location配置详解
    Es学习第三课, ElasticSearch基本的增删改查
    Es学习第五课, 分词器介绍和中文分词器配置
    关于Spring的一点理解
    好久没来,回来了。
    对于ie不支持select的option的onclick事件的处理
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2185050.html
Copyright © 2011-2022 走看看