我想用一个linux-boxtesting一个networking,它应该得到100个不同的IP地址,每个IP地址都有一个自己的MAC,当与其他设备通信时,它应该被用作源MAC地址。
我已经写了这个:
#!/bin/bash for i in `seq 0 10 `; do hex=`perl -e "printf ('%02X', $i)"` echo tap$i / $hex ip link add link eth0 address 00:00:13:37:00:$hex eth0-$i type macvlan done sleep 2 for i in `seq 0 10 `; do echo eth0-$i ip while ! ifconfig eth0-$i &>/dev/null; do sleep 1 done ii=`expr $i + 100` ip addr add 10.254.251.$ii/24 dev eth0-$i ifconfig eth0-$i up done
然后我得到我自己的IP和自己的MAC地址的设备。
但是,当从外面的任何一个ARP地址为我的一个IP地址的Linux主机通过eth0与我所有的虚拟地址应答多次,其他设备然后插入最后一个在其ARP表。
23:43:22.764080 00:24:43:8f:e5:39 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 10.254.251.100 tell 10.254.251.1, length 46 23:43:22.764340 b8:27:eb:b3:e1:36 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at b8:27:eb:b3:e1:36, length 28 23:43:22.764442 00:00:13:37:00:00 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:00, length 28 23:43:22.764642 00:00:13:37:00:01 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:01, length 28 23:43:22.764733 00:00:13:37:00:02 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:02, length 28 23:43:22.764929 00:00:13:37:00:03 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:03, length 28 23:43:22.765071 00:00:13:37:00:04 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:04, length 28 23:43:22.765208 00:00:13:37:00:05 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:05, length 28 23:43:22.765342 00:00:13:37:00:06 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:06, length 28 23:43:22.765476 00:00:13:37:00:07 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:07, length 28 23:43:22.765560 00:00:13:37:00:08 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:08, length 28 23:43:22.765713 00:00:13:37:00:09 > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:09, length 28 23:43:22.765845 00:00:13:37:00:0a > 00:24:43:8f:e5:39, ethertype ARP (0x0806), length 42: Reply 10.254.251.100 is-at 00:00:13:37:00:0a, length 28 23:43:22.767375 00:24:43:8f:e5:39 > b8:27:eb:b3:e1:36, ethertype IPv4 (0x0800), length 98: 10.254.251.1 > 10.254.251.100: ICMP echo request, id 2984, seq 0, length 64 23:43:22.767561 b8:27:eb:b3:e1:36 > 00:24:43:8f:e5:39, ethertype IPv4 (0x0800), length 98: 10.254.251.100 > 10.254.251.1: ICMP echo reply, id 2984, seq 0, length 64
有没有人有我的想法如何设置? iIs macvlan是错误的吗?
使用Linux brige我可以做类似的设置,但是主机回复所有IP与出口接口的物理MAC。
看看arp_filter和arp_ignore 。
/proc/sys/net/ipv4/conf/*/arp_filter , /proc/sys/net/ipv4/conf/*/arp_ignore