Skip to content

Commit

Permalink
fix: prefer configured nameservers, fix DHCP6 in container
Browse files Browse the repository at this point in the history
Always prefer explicitly configured nameservers,
networkd was missing capability to bind address for DHCP6.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
  • Loading branch information
smira authored and talos-bot committed Feb 6, 2021
1 parent 6cf98a7 commit 757cc20
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 14 deletions.
1 change: 1 addition & 0 deletions internal/app/machined/pkg/system/services/networkd.go
Original file line number Diff line number Diff line change
Expand Up @@ -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_SYS_ADMIN.String()),
strings.ToUpper("CAP_" + capability.CAP_NET_RAW.String()),
strings.ToUpper("CAP_" + capability.CAP_NET_BIND_SERVICE.String()),
}),
oci.WithHostNamespace(specs.NetworkNamespace),
oci.WithMounts(mounts),
Expand Down
31 changes: 17 additions & 14 deletions internal/app/networkd/pkg/networkd/networkd.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,6 @@ func New(config config.Provider) (*Networkd, error) {
resolvers []string
)

resolvers = []string{DefaultPrimaryResolver, DefaultSecondaryResolver}

netconf := make(map[string][]nic.Option)

if option = procfs.ProcCmdline().Get("ip").First(); option != nil {
Expand Down Expand Up @@ -203,31 +201,36 @@ func (n *Networkd) Configure() (err error) {
}
}

resolvers := []string{}
// prefer resolvers from the configuration
resolvers := append([]string(nil), n.resolvers...)

for _, netif := range n.Interfaces {
for _, method := range netif.AddressMethod {
if !method.Valid() {
continue
}
// if no resolvers configured, use addressing method resolvers
if len(resolvers) == 0 {
for _, netif := range n.Interfaces {
for _, method := range netif.AddressMethod {
if !method.Valid() {
continue
}

for _, resolver := range method.Resolvers() {
resolvers = append(resolvers, resolver.String())
for _, resolver := range method.Resolvers() {
resolvers = append(resolvers, resolver.String())
}
}
}
}

// use default resolvers if nothing is configured
if len(resolvers) == 0 {
resolvers = append(resolvers, DefaultPrimaryResolver, DefaultSecondaryResolver)
}

// Set hostname must be before the resolv configuration
// so we can ensure the hosts domainname is set properly
// before we write the search stanza
if err = n.Hostname(); err != nil {
return err
}

if len(resolvers) == 0 {
resolvers = n.resolvers
}

if err = writeResolvConf(resolvers); err != nil {
return err
}
Expand Down

0 comments on commit 757cc20

Please sign in to comment.