diff --git a/plugins/net.js b/plugins/net.js
index <HASH>..<HASH> 100644
--- a/plugins/net.js
+++ b/plugins/net.js
@@ -89,7 +89,7 @@ module.exports = function (opts) {
     stringify: function (scope) {
       scope = scope || 'device'
       if(!isScoped(scope)) return
-      var _host = (scope == 'public' && opts.external) || scopes.host(scope)
+      var _host = opts.host || (scope == 'public' && opts.external) || scopes.host(scope)
       if(!_host) return null
       return ['net', _host, port].join(':')
     }
diff --git a/plugins/ws.js b/plugins/ws.js
index <HASH>..<HASH> 100644
--- a/plugins/ws.js
+++ b/plugins/ws.js
@@ -109,7 +109,7 @@ module.exports = function (opts) {
       else
         port = opts.port
 
-      var host = (scope == 'public' && opts.external) || scopes.host(scope)
+      var host = opts.host || (scope == 'public' && opts.external) || scopes.host(scope)
       //if a public scope was requested, but a public ip is not available, return
       if(!host) return null
Fix `stringify()` in net and ws to respect host

Previously we were disregarding the `host` setting for all configs
except in cases where `scope === 'public' && `opts.external != null`.
This resolves the error by first checking whether `opts.host` is defined
before falling back to automatic detection methods.