diff --git a/daemon/face/tcp-factory.cpp b/daemon/face/tcp-factory.cpp
index 0a152b1..dc7e369 100644
--- a/daemon/face/tcp-factory.cpp
+++ b/daemon/face/tcp-factory.cpp
@@ -27,7 +27,6 @@
 #include "core/logger.hpp"
 #include "core/network-interface.hpp"
 #include "core/global-io.hpp"
-#include <ndn-cxx/util/dns.hpp>
 
 NFD_LOG_INIT("TcpFactory");
 
@@ -109,10 +108,10 @@
 }
 
 shared_ptr<TcpChannel>
-TcpFactory::createChannel(const std::string& localHost, const std::string& localPort)
+TcpFactory::createChannel(const std::string& localIp, const std::string& localPort)
 {
-  tcp::Endpoint endpoint(ndn::dns::syncResolve(localHost, getGlobalIoService()),
-                         boost::lexical_cast<uint16_t>(localPort));
+  using namespace boost::asio::ip;
+  tcp::Endpoint endpoint(address::from_string(localIp), boost::lexical_cast<uint16_t>(localPort));
   return createChannel(endpoint);
 }
 
diff --git a/daemon/face/tcp-factory.hpp b/daemon/face/tcp-factory.hpp
index e50bf66..c577854 100644
--- a/daemon/face/tcp-factory.hpp
+++ b/daemon/face/tcp-factory.hpp
@@ -67,17 +67,15 @@
   createChannel(const tcp::Endpoint& localEndpoint);
 
   /**
-   * \brief Create TCP-based channel using specified host and port number
+   * \brief Create TCP-based channel using specified IP address and port number
    *
-   * This method will attempt to resolve the provided host and port numbers
-   * and will throw TcpFactory::Error when channel cannot be created.
-   *
-   * Note that this call will **BLOCK** until resolution is done or failed.
+   * This method is just a helper that converts a string representation of localIp and port to
+   * tcp::Endpoint and calls the other createChannel overload.
    *
    * \throws TcpFactory::Error or std::runtime_error
    */
   shared_ptr<TcpChannel>
-  createChannel(const std::string& localHost, const std::string& localPort);
+  createChannel(const std::string& localIp, const std::string& localPort);
 
   // from Factory
 
diff --git a/daemon/face/udp-factory.cpp b/daemon/face/udp-factory.cpp
index 4ef4e17..fcf1343 100644
--- a/daemon/face/udp-factory.cpp
+++ b/daemon/face/udp-factory.cpp
@@ -26,7 +26,6 @@
 #include "udp-factory.hpp"
 #include "core/global-io.hpp"
 #include "core/network-interface.hpp"
-#include <ndn-cxx/util/dns.hpp>
 
 #if defined(__linux__)
 #include <sys/socket.h>
@@ -136,13 +135,13 @@
 }
 
 shared_ptr<UdpChannel>
-UdpFactory::createChannel(const std::string& localHost,
+UdpFactory::createChannel(const std::string& localIp,
                           const std::string& localPort,
                           const time::seconds& timeout)
 {
-  udp::Endpoint endPoint(ndn::dns::syncResolve(localHost, getGlobalIoService()),
-                         boost::lexical_cast<uint16_t>(localPort));
-  return createChannel(endPoint, timeout);
+  using namespace boost::asio::ip;
+  udp::Endpoint endpoint(address::from_string(localIp), boost::lexical_cast<uint16_t>(localPort));
+  return createChannel(endpoint, timeout);
 }
 
 shared_ptr<MulticastUdpFace>
@@ -253,10 +252,11 @@
                                 const std::string& multicastPort,
                                 const std::string& networkInterfaceName /* "" */)
 {
-  udp::Endpoint localEndpoint(ndn::dns::syncResolve(localIp, getGlobalIoService()),
+  using namespace boost::asio::ip;
+  udp::Endpoint localEndpoint(address::from_string(localIp),
                               boost::lexical_cast<uint16_t>(multicastPort));
 
-  udp::Endpoint multicastEndpoint(ndn::dns::syncResolve(multicastIp, getGlobalIoService()),
+  udp::Endpoint multicastEndpoint(address::from_string(multicastIp),
                                   boost::lexical_cast<uint16_t>(multicastPort));
 
   return createMulticastFace(localEndpoint, multicastEndpoint, networkInterfaceName);
diff --git a/daemon/face/udp-factory.hpp b/daemon/face/udp-factory.hpp
index db4760b..cfbd077 100644
--- a/daemon/face/udp-factory.hpp
+++ b/daemon/face/udp-factory.hpp
@@ -85,12 +85,10 @@
                 const time::seconds& timeout = time::seconds(600));
 
   /**
-   * \brief Create UDP-based channel using specified host and port number
+   * \brief Create UDP-based channel using specified IP address and port number
    *
-   * This method will attempt to resolve the provided host and port numbers
-   * and will throw UdpFactory::Error when channel cannot be created.
-   *
-   * Note that this call will **BLOCK** until resolution is done or failed.
+   * This method is just a helper that converts a string representation of localIp and port to
+   * udp::Endpoint and calls the other createChannel overload.
    *
    * If localHost is a IPv6 address of a specific device, it must be in the form:
    * ip address%interface name
@@ -101,7 +99,7 @@
    * \throws UdpFactory::Error
    */
   shared_ptr<UdpChannel>
-  createChannel(const std::string& localHost,
+  createChannel(const std::string& localIp,
                 const std::string& localPort,
                 const time::seconds& timeout = time::seconds(600));
 
diff --git a/daemon/face/websocket-factory.cpp b/daemon/face/websocket-factory.cpp
index 49f28b0..d4c8d3f 100644
--- a/daemon/face/websocket-factory.cpp
+++ b/daemon/face/websocket-factory.cpp
@@ -24,7 +24,6 @@
  */
 
 #include "websocket-factory.hpp"
-#include <ndn-cxx/util/dns.hpp>
 
 namespace nfd {
 
@@ -51,11 +50,10 @@
 }
 
 shared_ptr<WebSocketChannel>
-WebSocketFactory::createChannel(const std::string& host, const std::string& port)
+WebSocketFactory::createChannel(const std::string& localIp, const std::string& port)
 {
-  ip::tcp::endpoint tcpEndpoint(ndn::dns::syncResolve(host, getGlobalIoService()),
-                                boost::lexical_cast<uint16_t>(port));
-  websocket::Endpoint endpoint(tcpEndpoint.address(), tcpEndpoint.port());
+  using namespace boost::asio::ip;
+  websocket::Endpoint endpoint(address::from_string(localIp), boost::lexical_cast<uint16_t>(port));
   return createChannel(endpoint);
 }
 
diff --git a/daemon/face/websocket-factory.hpp b/daemon/face/websocket-factory.hpp
index d3a6324..eec0e60 100644
--- a/daemon/face/websocket-factory.hpp
+++ b/daemon/face/websocket-factory.hpp
@@ -70,12 +70,15 @@
   createChannel(const websocket::Endpoint& localEndpoint);
 
   /**
-   * \brief Create WebSocket-based channel using specified ip address and port number
+   * \brief Create WebSocket-based channel using specified IP address and port number
+   *
+   * This method is just a helper that converts a string representation of localIp and port to
+   * websocket::Endpoint and calls the other createChannel overload.
    *
    * \throws WebSocketFactory::Error
    */
   shared_ptr<WebSocketChannel>
-  createChannel(const std::string& ipAddress, const std::string& port);
+  createChannel(const std::string& localIp, const std::string& port);
 
   // from Factory
   virtual void
