diff --git a/src/dns_utils.rs b/src/dns_utils.rs index 8e06fc4..9780afc 100644 --- a/src/dns_utils.rs +++ b/src/dns_utils.rs @@ -44,7 +44,19 @@ fn create_server_context(context: Arc>, settings: &Settings) -> A server_context.allow_recursive = true; server_context.resolve_strategy = match settings.dns.forwarders.is_empty() { true => ResolveStrategy::Recursive, - false => ResolveStrategy::Forward { upstreams: settings.dns.forwarders.clone() } + false => { + let upstreams = settings.dns.forwarders.iter().map(|s| { + if s.starts_with("https://") || s.parse::().is_ok() { + s.clone() + } else if let Ok(ip) = s.parse::() { + std::net::SocketAddr::new(ip, 53).to_string() + } else { + warn!("Cannot parse forwarder address: {}", s); + s.clone() + } + }).collect(); + ResolveStrategy::Forward { upstreams } + } }; // Add host filters for host in &settings.dns.hosts {