diff --git a/app/models/concerns/foreman_wds/nic_extensions.rb b/app/models/concerns/foreman_wds/nic_extensions.rb
index 5487ddfbedead376ca2172a1c006e201d85caff5..abc8345a8be1ee1b21fe23d213203631d7051669 100644
--- a/app/models/concerns/foreman_wds/nic_extensions.rb
+++ b/app/models/concerns/foreman_wds/nic_extensions.rb
@@ -10,7 +10,10 @@ module ForemanWds
     def boot_server
       return super if host.nil? || !host.wds? || host.wds_facet.nil?
 
-      return host.wds_server.next_server_ip if host.build? # TODO: Support choosing local boot method
+      if host.build? # TODO: Support choosing local boot method
+        return host.wds_server.next_server_ip unless subnet.dhcp.has_capability?(:DHCP, :dhcp_filename_hostname)
+        return host.wds_server.next_server_name
+      end
 
       super
     end
diff --git a/app/models/wds_server.rb b/app/models/wds_server.rb
index 835735ff1b928841a217eedd08bdd8de9271ac25..33df3c556a510d7a73239a6712242a2ab3aafaea 100644
--- a/app/models/wds_server.rb
+++ b/app/models/wds_server.rb
@@ -110,8 +110,12 @@ class WdsServer < ApplicationRecord
     end
   end
 
+  def next_server_name
+    URI(url).host
+  end
+
   def next_server_ip
-    res = Resolv::DNS.open { |dns| dns.getaddresses(URI(url).host) }.select { |addr| addr.is_a? Resolv::IPv4 }.first
+    res = Resolv::DNS.open { |dns| dns.getaddresses(next_server_name) }.select { |addr| addr.is_a? Resolv::IPv4 }.first
     return res.to_s if res
 
     IPSocket.getaddress URI(url).host