// RunDNSServer starts the DNS server func (c *MasterConfig) RunDNSServer() { config, err := dns.NewServerDefaults() if err != nil { glog.Fatalf("Could not start DNS: %v", err) } config.DnsAddr = c.Options.DNSConfig.BindAddress config.NoRec = true // do not want to deploy an open resolver _, port, err := net.SplitHostPort(c.Options.DNSConfig.BindAddress) if err != nil { glog.Fatalf("Could not start DNS: %v", err) } if port != "53" { glog.Warningf("Binding DNS on port %v instead of 53 (you may need to run as root and update your config), using %s which will not resolve from all locations", port, c.Options.DNSConfig.BindAddress) } if ok, err := cmdutil.TryListen(c.Options.DNSConfig.BindAddress); !ok { glog.Warningf("Could not start DNS: %v", err) return } go func() { err := dns.ListenAndServe(config, c.DNSServerClient(), c.EtcdHelper.Client.(*etcdclient.Client)) glog.Fatalf("Could not start DNS: %v", err) }() cmdutil.WaitForSuccessfulDial(false, "tcp", c.Options.DNSConfig.BindAddress, 100*time.Millisecond, 100*time.Millisecond, 100) glog.Infof("DNS listening at %s", c.Options.DNSConfig.BindAddress) }
// RunDNSServer starts the DNS server func (c *MasterConfig) RunDNSServer() { config, err := dns.NewServerDefaults() if err != nil { glog.Fatalf("Could not start DNS: %v", err) } switch c.Options.DNSConfig.BindNetwork { case "tcp": config.BindNetwork = "ip" case "tcp4": config.BindNetwork = "ipv4" case "tcp6": config.BindNetwork = "ipv6" } config.DnsAddr = c.Options.DNSConfig.BindAddress config.NoRec = !c.Options.DNSConfig.AllowRecursiveQueries _, port, err := net.SplitHostPort(c.Options.DNSConfig.BindAddress) if err != nil { glog.Fatalf("Could not start DNS: %v", err) } if port != "53" { glog.Warningf("Binding DNS on port %v instead of 53, which may not be resolvable from all clients", port) } if ok, err := cmdutil.TryListen(c.Options.DNSConfig.BindNetwork, c.Options.DNSConfig.BindAddress); !ok { glog.Warningf("Could not start DNS: %v", err) return } go func() { etcdClient, err := etcd.GetAndTestEtcdClient(c.Options.EtcdClientInfo) if err != nil { glog.Fatalf("Could not get etcd client: %v", err) return } err = dns.ListenAndServe(config, c.DNSServerClient(), etcdClient) glog.Fatalf("Could not start DNS: %v", err) }() cmdutil.WaitForSuccessfulDial(false, "tcp", c.Options.DNSConfig.BindAddress, 100*time.Millisecond, 100*time.Millisecond, 100) glog.Infof("DNS listening at %s", c.Options.DNSConfig.BindAddress) }
// RunDNSServer starts the DNS server func (c *MasterConfig) RunDNSServer() { config, err := dns.NewServerDefaults() if err != nil { glog.Fatalf("Could not start DNS: %v", err) } switch c.Options.DNSConfig.BindNetwork { case "tcp": config.BindNetwork = "ip" case "tcp4": config.BindNetwork = "ipv4" case "tcp6": config.BindNetwork = "ipv6" } config.DnsAddr = c.Options.DNSConfig.BindAddress config.NoRec = !c.Options.DNSConfig.AllowRecursiveQueries _, port, err := net.SplitHostPort(c.Options.DNSConfig.BindAddress) if err != nil { glog.Fatalf("Could not start DNS: %v", err) } if port != "53" { glog.Warningf("Binding DNS on port %v instead of 53 (you may need to run as root and update your config), using %s which will not resolve from all locations", port, c.Options.DNSConfig.BindAddress) } if ok, err := cmdutil.TryListen(c.Options.DNSConfig.BindNetwork, c.Options.DNSConfig.BindAddress); !ok { glog.Warningf("Could not start DNS: %v", err) return } go func() { err := dns.ListenAndServe(config, c.DNSServerClient(), c.EtcdClient) glog.Fatalf("Could not start DNS: %v", err) }() cmdutil.WaitForSuccessfulDial(false, "tcp", c.Options.DNSConfig.BindAddress, 100*time.Millisecond, 100*time.Millisecond, 100) glog.Infof("DNS listening at %s", c.Options.DNSConfig.BindAddress) }