diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one
index 54b7cfe527..04f8b01313 100644
--- a/ansible/inventory/all-in-one
+++ b/ansible/inventory/all-in-one
@@ -538,7 +538,7 @@ designate
 designate
 
 [designate-mdns:children]
-designate
+network
 
 [designate-worker:children]
 designate
diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode
index c22c5bd58b..66ff970d6a 100644
--- a/ansible/inventory/multinode
+++ b/ansible/inventory/multinode
@@ -556,7 +556,7 @@ designate
 designate
 
 [designate-mdns:children]
-designate
+network
 
 [designate-worker:children]
 designate
diff --git a/ansible/roles/designate/templates/designate.conf.j2 b/ansible/roles/designate/templates/designate.conf.j2
index d722c8230b..68e163889d 100644
--- a/ansible/roles/designate/templates/designate.conf.j2
+++ b/ansible/roles/designate/templates/designate.conf.j2
@@ -36,9 +36,11 @@ memcached_servers = {% for host in groups['memcached'] %}{{ hostvars[host]['ansi
 enabled_notification_handlers = nova_fixed, neutron_floatingip
 workers = {{ openstack_service_workers }}
 
+{% if service_name == 'designate-mdns' %}
 [service:mdns]
 listen = {{ hostvars[inventory_hostname]['ansible_' + dns_interface]['ipv4']['address'] }}:{{ designate_mdns_port }}
 workers = {{ openstack_service_workers }}
+{% endif %}
 
 [service:worker]
 # TODO (egonzalez): Remove enabled option in worker section once https://bugs.launchpad.net/designate/+bug/1676827
diff --git a/releasenotes/notes/mdns-network-nodes-ac8b9d4b721e9ac8.yaml b/releasenotes/notes/mdns-network-nodes-ac8b9d4b721e9ac8.yaml
new file mode 100644
index 0000000000..2b285e6bb8
--- /dev/null
+++ b/releasenotes/notes/mdns-network-nodes-ac8b9d4b721e9ac8.yaml
@@ -0,0 +1,6 @@
+---
+upgrade:
+  - |
+    Designate mDNS container now runs on network nodes,
+    ensure designate-mdns group in your inventory has network
+    as parent group.