Hi all,
I’ve noticed a change in behavior when attempting to impersonate an 802.1X authenticated device in OpenWrt 24.x compared to 23.05.5.
Test cases:
OpenWrt SNAPSHOT Raspberry Pi 5
OpenWrt 24.10.1 Raspberry Pi 5
OpenWrt SNAPSHOT Raspberry Pi 4
OpenWrt 24.10.1 Raspberry Pi 4
OpenWrt 23.05.5 Raspberry Pi 4
OpenWrt 23.05.5 Raspberry Pi 3
Setup
The OpenWrt Raspberry Pi sits in-between the supplicant, and the authenticator, like this:
802.1x capable device -> eth1 - Raspberry Pi - eth0 -> Authenticator
In 23.05.5, both the Pi 4 and 3 the following approach allowed the impersonating device to take over the DHCP lease of the original device:
Bridge Mode
config device
option name 'br-lan'
option type 'bridge'
list ports 'eth0'
list ports 'eth1'
option ipv6 '0'
option promisc '1'
config interface 'lan'
option device 'br-lan'
option proto 'none'
Impersonation Mode
config device
option name 'eth0'
option ipv6 '0'
option promisc '1'
option macaddr '<MAC of impersonated device on eth1>'
config interface 'lan0'
option device 'eth0'
option proto 'dhcp'
To switch between the two modes:
cp networkmode_bridge /etc/config/network
/etc/init.d/network restart
Behavior
- OpenWrt 23.05.5: The impersonating device would inherit the IP address of the original device.
- OpenWrt 24.x (tested on 24.03 and SNAPSHOT): The impersonating device receives a new DHCP lease instead of assuming the existing one.
These are the only logs I have from the failing setup
Tue Oct 21 20:24:29 2025 daemon.notice netifd: Network device 'eth0' link is up
Tue Oct 21 20:24:29 2025 daemon.notice netifd: Interface 'lan0' has link connectivity
Tue Oct 21 20:24:29 2025 daemon.notice netifd: Interface 'lan0' is setting up now
Tue Oct 21 20:24:29 2025 kern.info kernel: [ 758.422327] macb 1f00100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
Tue Oct 21 20:24:29 2025 daemon.notice netifd: lan0 (6575): udhcpc: started, v1.36.1
Tue Oct 21 20:24:29 2025 daemon.notice netifd: lan0 (6575): udhcpc: broadcasting discover
Tue Oct 21 20:24:29 2025 daemon.notice netifd: lan1 (6269): udhcpc: broadcasting discover
Tue Oct 21 20:24:32 2025 daemon.notice netifd: lan1 (6269): udhcpc: broadcasting discover
Tue Oct 21 20:24:32 2025 daemon.notice netifd: lan0 (6575): udhcpc: broadcasting discover
Tue Oct 21 20:24:35 2025 daemon.notice netifd: lan0 (6575): udhcpc: broadcasting discover
Tue Oct 21 20:25:01 2025 daemon.notice netifd: lan0 (6575): udhcpc: broadcasting select for 10.155.100.4, server 10.155.100.1
Tue Oct 21 20:25:01 2025 daemon.notice netifd: lan0 (6575): udhcpc: lease of 10.155.100.4 obtained from 10.155.100.1, lease time 3600
Tue Oct 21 20:25:01 2025 daemon.notice netifd: Interface 'lan0' is now up
I don't have a functioning 802.1x network for testing right now, so I will be unable to get new logs until I get that fixed. I skimmed the changes between the two versions, but a lot of it is above my head. If anyone has questions, insights or has seen similar behavior, I’d appreciate your input.
Thanks!