一个物理networking接口上的多个MAC地址(linux)

简单的问题:如何在一个物理networking接口(linux)上设置多个MAC地址?

为什么? 我的ISP正在检查在GW上的ip < – > mac,我想通过我的“linuxbox”路由stream量,并转发它与不同的源IP。

如果不检查ip < – > mac,我将使用eth0,eth0:0,但在这种情况下,我需要每个IP都有唯一的MAC地址。

您可以使用macvlan创build具有不同MAC地址的多个虚拟接口。

ip link add link eth0 address 00:11:11:11:11:11 eth0.1 type macvlan ip link add link eth0 address 00:22:22:22:22:22 eth0.2 type macvlan 

从理论上讲,应该是你所需要的,尽pipe在某种程度上某些事情在内核中爆发了,它会导致它使用一个MAC来处理所有事情。 我不确定那是什么状态; 希望它是固定的。

否则,可以使用arptables根据出口接口或基于目标IP的input重写输出的MAC地址:

 arptables -A OUT -o eth0.1 --arhln 06 -j mangle --mangle-hw-s 00:11:11:11:11:11 arptables -A OUT -o eth0.2 --arhln 06 -j mangle --mangle-hw-s 00:22:22:22:22:22 arptables -A IN -d 192.168.1.1 --arhln 06 -j mangle --mangle-hw-d 00:11:11:11:11:11 arptables -A IN -d 192.168.1.2 --arhln 06 -j mangle --mangle-hw-d 00:22:22:22:22:22 

不幸的是,arptables在我的经验中也相当麻烦。

您的网桥和TAP接口之所以共享相同的MAC地址,是因为网桥没有MAC,直到绑定到一个接口。 如果使用BRCTL创build一个网桥,并执行“brctl show”,则会发现该网桥具有空端口(无接口绑定)。将TAP0绑定到br0时,它自然会显示为相同的MAC。 我创build了一个testing桥,来说明。

#brctl addbr testbr0

  [root @ stooge etc]#brctl show testbr0
网桥名称bridge id STP使能的接口
 testbr0 8000.000000000000没有 

我创build了三个testingTAPS。 “brctl showmacs testbr0”的输出。

  [root @ stooge etc]#brctl showmacs testbr0
端口没有mac地址是本地的? 老化定时器
   1 86:51:b6:95:0e:b6是0.00
   2 86:58:63:c6:d4:e7是0.00
   3 8a:a7:fa:17:c5:12是0.00 

如您所见,每个网桥端口都有一个唯一的MAC地址,桥接器应该显示其MAC,作为第一个接口绑定。 如果桥接物理networking接口,那么以太网网桥将inheritance其MAC地址,并将所有虚拟接口向下移动。 将绑定eth0的示例绑定到testing桥。

  [root @ stooge etc]#brctl showmacs testbr0
端口没有mac地址是本地的? 老化定时器
   4 AA:BB:CC:DD:EE:FF是0.00
   1 86:51:b6:95:0e:b6是0.00
   2 86:58:63:c6:d4:e7是0.00
   3 8a:a7:fa:17:c5:12是0.00 

再次使用“brctl show”;

  [root @ stooge etc]#brctl show
网桥名称bridge id STP使能的接口
 testbr0 8000.00aabbccddee no eth0
                                                         tap00
                                                         TAP01
                                                         TAP02 

尽pipeeth0仍然在PORT 4,但TAP接口已经下移了一个。你仍然有唯一的MAC地址。 如果以太网网桥绑定到源路由接口,则无法使用IP地址或DHCP。 对于它的价值,如果您桥接源路由接口,您将显示“非本地”MAC地址。 这是下一跳路由器的MAC地址。 我知道在RedHat中,有一个使用IFCONFIG指定源IP的选项。 我的第一个select,将咨询IP命令参考,因为我认为你可以指定一个源IP。 我从来没有尝试过。

尝试创build具有所需MAC地址和IP的tap设备或任何其他虚拟以太网设备,然后使用eth0将它们连接到一个网桥。

看起来您可能可以使用vconfig在同一物理以太网上创build多个vlan地址,每个vlan地址都有不同的mac地址。