Enable network loopback interface

Absence of a properly enabled loopback interface caused weird
behavior in the Kubernetes control plane.

Test Plan: Issues with kube-apiserver were no longer observed.

X-Origin-Diff: phab/D257
GitOrigin-RevId: 9b8a18a28463a29e85945587765f155de86f68b3
diff --git a/core/internal/network/main.go b/core/internal/network/main.go
index b45b8db..0888de7 100644
--- a/core/internal/network/main.go
+++ b/core/internal/network/main.go
@@ -19,10 +19,11 @@
 import (
 	"context"
 	"fmt"
-	"git.monogon.dev/source/nexantic.git/core/internal/common/service"
 	"net"
 	"os"
 
+	"git.monogon.dev/source/nexantic.git/core/internal/common/service"
+
 	"github.com/insomniacslk/dhcp/dhcpv4/nclient4"
 	"github.com/vishvananda/netlink"
 	"go.uber.org/zap"
@@ -79,9 +80,8 @@
 		return err
 	}
 	if err := netlink.RouteAdd(&netlink.Route{
-		Dst: &net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)},
-		Gw:  gw,
-
+		Dst:   &net.IPNet{IP: net.IPv4(0, 0, 0, 0), Mask: net.IPv4Mask(0, 0, 0, 0)},
+		Gw:    gw,
 		Scope: netlink.SCOPE_UNIVERSE,
 	}); err != nil {
 		return fmt.Errorf("Failed to add default route: %w", err)
@@ -137,6 +137,10 @@
 			} else {
 				s.Logger.Info("Ignoring non-Ethernet interface", zap.String("interface", attrs.Name))
 			}
+		} else if link.Attrs().Name == "lo" {
+			if err := netlink.LinkSetUp(link); err != nil {
+				s.Logger.Error("Failed to take up loopback interface", zap.Error(err))
+			}
 		}
 	}
 	if len(ethernetLinks) == 1 {