Having MACADDR specified in /etc/sysconfig/network-scripts/ifcfg-<eth>.<vlan> file it is still not possible to change mac address, because of "ip set dev <dev> addr <mac>" fails: mac address can not be changed when parent interface is up. "Quick" patch: --- ifup.orig 2006-03-29 09:45:49 +0300 +++ ifup 2006-03-29 09:52:05 +0300 @@ -214,7 +214,14 @@ fi # set interface-specific parameters -[ -n "$MACADDR" ] && ip link set dev "$DEVICE" address "$MACADDR" +[ -n "$MACADDR" ] && \ + ( "$DEVICE" = "$REALDEVICE" ] && \ + ( ip link set dev "$DEVICE" address "$MACADDR" ) || \ + ( ip link set dev "$REALDEVICE" down; \ + ip link set dev "$DEVICE" address "$MACADDR"; \ + ip link set dev "$REALDEVICE" up \ + ) \ + ) [ -n "$MTU" ] && ip link set dev "$DEVICE" mtu $MTU ip link set dev "$DEVICE" $(ip_link_flag arp $ARP) $(ip_link_flag promisc $PROMISC) \ $(ip_link_flag allmulti $ALLMULTI) $(ip_link_flag multicast $MULTICAST)
> "Quick" patch: > > --- ifup.orig 2006-03-29 09:45:49 +0300 > +++ ifup 2006-03-29 09:52:05 +0300 > @@ -214,7 +214,14 @@ > fi > > # set interface-specific parameters > -[ -n "$MACADDR" ] && ip link set dev "$DEVICE" address "$MACADDR" > +[ -n "$MACADDR" ] && \ > + ( "$DEVICE" = "$REALDEVICE" ] && \ ^ Oops, a braket `[' missed, sorry. That's a really "quick test", not tested almost at all.
Предложенный способ, например, удалит статические маршруты с родительского интерфейса.
Я тут посмотрел и понял, что в /etc/net такая же недоработка. Попробую исправить в 0.8.4, чтобы была рабочая альтернатива.
В SVN trunk /etc/net назначение MAC-адресов VLAN-интерфейсам исправлено, поэтому невозможность (или неудобство) сделать так в net-scripts я объявляю WONTFIX.
Версия 0.8.4 опубликована.