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 {