c/takeover: add fallback DNS servers
As it's not possible to reliably dump DNS servers from a Linux system,
add Google's and Cloudflare's public DNS servers if none were found.
Change-Id: Id9dd3a884217cccc0260bd61514aeb545874c708
Reviewed-on: https://review.monogon.dev/c/monogon/+/1522
Reviewed-by: Tim Windelschmidt <tim@monogon.tech>
Tested-by: Jenkins CI
diff --git a/cloud/takeover/BUILD.bazel b/cloud/takeover/BUILD.bazel
index b51370c..21b891a 100644
--- a/cloud/takeover/BUILD.bazel
+++ b/cloud/takeover/BUILD.bazel
@@ -17,6 +17,7 @@
"//metropolis/pkg/bootparam",
"//metropolis/pkg/kexec",
"//net/dump",
+ "//net/proto",
"@com_github_cavaliergopher_cpio//:cpio",
"@com_github_pierrec_lz4_v4//:lz4",
"@org_golang_google_protobuf//proto",
diff --git a/cloud/takeover/takeover.go b/cloud/takeover/takeover.go
index fc71690..9de39f5 100644
--- a/cloud/takeover/takeover.go
+++ b/cloud/takeover/takeover.go
@@ -35,6 +35,7 @@
"source.monogon.dev/metropolis/pkg/bootparam"
"source.monogon.dev/metropolis/pkg/kexec"
netdump "source.monogon.dev/net/dump"
+ netapi "source.monogon.dev/net/proto"
)
//go:embed third_party/linux/bzImage
@@ -98,6 +99,14 @@
return nil, fmt.Errorf("failed to dump network configuration: %w", err)
}
+ if len(netconf.Nameserver) == 0 {
+ netconf.Nameserver = []*netapi.Nameserver{{
+ Ip: "8.8.8.8",
+ }, {
+ Ip: "1.1.1.1",
+ }}
+ }
+
// Generate agent private key
pubKey, privKey, err := ed25519.GenerateKey(rand.Reader)
if err != nil {