I just upgraded to 23.05.3 from 22.05.6. My network configuration for the routers is static; all IP addresses are manually configured. I have a mesh network with several routers, all Asus RT-AC58U and Engenius EAP1300 devices.
After the upgrade, my DNS entries for the routers were being messed up. It turns out that the routers were all doing DHCP queries. They were not applying the values, though, they were keeping the manually configured addresses.
I removed everything having to do with DNS and DHCP on the devices, but it was still happening. Watching, I was seeing /sbin/udhcpc getting run periodically for some reason. My mesh routers were bouncing; I think it was due to this running. That file was a link to busybox. Ii removed the link and the problems went away.
So I've hacked around it, but I think a proper fix needs to be done.
-corey
udhcpc os the dhcp client. That will run if your device has one or more interfaces set with dhcp client mode for its protocol (to get an address). It will also run if you have a dhcp server enabled - it does this to make sure there are no other dhcp servers on the network.
It will not bounce any connections, though.
Let’s see a network topology diagram. Please indicate which devices use dhcp client, which one should be the server, and which ones run openwrt. We also need to know which ones were recently updated.
udhcpc os the dhcp client. That will run if your device has one or more interfaces set with dhcp client mode for its protocol (to get an address). It will also run if you have a dhcp server enabled - it does this to make sure there are no other dhcp servers on the network.
Yes, I know, and dhcp is completely disabled everywhere. No client, no server on any OpenWRT device.
It will not bounce any connections, though.
Not sure, but it seems to have solved my problem with the mesh links bouncing.
Let’s see a network topology diagram. Please indicate which devices use dhcp client, which one should be the server, and which ones run openwrt. We also need to know which ones were recently updated.
No device running OpenWRT is a DHCP client or server. I can do a network topology, but that seems kind of irrelevant. I have an OpenWRT router. It has a bridged LAN interface with nothing plugged into it The bridged LAN interface has a static address configuration. It has a mesh connection on 5GHz, no other wireless interfaces are enabled. The mesh interface is connected to the bridged LAN.
Something is periodically running udpchc. It appears to not work, as it quits after a bit. But then it happens again.
-corey
look at the logs of each OpenWrt device.
logread -e udhcpc
What do you see?
Nothing:
root@router5:~# logread -e udhcpc
root@router5:~#
Well, the router that has the main internet connection has some logs, but it's the main router in the network and is runnign DHCP upstream:
root@router:~# logread -e udhcpc
Wed Apr 3 16:19:53 2024 daemon.notice netifd: wan (2321): udhcpc: sending renew to server 47.184.176.1
Wed Apr 3 16:19:53 2024 daemon.notice netifd: wan (2321): udhcpc: lease of 47.184.176.113 obtained from 47.184.176.1, lease time 1800
Wed Apr 3 16:34:53 2024 daemon.notice netifd: wan (2321): udhcpc: sending renew to server 47.184.176.1
Wed Apr 3 16:34:53 2024 daemon.notice netifd: wan (2321): udhcpc: lease of 47.184.176.113 obtained from 47.184.176.1, lease time 1800
Wed Apr 3 16:49:53 2024 daemon.notice netifd: wan (2321): udhcpc: sending renew to server 47.184.176.1
Wed Apr 3 16:49:53 2024 daemon.notice netifd: wan (2321): udhcpc: lease of 47.184.176.113 obtained from 47.184.176.1, lease time 1800
Well, I have deleted /sbin/udhcpc, let me re-add that and see.
I re-added /sbin/udhcpc on a less critical router:
root@router3:~# logread -e udhcpc
Fri Mar 29 12:22:15 2024 daemon.info sh[1377]: udhcpc: setting default routers: 192.168.27.254
Fri Mar 29 12:22:46 2024 daemon.info sh[1377]: udhcpc: setting default routers: 192.168.27.254
And the DHCP server is getting requests. That system is also now extremely unstable, the link is bouncing constantly with this change.
let's see the config from that device:
Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </>
" button:

Remember to redact passwords, MAC addresses and any public IP addresses you may have:
ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall
The dhcpc command running is:
udhcpc -p /var/run/udhcpc-br-lan.pid -b -t 3 -i br-l
What about the device configs?
Ok, here it is:
typroot@router3:~# ubus call system board
{
"kernel": "5.15.150",
"hostname": "router3",
"system": "ARMv7 Processor rev 5 (v7l)",
"model": "ASUS RT-AC58U",
"board_name": "asus,rt-ac58u",
"rootfs_type": "squashfs",
"release": {
"distribution": "OpenWrt",
"version": "23.05.3",
"revision": "r23809-234f1a2efa",
"target": "ipq40xx/generic",
"description": "OpenWrt 23.05.3 r23809-234f1a2efa"
}
}
root@router3:~# cat /etc/config/network
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd83:5149:ac70::/48'
config device
option name 'br-lan'
option type 'bridge'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'wan'
config device
option name 'lan1'
option macaddr '***'
config device
option name 'lan2'
option macaddr '***'
config device
option name 'lan3'
option macaddr '***'
config device
option name 'lan4'
option macaddr '***'
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.27.247'
option netmask '255.255.255.0'
option gateway '192.168.27.254'
list ip6addr '2001:470:b8f6:1b::f7/64'
option ip6gw '2001:470:b8f6:1b::fe'
list dns '192.168.27.1'
list dns_search 'minyard.net'
config device
option name 'wan'
option macaddr '***'
root@router3:~# cat /etc/config/wireless
config wifi-device 'radio0'
option type 'mac80211'
option path 'platform/soc/a000000.wifi'
option channel '1'
option band '2g'
option htmode 'HT20'
option cell_density '0'
config wifi-iface 'default_radio0'
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'elvis'
option encryption 'psk2'
option key '***'
option disabled '0'
config wifi-device 'radio1'
option type 'mac80211'
option path 'platform/soc/a800000.wifi'
option channel '153'
option band '5g'
option htmode 'VHT80'
option cell_density '0'
config wifi-iface 'default_radio1'
option device 'radio1'
option network 'lan'
option mode 'ap'
option ssid 'elvis5'
option encryption 'psk2'
option key '***'
option disabled '0'
config wifi-iface 'wifinet2'
option device 'radio1'
option mode 'mesh'
option encryption 'sae'
option mesh_id 'elvis-mesh2'
option mesh_fwding '1'
option mesh_rssi_threshold '-90'
option key '***'
option network 'lan'
option mesh_gate_announcements '1'
option mesh_hwmp_rootmode '3'
root@router3:~# cat /etc/config/dhcp
config dnsmasq
option domainneeded '1'
option boguspriv '1'
option filterwin2k '0'
option localise_queries '1'
option rebind_protection '1'
option rebind_localhost '1'
option local '/lan/'
option domain 'lan'
option expandhosts '1'
option nonegcache '0'
option cachesize '1000'
option authoritative '1'
option readethers '1'
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
option nonwildcard '1'
option localservice '1'
option ednspacket_max '1232'
option filter_aaaa '0'
option filter_a '0'
config dhcp 'lan'
option interface 'lan'
option start '100'
option limit '150'
option leasetime '12h'
option dhcpv4 'server'
option ignore '1'
config odhcpd 'odhcpd'
option maindhcp '0'
option leasefile '/tmp/hosts/odhcpd'
option leasetrigger '/usr/sbin/odhcpd-update'
option loglevel '4'
root@router3:~# cat /etc/config/firewall
config defaults
option syn_flood '1'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
config zone
option name 'lan'
option input 'ACCEPT'
option output 'ACCEPT'
option forward 'ACCEPT'
list network 'lan'
config zone
option name 'wan'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
option mtu_fix '1'
config forwarding
option src 'lan'
option dest 'wan'
config rule
option name 'Allow-DHCP-Renew'
option src 'wan'
option proto 'udp'
option dest_port '68'
option target 'ACCEPT'
option family 'ipv4'
config rule
option name 'Allow-Ping'
option src 'wan'
option proto 'icmp'
option icmp_type 'echo-request'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-IGMP'
option src 'wan'
option proto 'igmp'
option family 'ipv4'
option target 'ACCEPT'
config rule
option name 'Allow-DHCPv6'
option src 'wan'
option proto 'udp'
option dest_port '546'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-MLD'
option src 'wan'
option proto 'icmp'
option src_ip 'fe80::/10'
list icmp_type '130/0'
list icmp_type '131/0'
list icmp_type '132/0'
list icmp_type '143/0'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Input'
option src 'wan'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
list icmp_type 'router-solicitation'
list icmp_type 'neighbour-solicitation'
list icmp_type 'router-advertisement'
list icmp_type 'neighbour-advertisement'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-ICMPv6-Forward'
option src 'wan'
option dest '*'
option proto 'icmp'
list icmp_type 'echo-request'
list icmp_type 'echo-reply'
list icmp_type 'destination-unreachable'
list icmp_type 'packet-too-big'
list icmp_type 'time-exceeded'
list icmp_type 'bad-header'
list icmp_type 'unknown-header-type'
option limit '1000/sec'
option family 'ipv6'
option target 'ACCEPT'
config rule
option name 'Allow-IPSec-ESP'
option src 'wan'
option dest 'lan'
option proto 'esp'
option target 'ACCEPT'
config rule
option name 'Allow-ISAKMP'
option src 'wan'
option dest 'lan'
option dest_port '500'
option proto 'udp'
option target 'ACCEPT'
It just changed the IP address via a dhcp request on my main router, which also has a static address and has
option ignore '1'
in "config dhcp 'lan'", just like all the others.
I've set the dhcp server to ignore these interfaces, because I need udpcpc on that router to do the upstream dhcp. But this is driving me crazy.
-corey
My bad: I missed your reply.
I don't see anything that would cause udhcpc traffic on this device, nor do I see anything that could cause the interfaces to bounce.
Have you verified all of your other devices to ensure there are no rogue DHCP servers?
Thanks for the reply. I didn't see anything, either; I spent some time going over it.
I'm sure there are no other DHCP servers. I know what that looks like :). But even so, that's not going to cause udhcpc to be run on the system.
I've added a script in place of udhcpc that runs pstree to see what's running udhcpc. Maybe that will help trace it down.
1 Like
It's being done by the mesh code:
|-sh,1440 /usr/sbin/mesh11sd daemon
| `-ash,7727 /sbin/udhcpc -p /var/run/udhcpc-br-lan.pid -b -t 3 -i br-lan -x hostname:router3 -C -R -O 121
| `-pstree,7729 -ap
Looking at that script, it calls udhcpc to get the default routers. I'll poke around with that.
mesh11sd is also setting the ignore option for dhcp for the device to "0", overriding what I set.
It looks like mesh11sd needs some serious work.
Have you read the user guide?
https://openwrt.org/docs/guide-user/network/wifi/mesh/mesh11sd
From that user guide:
WARNING - It is not recommended to upgrade to v3.1.0 or or higher, from a lower version eg 2.0.0 as the configuration is very different.
If upgrading, remove the old version, delete the /etc/config/mesh11sd file and then remove all mesh configuration from /etc/config/wireless before installing the new version.
I didn't upgrade. I did a complete fresh install and reconfigured everything from scratch. I did try an upgrade, but that was kind of hopeless. I had to do a sysupgrade and tell it t not keep the old config.
Now, the problems I had been seeing that caused me to upgrade could have been because they upgraded mesh11sd. But that's now water under the bridge for me.
And I have looked at the code. It starts udhcpc without checking to see if it shouldn't. Well, there's some configuration, but apparently it got that wrong by default and it's trying to do dhcp when it shouldn't.
Clearly you have still not read the user guide.
On the contrary, it starts udhcpc when it finds that it must do so.
As you would see from the user guide, by default, mesh11sd starts in auto_config mode, allowing for a zero configuration, common flash image rollout of meshnodes.
If you are an advanced user and fully understand 802.11s mesh networking then you can select manual mode.
https://openwrt.org/docs/guide-user/network/wifi/mesh/mesh11sd#manual_configuration
As an advanced user and wishing to use manual mode, be aware some network drivers expect all interfaces to have different mac addresses, otherwise only one interface per radio will come up (eg MT7628 and probably others).
This is usually due to an incomplete implementation of DSA and mesh11sd fixes this where required.
The current version of mesh11sd, v3.1.0 continues to fixup mac addresses where required, even when auto_config is off.
As most advanced users will want to do this themselves, an interim version v3.1.1 is now released to turn this off also. The OpenWrt build bots are currently making this available in master/snapshots and it will then be built for 23.05.
If you want to use it now you can download from here: