diff --git a/spindle/engines/microvm/networking.go b/spindle/engines/microvm/networking.go --- a/spindle/engines/microvm/networking.go +++ b/spindle/engines/microvm/networking.go @@ -122,31 +122,36 @@ if err != nil { return nil, nil, fmt.Errorf("slirp4netns command not found in PATH: %w", err) } + args := slirpArgs(n.dev, pid) + + cmd := exec.CommandContext(ctx, slirpPath, args...) + cmd.ExtraFiles = []*os.File{exitR} + cmd.Stdout = logFile + cmd.Stderr = logFile + if err := cmd.Start(); err != nil { + return nil, nil, fmt.Errorf("start slirp4netns: %w", err) + } + logger.Info("started slirp4netns network namespace", "pid", pid, "cidr", outerSlirpCIDR, "tap", netnsTapName) + + ok = true + return cmd, exitW, nil +} + +func slirpArgs(dev bool, pid string) []string { args := []string{ "--configure", "--mtu=" + netnsMTU, } - if !n.dev { + if !dev { args = append(args, "--disable-host-loopback") } args = append(args, - "--enable-sandbox", + "--disable-dns", "--enable-seccomp", "--exit-fd=3", "--cidr="+outerSlirpCIDR, pid, netnsTapName, ) - - cmd := exec.CommandContext(ctx, slirpPath, args...) - cmd.ExtraFiles = []*os.File{exitR} - cmd.Stdout = logFile - cmd.Stderr = logFile - if err := cmd.Start(); err != nil { - return nil, nil, fmt.Errorf("start slirp4netns: %w", err) - } - logger.Info("started slirp4netns network namespace", "pid", pid, "cidr", outerSlirpCIDR, "tap", netnsTapName) - - ok = true - return cmd, exitW, nil + return args }