diff --git a/inventory_provider/juniper.py b/inventory_provider/juniper.py
index c0b0f87b138a090b5ad6981b88880a27bfcd8d96..468eef553af60b98d553a4c9b756b1db5069536f 100644
--- a/inventory_provider/juniper.py
+++ b/inventory_provider/juniper.py
@@ -292,6 +292,22 @@ def vpn_rr_peers(netconf_config):
             neighbor['peer-as'] = int(r.find('peer-as').text)
         yield neighbor
 
+
+def interface_addresses(netconf_config):
+    """
+    yields a list of all distinct interface addresses
+    :param netconf_config:
+    :return:
+    """
+    for ifc in list_interfaces(netconf_config):
+        for address in ifc['ipv4'] + ifc['ipv6']:
+            yield {
+                "name": ipaddress.ip_interface(address).ip.exploded,
+                "interface address": address,
+                "interface name": ifc['name']
+            }
+
+
 # note for enabling vrr data parsing ...
 # def fetch_vrr_config(hostname, ssh_params):
 #
diff --git a/inventory_provider/tasks/worker.py b/inventory_provider/tasks/worker.py
index 96917adf34987378f6399ef0670e04ee9aaf1ff5..cf6d3e04cdf7c421d902ff27203eb578df75e2c4 100644
--- a/inventory_provider/tasks/worker.py
+++ b/inventory_provider/tasks/worker.py
@@ -298,6 +298,13 @@ def refresh_vpn_rr_peers(hostname, netconf):
         juniper.vpn_rr_peers(netconf))
 
 
+def refresh_interface_address_lookups(hostname, netconf):
+    _refresh_peers(
+        hostname,
+        'reverse_interface_addresses',
+        juniper.interface_addresses(netconf))
+
+
 @app.task(base=InventoryTask, bind=True)
 def reload_router_config(self, hostname):
     logger = logging.getLogger(__name__)
@@ -351,6 +358,7 @@ def reload_router_config(self, hostname):
         })
     refresh_ix_public_peers(hostname, netconf_doc)
     refresh_vpn_rr_peers(hostname, netconf_doc)
+    refresh_interface_address_lookups(hostname, netconf_doc)
     clear_cached_classifier_responses(hostname)
 
     # load snmp indexes