diff --git a/package/gluon-client-bridge/Makefile b/package/gluon-client-bridge/Makefile
index 57d5b314f12b41d1cfd35290eb21fd02615a66a9..7f967ab4964cd8013f4bdbffce0513d306f743f2 100644
--- a/package/gluon-client-bridge/Makefile
+++ b/package/gluon-client-bridge/Makefile
@@ -12,7 +12,7 @@ define Package/gluon-client-bridge
   SECTION:=gluon
   CATEGORY:=Gluon
   TITLE:=Provides a bridge and a wireless interface for clients to connect to
-  DEPENDS:=+gluon-core
+  DEPENDS:=+gluon-core +kmod-macvlan
 endef
 
 define Build/Prepare
diff --git a/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node b/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node
new file mode 100755
index 0000000000000000000000000000000000000000..57ca68fffe43e8c6195e158925295f1ea2677718
--- /dev/null
+++ b/package/gluon-client-bridge/luasrc/lib/gluon/upgrade/310-gluon-client-bridge-local-node
@@ -0,0 +1,32 @@
+#!/usr/bin/lua
+
+local sysconfig = require 'gluon.sysconfig'
+
+local uci = require('simple-uci').cursor()
+
+
+uci:delete('network', 'local_node_dev')
+uci:section('network', 'device', 'local_node_dev', {
+	name = 'local-node',
+	ifname = 'br-client',
+	type = 'macvlan',
+	macaddr = sysconfig.primary_mac,
+})
+
+uci:delete('network', 'local_node')
+uci:section('network', 'interface', 'local_node', {
+	ifname = 'local-node',
+	proto = 'none',
+	auto = true,
+})
+
+uci:save('network')
+
+
+uci:delete('dhcp', 'local_node')
+uci:section('dhcp', 'dhcp', 'local_node', {
+	interface = 'local_node',
+	ignore = true,
+})
+
+uci:save('dhcp')
diff --git a/package/gluon-mesh-batman-adv-core/Makefile b/package/gluon-mesh-batman-adv-core/Makefile
index d476d4f8d1997fe8a10c3f9d97fe927378404c06..cb51f7d58f0c0cf87171f8e18c3ed8a2e45b4366 100644
--- a/package/gluon-mesh-batman-adv-core/Makefile
+++ b/package/gluon-mesh-batman-adv-core/Makefile
@@ -13,7 +13,7 @@ define Package/gluon-mesh-batman-adv-core
   SECTION:=gluon
   CATEGORY:=Gluon
   TITLE:=Support for batman-adv meshing (core)
-  DEPENDS:=+gluon-core +libgluonutil +gluon-client-bridge +gluon-ebtables +firewall +libiwinfo +kmod-dummy +kmod-macvlan +libnl-tiny
+  DEPENDS:=+gluon-core +libgluonutil +gluon-client-bridge +gluon-ebtables +firewall +libiwinfo +kmod-dummy +libnl-tiny
 endef
 
 define Build/Prepare
diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-local-node b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-local-node
index f26ba1a092164aed7930a6e0819d2d1bbd02fc32..d281b2c16740fd809d98370f94e897e2d4314a4f 100755
--- a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-local-node
+++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-local-node
@@ -1,5 +1,9 @@
 #!/usr/bin/lua
 
+-- This script must be ordered after 310-gluon-client-bridge-local-node, as
+-- it overrides parts of network.local_node
+
+
 local site = require 'gluon.site_config'
 local sysconfig = require 'gluon.sysconfig'
 local sysctl = require 'gluon.sysctl'
@@ -7,17 +11,7 @@ local sysctl = require 'gluon.sysctl'
 local uci = require('simple-uci').cursor()
 
 
-uci:delete('network', 'local_node_dev')
-uci:section('network', 'device', 'local_node_dev', {
-	name = 'local-node',
-	ifname = 'br-client',
-	type = 'macvlan',
-	macaddr = sysconfig.primary_mac,
-})
-
-uci:delete('network', 'local_node')
 uci:section('network', 'interface', 'local_node', {
-	ifname = 'local-node',
 	proto = 'dhcpv6',
 	reqprefix = 'no',
 	peerdns = not (site.dns and site.dns.servers),
@@ -54,13 +48,4 @@ uci:section('firewall', 'rule', 'local_node_dns', {
 uci:save('firewall')
 
 
-uci:delete('dhcp', 'local_node')
-uci:section('dhcp', 'dhcp', 'local_node', {
-	interface = 'local_node',
-	ignore = true,
-})
-
-uci:save('dhcp')
-
-
 sysctl.set('net.ipv6.conf.local_node.forwarding', 0)