diff --git a/duniter4j-core-shared/src/main/java/org/duniter/core/util/http/DnsUtils.java b/duniter4j-core-shared/src/main/java/org/duniter/core/util/http/DnsUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..973f96c8130a3bc1a10f6d56ae71d6cf81c1137e
--- /dev/null
+++ b/duniter4j-core-shared/src/main/java/org/duniter/core/util/http/DnsUtils.java
@@ -0,0 +1,54 @@
+package org.duniter.core.util.http;
+
+/*
+ * #%L
+ * Duniter4j :: Core Shared
+ * %%
+ * Copyright (C) 2014 - 2017 EIS
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the 
+ * License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public 
+ * License along with this program.  If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.regex.Pattern;
+
+/**
+ * Created by blavenie on 04/08/23
+ */
+public class DnsUtils {
+
+    public static final Pattern HOST_NAME_PATTERN = Pattern.compile("^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$");
+
+    private DnsUtils() {
+    }
+
+    public static String normalize(String input) {
+        return org.apache.http.conn.util.DnsUtils.normalize(input);
+    }
+
+    public static boolean isHostName(String input) {
+        return !InetAddressUtils.isIPv4Address(input)
+            && !InetAddressUtils.isIPv6Address(input)
+            && HOST_NAME_PATTERN.matcher(input).matches();
+    }
+
+    public static boolean isLocalhost(String input) {
+        return "localhost".equalsIgnoreCase(input);
+    }
+
+    public static boolean isInternetHostName(String input) {
+        return isHostName(input) && !isLocalhost(input);
+    }
+}
diff --git a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/DnsUtilsTest.java b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/DnsUtilsTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..18f6b618e761b321d42c252aaa573c60b29afc1b
--- /dev/null
+++ b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/DnsUtilsTest.java
@@ -0,0 +1,60 @@
+package org.duniter.core.util.http;
+
+/*-
+ * #%L
+ * Duniter4j :: Core Shared
+ * %%
+ * Copyright (C) 2014 - 2017 EIS
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public
+ * License along with this program.  If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Created by blavenie on 30/03/17.
+ */
+public class DnsUtilsTest {
+
+    @Test
+    public void isHostName() {
+
+        boolean checkTrue = DnsUtils.isHostName("g1.duniter.org");
+        Assert.assertTrue(checkTrue);
+
+        checkTrue = DnsUtils.isHostName("localhost");
+        Assert.assertTrue(checkTrue);
+
+        // Try with an IP
+        boolean checkFalse = DnsUtils.isHostName("192.168.0.254");
+        Assert.assertFalse(checkFalse);
+    }
+
+    @Test
+    public void isInternetHostName() {
+
+        boolean checkTrue = DnsUtils.isInternetHostName("g1.duniter.org");
+        Assert.assertTrue(checkTrue);
+
+        boolean checkFalse = DnsUtils.isInternetHostName("localhost");
+        Assert.assertFalse(checkFalse);
+
+        // Try with an IP
+        checkFalse = DnsUtils.isInternetHostName("192.168.0.254");
+        Assert.assertFalse(checkFalse);
+    }
+}
diff --git a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java
index 0ede067e330aaffea70a5f2212ba1223e5b2cc71..62d8a43f2a3e6dfab3a8787e7fb76784a72a08e6 100644
--- a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java
+++ b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java
@@ -33,27 +33,39 @@ public class InetAddressUtilsTest {
     @Test
     public void isIPv4Address() {
 
-        boolean check = InetAddressUtils.isIPv4Address("192.168.0.254");
-        Assert.assertTrue(check);
+        boolean checkTrue = InetAddressUtils.isIPv4Address("192.168.0.254");
+        Assert.assertTrue(checkTrue);
+
+        // Try a host name
+        boolean checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 
     @Test
-    public void isNotLocalIPv4Address() {
+    public void isInternetIPv4Address() {
 
         Assert.assertFalse(InetAddressUtils.isInternetIPv4Address("192.168.1.11"));
         Assert.assertFalse(InetAddressUtils.isInternetIPv4Address("abc"));
 
         Assert.assertTrue(InetAddressUtils.isInternetIPv4Address("82.239.120.237"));
+
+        // Try a host name
+        boolean checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 
     @Test
-    public void isLocalIPv4Address() {
+    public void isIntranetIPv4Address() {
 
         boolean check = InetAddressUtils.isIntranetIPv4Address("192.168.1.11");
         Assert.assertTrue(check);
 
         check = InetAddressUtils.isIntranetIPv4Address("127.0.0.1");
         Assert.assertTrue(check);
+
+        // Try a host name
+        boolean checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 
     @Test
@@ -70,6 +82,10 @@ public class InetAddressUtilsTest {
 
         checkFalse = InetAddressUtils.isLocalAddress("10.0.0.1");
         Assert.assertFalse(checkFalse);
+
+        // Try a host name
+        checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 
     @Test
@@ -86,6 +102,10 @@ public class InetAddressUtilsTest {
 
         checkTrue = InetAddressUtils.isIntranetAddress("192.168.0.254");
         Assert.assertTrue(checkTrue);
+
+        // Try a host name
+        boolean checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 
     @Test
@@ -105,5 +125,9 @@ public class InetAddressUtilsTest {
 
         checkFalse = InetAddressUtils.isInternetAddress("192.168.0.254");
         Assert.assertFalse(checkFalse);
+
+        // Try a host name
+        checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org");
+        Assert.assertFalse(checkFalse);
     }
 }