diff --git a/charmhelpers/contrib/network/ip.py b/charmhelpers/contrib/network/ip.py
index <HASH>..<HASH> 100644
--- a/charmhelpers/contrib/network/ip.py
+++ b/charmhelpers/contrib/network/ip.py
@@ -405,10 +405,10 @@ def is_ip(address):
     Returns True if address is a valid IP address.
     """
     try:
-        # Test to see if already an IPv4 address
-        socket.inet_aton(address)
+        # Test to see if already an IPv4/IPv6 address
+        address = netaddr.IPAddress(address)
         return True
-    except socket.error:
+    except netaddr.AddrFormatError:
         return False
 
 
diff --git a/tests/contrib/network/test_ip.py b/tests/contrib/network/test_ip.py
index <HASH>..<HASH> 100644
--- a/tests/contrib/network/test_ip.py
+++ b/tests/contrib/network/test_ip.py
@@ -590,6 +590,7 @@ class IPTest(unittest.TestCase):
 
     def test_is_ip(self):
         self.assertTrue(net_ip.is_ip('10.0.0.1'))
+        self.assertTrue(net_ip.is_ip('2001:db8:1:0:2918:3444:852:5b8a'))
         self.assertFalse(net_ip.is_ip('www.ubuntu.com'))
 
     @patch('charmhelpers.contrib.network.ip.apt_install')
Ensure is_ip detects IPv4 and IPv6 addresses

Switch underlying implementation to use netaddr to detect both
types of IP address, rather than inet_aton which only supports
IPv4.