diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 2e42e7f..2e1e252 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -888,6 +888,14 @@
     std::filesystem::remove(config::pathForIntfConf(confDir, intf), ec);
     std::filesystem::remove(config::pathForIntfDev(confDir, intf), ec);
 
+    if (eth.ifIdx > 0)
+    {
+        eth.manager.interfacesByIdx.erase(eth.ifIdx);
+    }
+    auto it = eth.manager.interfaces.find(intf);
+    auto obj = std::move(it->second);
+    eth.manager.interfaces.erase(it);
+
     // Write an updated parent interface since it has a VLAN entry
     for (const auto& [_, intf] : eth.manager.interfaces)
     {
@@ -900,11 +908,14 @@
     if (eth.ifIdx > 0)
     {
         // We need to forcibly delete the interface as systemd does not
-        system::deleteIntf(eth.ifIdx);
+        eth.manager.addReloadPostHook(
+            [idx = eth.ifIdx]() { system::deleteIntf(idx); });
 
-        eth.manager.interfacesByIdx.erase(eth.ifIdx);
+        // Ignore the interface so the reload doesn't re-query it
+        eth.manager.ignoredIntf.emplace(eth.ifIdx);
     }
-    eth.manager.interfaces.erase(intf);
+
+    eth.manager.reloadConfigs();
 }
 
 } // namespace network
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 2d0f506..30af9a6 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -119,6 +119,10 @@
 
 void Manager::createInterface(const AllIntfInfo& info, bool enabled)
 {
+    if (ignoredIntf.find(info.intf.idx) != ignoredIntf.end())
+    {
+        return;
+    }
     if (auto it = interfacesByIdx.find(info.intf.idx);
         it != interfacesByIdx.end())
     {
diff --git a/src/network_manager.hpp b/src/network_manager.hpp
index 146da33..27ac8ae 100644
--- a/src/network_manager.hpp
+++ b/src/network_manager.hpp
@@ -117,6 +117,7 @@
      */
     string_umap<std::unique_ptr<EthernetInterface>> interfaces;
     std::unordered_map<unsigned, EthernetInterface*> interfacesByIdx;
+    std::unordered_set<unsigned> ignoredIntf;
 
     /** @brief Adds a hook that runs immediately prior to reloading
      *
@@ -152,7 +153,6 @@
 
     /** @brief Map of interface info for undiscovered interfaces */
     std::unordered_map<unsigned, AllIntfInfo> intfInfo;
-    std::unordered_set<unsigned> ignoredIntf;
 
     /** @brief Map of enabled interfaces */
     std::unordered_map<unsigned, bool> systemdNetworkdEnabled;
