diff --git a/scripts/nbhelper.py b/scripts/nbhelper.py
index d0aa8fa..b941cfb 100644
--- a/scripts/nbhelper.py
+++ b/scripts/nbhelper.py
@@ -211,6 +211,7 @@
 
         # build item lists
         self.build_prefix()
+        self.prefixes[self.data.prefix] = self
 
     @classmethod
     def all_prefixes(cls):
@@ -563,6 +564,40 @@
                 "addresses": [ip.address for ip in virtual_if_ips],
             }
 
+        # If the object is mgmtserver, it needs to have DNS/NTP server configs
+        if self.data["device_role"]["name"] == "Router":
+            services = list(netboxapi.ipam.services.filter(device_id=self.id))
+            service_names = list(map(lambda x: x.name, services))
+
+            if "dns" in service_names:
+                unbound_listen_ips = []
+                unbound_allow_ips = []
+
+                for ip, intf in self.interfaces_by_ip.items():
+                    if ip != primary_ip and intf.mgmt_only == False:
+                        unbound_listen_ips.append(ip)
+
+                for prefix in NBPrefix.all_prefixes().values():
+                    if prefix.data.description:
+                        unbound_allow_ips.append(prefix.data.prefix)
+                        ntp_client_allow.append(prefix.data.prefix)
+
+                if unbound_listen_ips:
+                    self.netplan_config["unbound_listen_ips"] = unbound_listen_ips
+
+                if unbound_allow_ips:
+                    self.netplan_config["unbound_allow_ips"] = unbound_allow_ips
+
+            if "ntp" in service_names:
+                ntp_client_allow = []
+
+                for prefix in NBPrefix.all_prefixes().values():
+                    if prefix.data.description:
+                        ntp_client_allow.append(prefix.data.prefix)
+
+                if ntp_client_allow:
+                    self.netplan_config["ntp_client_allow"] = ntp_client_allow
+
         return self.netplan_config
 
 
