刚接触tap和bridge,写了个程序,其实现效果如下(命令可能写的不对,但意思是一样的):
brctl addbr br0
brctl setfd br0 0
brctl stp br0 off
ip link set br0 up
ip addr add 3.3.3.1/24 dev br0
tunctl -d tap0 mode tap
ipconfig tap0 2:2:2:2:2:2 //set mac
brctl addif br0 tap0
ip link set tap0 up
ipconfig tap0 0.0.0.0 promisc
tunctl -d tap1 mode tap
ipconfig tap1 2:3:3:3:3:2 //set mac
brctl addif br0 tap0
ip link set tap1 up
ipconfig tap1 0.0.0.0 promisc
然后构造了一个DestMac = 2:2:2:2:2:2 ,SrcMac = 2:3:3:3:3:2 ,prototype = 0x0800 (其余都是0)的64字节大小报文,从tap1发送到bridge,结果tap0收不到。如果将DestMac改为2:2:2:4:4:2,bridge上没有mac记录,使用广播转发,结果tap0上能收到。请问各位大神,这是什么原因???