Bug #11335
openSpoofing the MAC on a LAGG interface does not work for some NIC types.
0%
Description
When you spoof the MAC on an assigned LAGG interface in the webgui the new MAC is shown immediately as the 'ether' address on the first interface in the lagg:
igb4: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 11:22:33:44:55:88
hwaddr 00:90:7f:d0:28:10
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
igb5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 00:90:7f:d0:28:10
hwaddr 00:90:7f:d0:28:11
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 00:90:7f:d0:28:10
inet6 fe80::290:7fff:fed0:2810%lagg0 prefixlen 64 scopeid 0xd
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
groups: lagg
laggproto lacp lagghash l2,l3,l4
laggport: igb4 flags=0<>
laggport: igb5 flags=0<>
The second interface and the LAGG interface still show the hwaddr MAC from the first interface.
If you reboot at this point some NIC types will then propergate the MACs to all the interfaces in the LAGG and the LAGG interface and any VLANs on that.
For example em:
em4: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
options=81209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER>
ether 11:22:33:44:55:77
hwaddr 00:90:7f:87:dc:79
media: Ethernet autoselect
status: no carrier
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
em5: flags=28943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,PPROMISC> metric 0 mtu 9000
options=81209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER>
ether 11:22:33:44:55:77
hwaddr 00:90:7f:87:dc:7a
media: Ethernet autoselect
status: no carrier
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
description: lagg
options=81209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER>
ether 11:22:33:44:55:77
inet6 fe80::290:7fff:fe87:dc79%lagg0 prefixlen 64 scopeid 0xc
laggproto lacp lagghash l2,l3,l4
laggport: em4 flags=0<>
laggport: em5 flags=0<>
groups: lagg
media: Ethernet autoselect
status: no carrier
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
lagg0.20: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 9000
description: OPT3
options=3<RXCSUM,TXCSUM>
ether 11:22:33:44:55:77
inet6 fe80::290:7fff:fe87:dc79%lagg0.20 prefixlen 64 scopeid 0xd
groups: vlan
vlan: 20 vlanpcp: 0 parent interface: lagg0
media: Ethernet autoselect
status: no carrier
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
However LAGGs of igb or ix NICs do not.
But it can be manually set in those NIC types:
[2.4.5-RELEASE][admin@m400-3.stevew.lan]/root: ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 00:90:7f:d0:28:10
inet6 fe80::290:7fff:fed0:2810%lagg0 prefixlen 64 scopeid 0xd
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
groups: lagg
laggproto lacp lagghash l2,l3,l4
laggport: igb4 flags=0<>
laggport: igb5 flags=0<>
[2.4.5-RELEASE][admin@m400-3.stevew.lan]/root: ifconfig lagg0 ether 11:22:33:44:55:66
[2.4.5-RELEASE][admin@m400-3.stevew.lan]/root: ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 11:22:33:44:55:66
inet6 fe80::290:7fff:fed0:2810%lagg0 prefixlen 64 scopeid 0xd
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
groups: lagg
laggproto lacp lagghash l2,l3,l4
laggport: igb4 flags=0<>
laggport: igb5 flags=0<>
And when you do that the MAC is imediately pushed to all the LAGG members:
igb4: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 11:22:33:44:55:66
hwaddr 00:90:7f:d0:28:10
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
igb5: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=6400bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6>
ether 11:22:33:44:55:66
hwaddr 00:90:7f:d0:28:11
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: Ethernet autoselect
status: no carrier
So this looks like some issue with the way this is applied in pfSense. We made some changes to account for the fact that LAGGs usually inherit their MAC from the first member interface. However it looks like ifconfig now does that for us so it can be applied directly to the LAGG.
I have tested this in 2.4.5p1 and in 2.5/21.02 current snapshots.
No data to display