From 54549724d03e69b9a321d1ef3e9d136501d49403 Mon Sep 17 00:00:00 2001 From: Ryan Tharp Date: Mon, 4 Feb 2019 19:19:06 -0800 Subject: [PATCH 1/2] fix random.snode --- llarp/handlers/tun.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index b00be5dfe..bf1060ae2 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -199,6 +199,7 @@ namespace llarp TunEndpoint::HandleHookedDNSMessage( dns::Message &&msg, std::function< void(dns::Message) > reply) { + //llarp::LogInfo("Tun.HandleHookedDNSMessage ", msg.questions[0].qname); if(msg.questions.size() != 1) { llarp::LogWarn("bad number of dns questions: ", msg.questions.size()); @@ -247,8 +248,17 @@ namespace llarp else if(msg.questions[0].qtype == dns::qTypeA) { llarp::service::Address addr; - // forward dns - if(msg.questions[0].qname == "localhost.loki" + // on MacOS this is a typeA query + if(msg.questions[0].qname == "random.snode" + || msg.questions[0].qname == "random.snode.") + { + RouterID random; + if(Router()->GetRandomGoodRouter(random)) + msg.AddCNAMEReply(random.ToString(), 1); + else + msg.AddNXReply(); + } + else if(msg.questions[0].qname == "localhost.loki" || msg.questions[0].qname == "localhost.loki.") { size_t counter = 0; @@ -290,6 +300,7 @@ namespace llarp msg.AddINReply(ip); } else + // forward dns msg.AddNXReply(); reply(msg); From 2bba8f01e8feb33b1b590fee3dcad41195557fa2 Mon Sep 17 00:00:00 2001 From: Ryan Tharp Date: Mon, 4 Feb 2019 19:54:44 -0800 Subject: [PATCH 2/2] don't return unknown IPs --- llarp/handlers/tun.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index bf1060ae2..5cda02404 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -297,7 +297,13 @@ namespace llarp // TODO: add hook to EnsurePathToSNode EnsurePathToSNode(addr.as_array()); huint32_t ip = ObtainIPForAddr(addr, true); - msg.AddINReply(ip); + if (ip.h) + msg.AddINReply(ip); + else + { + llarp::LogWarn("no ip found for ", addr); + msg.AddNXReply(); + } } else // forward dns