diff --git a/cvp-sanity/cvp_checks/global_config.yaml b/cvp-sanity/cvp_checks/global_config.yaml
index de6f095..47a28cd 100644
--- a/cvp-sanity/cvp_checks/global_config.yaml
+++ b/cvp-sanity/cvp_checks/global_config.yaml
@@ -65,6 +65,12 @@
     "skipped_ifaces": ["bonding_masters", "lo", "veth", "tap", "cali", "qv", "qb", "br-int", "vxlan"]}
 # mask for interfaces to skip
 
+# test duplicate ips
+# do not comment this section
+test_duplicate_ips:
+  {
+    "skipped_ifaces": ["lo", "virbr0", "docker_gwbridge", "docker0"]}
+
 # specify what mcp version (tag) is deployed
 drivetrain_version: ''
 
diff --git a/cvp-sanity/cvp_checks/tests/test_duplicate_ips.py b/cvp-sanity/cvp_checks/tests/test_duplicate_ips.py
new file mode 100644
index 0000000..9e4b978
--- /dev/null
+++ b/cvp-sanity/cvp_checks/tests/test_duplicate_ips.py
@@ -0,0 +1,49 @@
+import pytest
+from collections import Counter
+from pprint import pformat
+import os
+from cvp_checks import utils
+
+
+def get_duplicate_ifaces(nodes, ips):
+    dup_ifaces = {}
+    for node in nodes:
+        for iface in nodes[node]['ip4_interfaces']:
+            if set(nodes[node]['ip4_interfaces'][iface]) & set(ips):
+                dup_ifaces[node] = {iface: nodes[node]['ip4_interfaces'][iface]}
+    return dup_ifaces
+
+def test_duplicate_ips(local_salt_client):
+    active_nodes = utils.get_active_nodes()
+
+    testname = os.path.basename(__file__).split('.')[0]
+    config = utils.get_configuration()
+    skipped_ifaces = config.get(testname)["skipped_ifaces"]
+
+    local_salt_client.cmd('L@'+','.join(active_nodes),
+                          'saltutil.refresh_grains',
+                          expr_form='compound')
+    nodes = local_salt_client.cmd('L@'+','.join(active_nodes),
+                                  'grains.item',
+                                  ['ip4_interfaces'],
+                                  expr_form='compound')
+
+    ipv4_list = []
+    for node in nodes:
+        for iface in nodes[node]['ip4_interfaces']:
+            # Omit 'ip-less' ifaces
+            if not nodes[node]['ip4_interfaces'][iface]:
+                continue
+            if iface in skipped_ifaces:
+                continue
+            ipv4_list.extend(nodes[node]['ip4_interfaces'][iface])
+    no_dups = (len(ipv4_list) == len(set(ipv4_list)))
+    if not no_dups:
+        ips_count = Counter(ipv4_list).most_common()
+        dup_ips = filter(lambda x: x[1] > 1, ips_count)
+        dup_ifaces = get_duplicate_ifaces(nodes, [v[0] for v in dup_ips])
+
+        msg = ("\nDuplicate IP addresses found:\n{}"
+               "\n\nThe following interfaces are affected:\n{}"
+                "".format(pformat(dup_ips), pformat(dup_ifaces)))
+        assert no_dups, msg
