fix: prefer configured nameservers, fix DHCP6 in container

Always prefer explicitly configured nameservers,
networkd was missing capability to bind address for DHCP6.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
This commit is contained in:
Andrey Smirnov 2021-02-06 00:01:12 +03:00 committed by talos-bot
parent 6cf98a7322
commit 757cc204ec
2 changed files with 18 additions and 14 deletions

View File

@ -115,6 +115,7 @@ func (n *Networkd) Runner(r runtime.Runtime) (runner.Runner, error) {
strings.ToUpper("CAP_" + capability.CAP_NET_ADMIN.String()), strings.ToUpper("CAP_" + capability.CAP_NET_ADMIN.String()),
strings.ToUpper("CAP_" + capability.CAP_SYS_ADMIN.String()), strings.ToUpper("CAP_" + capability.CAP_SYS_ADMIN.String()),
strings.ToUpper("CAP_" + capability.CAP_NET_RAW.String()), strings.ToUpper("CAP_" + capability.CAP_NET_RAW.String()),
strings.ToUpper("CAP_" + capability.CAP_NET_BIND_SERVICE.String()),
}), }),
oci.WithHostNamespace(specs.NetworkNamespace), oci.WithHostNamespace(specs.NetworkNamespace),
oci.WithMounts(mounts), oci.WithMounts(mounts),

View File

@ -60,8 +60,6 @@ func New(config config.Provider) (*Networkd, error) {
resolvers []string resolvers []string
) )
resolvers = []string{DefaultPrimaryResolver, DefaultSecondaryResolver}
netconf := make(map[string][]nic.Option) netconf := make(map[string][]nic.Option)
if option = procfs.ProcCmdline().Get("ip").First(); option != nil { if option = procfs.ProcCmdline().Get("ip").First(); option != nil {
@ -203,8 +201,11 @@ func (n *Networkd) Configure() (err error) {
} }
} }
resolvers := []string{} // prefer resolvers from the configuration
resolvers := append([]string(nil), n.resolvers...)
// if no resolvers configured, use addressing method resolvers
if len(resolvers) == 0 {
for _, netif := range n.Interfaces { for _, netif := range n.Interfaces {
for _, method := range netif.AddressMethod { for _, method := range netif.AddressMethod {
if !method.Valid() { if !method.Valid() {
@ -216,6 +217,12 @@ func (n *Networkd) Configure() (err error) {
} }
} }
} }
}
// use default resolvers if nothing is configured
if len(resolvers) == 0 {
resolvers = append(resolvers, DefaultPrimaryResolver, DefaultSecondaryResolver)
}
// Set hostname must be before the resolv configuration // Set hostname must be before the resolv configuration
// so we can ensure the hosts domainname is set properly // so we can ensure the hosts domainname is set properly
@ -224,10 +231,6 @@ func (n *Networkd) Configure() (err error) {
return err return err
} }
if len(resolvers) == 0 {
resolvers = n.resolvers
}
if err = writeResolvConf(resolvers); err != nil { if err = writeResolvConf(resolvers); err != nil {
return err return err
} }