diff --git a/cmd/minikube/cmd/docker-env.go b/cmd/minikube/cmd/docker-env.go
index b8b96333e1..425437a493 100644
--- a/cmd/minikube/cmd/docker-env.go
+++ b/cmd/minikube/cmd/docker-env.go
@@ -302,7 +302,7 @@ docker-cli install instructions: https://minikube.sigs.k8s.io/docs/tutorials/doc
 			if err != nil {
 				exit.Message(reason.DrvPortForward, "Error getting port binding for '{{.driver_name}} driver: {{.error}}", out.V{"driver_name": driverName, "error": err})
 			}
-		} else if driver.IsQEMU(driverName) && pkgnetwork.IsUser(co.Config.Network) {
+		} else if driver.IsQEMU(driverName) && pkgnetwork.IsBuiltinQEMU(co.Config.Network) {
 			port = d.(*qemu.Driver).EnginePort
 		}
 
diff --git a/cmd/minikube/cmd/mount.go b/cmd/minikube/cmd/mount.go
index 545f87daed..8ff6db9e2e 100644
--- a/cmd/minikube/cmd/mount.go
+++ b/cmd/minikube/cmd/mount.go
@@ -126,8 +126,8 @@ var mountCmd = &cobra.Command{
 		if co.CP.Host.Driver.DriverName() == driver.None {
 			exit.Message(reason.Usage, `'none' driver does not support 'minikube mount' command`)
 		}
-		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsUser(co.Config.Network) {
-			msg := "minikube mount is not currently implemented with the user network on QEMU"
+		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsBuiltinQEMU(co.Config.Network) {
+			msg := "minikube mount is not currently implemented with the builtin network on QEMU"
 			if runtime.GOOS == "darwin" {
 				msg += ", try starting minikube with '--network=socket_vmnet'"
 			}
diff --git a/cmd/minikube/cmd/service.go b/cmd/minikube/cmd/service.go
index da3971626c..02a9eddb92 100644
--- a/cmd/minikube/cmd/service.go
+++ b/cmd/minikube/cmd/service.go
@@ -87,8 +87,8 @@ var serviceCmd = &cobra.Command{
 		cname := ClusterFlagValue()
 		co := mustload.Healthy(cname)
 
-		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsUser(co.Config.Network) {
-			msg := "minikube service is not currently implemented with the user network on QEMU"
+		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsBuiltinQEMU(co.Config.Network) {
+			msg := "minikube service is not currently implemented with the builtin network on QEMU"
 			if runtime.GOOS == "darwin" {
 				msg += ", try starting minikube with '--network=socket_vmnet'"
 			}
diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go
index 3f64f04f7b..12e22c982f 100644
--- a/cmd/minikube/cmd/start_flags.go
+++ b/cmd/minikube/cmd/start_flags.go
@@ -477,17 +477,19 @@ func getNetwork(driverName string) string {
 		if detect.SocketVMNetInstalled() {
 			n = "socket_vmnet"
 		} else {
-			n = "user"
+			n = "builtin"
 		}
 		out.Styled(style.Internet, "Automatically selected the {{.network}} network", out.V{"network": n})
 	case "user":
+		n = "builtin"
+	case "builtin":
 	default:
-		exit.Message(reason.Usage, "--network with QEMU must be 'user' or 'socket_vmnet'")
+		exit.Message(reason.Usage, "--network with QEMU must be 'builtin' or 'socket_vmnet'")
 	}
-	if n == "user" {
+	if n == "builtin" {
 		msg := "You are using the QEMU driver without a dedicated network, which doesn't support `minikube service` & `minikube tunnel` commands."
 		if runtime.GOOS == "darwin" {
-			msg += "\nTo try the experimental dedicated network see: https://minikube.sigs.k8s.io/docs/drivers/qemu/#networking"
+			msg += "\nTo try the dedicated network see: https://minikube.sigs.k8s.io/docs/drivers/qemu/#networking"
 		}
 		out.WarningT(msg)
 	}
diff --git a/cmd/minikube/cmd/tunnel.go b/cmd/minikube/cmd/tunnel.go
index 50ea8c80d0..4dab89a6ae 100644
--- a/cmd/minikube/cmd/tunnel.go
+++ b/cmd/minikube/cmd/tunnel.go
@@ -58,8 +58,8 @@ var tunnelCmd = &cobra.Command{
 		cname := ClusterFlagValue()
 		co := mustload.Healthy(cname)
 
-		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsUser(co.Config.Network) {
-			msg := "minikube tunnel is not currently implemented with the user network on QEMU"
+		if driver.IsQEMU(co.Config.Driver) && pkgnetwork.IsBuiltinQEMU(co.Config.Network) {
+			msg := "minikube tunnel is not currently implemented with the builtin network on QEMU"
 			if runtime.GOOS == "darwin" {
 				msg += ", try starting minikube with '--network=socket_vmnet'"
 			}
diff --git a/pkg/drivers/qemu/qemu.go b/pkg/drivers/qemu/qemu.go
index 21d0bcfb1a..8f5cabb577 100644
--- a/pkg/drivers/qemu/qemu.go
+++ b/pkg/drivers/qemu/qemu.go
@@ -40,6 +40,7 @@ import (
 	"github.com/pkg/errors"
 
 	pkgdrivers "k8s.io/minikube/pkg/drivers"
+	"k8s.io/minikube/pkg/network"
 )
 
 const (
@@ -88,7 +89,7 @@ func (d *Driver) GetMachineName() string {
 }
 
 func (d *Driver) GetSSHHostname() (string, error) {
-	if d.Network == "user" {
+	if network.IsBuiltinQEMU(d.Network) {
 		return "localhost", nil
 	}
 	return d.IPAddress, nil
@@ -145,7 +146,7 @@ func NewDriver(hostName, storePath string) drivers.Driver {
 }
 
 func (d *Driver) GetIP() (string, error) {
-	if d.Network == "user" {
+	if network.IsBuiltinQEMU(d.Network) {
 		return "127.0.0.1", nil
 	}
 	return d.IPAddress, nil
@@ -213,7 +214,7 @@ func (d *Driver) PreCreateCheck() error {
 func (d *Driver) Create() error {
 	var err error
 	switch d.Network {
-	case "user":
+	case "builtin", "user":
 		minPort, maxPort, err := parsePortRange(d.LocalPorts)
 		log.Debugf("port range: %d -> %d", minPort, maxPort)
 		if err != nil {
@@ -412,7 +413,7 @@ func (d *Driver) Start() error {
 	)
 
 	switch d.Network {
-	case "user":
+	case "builtin", "user":
 		startCmd = append(startCmd,
 			"-nic", fmt.Sprintf("user,model=virtio,hostfwd=tcp::%d-:22,hostfwd=tcp::%d-:2376,hostname=%s", d.SSHPort, d.EnginePort, d.GetMachineName()),
 		)
@@ -459,7 +460,7 @@ func (d *Driver) Start() error {
 	}
 
 	switch d.Network {
-	case "user":
+	case "builtin", "user":
 		d.IPAddress = "127.0.0.1"
 	case "socket_vmnet":
 		var err error
diff --git a/pkg/minikube/cluster/ip.go b/pkg/minikube/cluster/ip.go
index 82b801c245..4737ff3f57 100644
--- a/pkg/minikube/cluster/ip.go
+++ b/pkg/minikube/cluster/ip.go
@@ -58,9 +58,7 @@ func HostIP(host *host.Host, clusterName string) (net.IP, error) {
 			return []byte{}, errors.Wrap(err, "Error converting VM/Host IP address to IPv4 address")
 		}
 		return net.IPv4(vmIP[0], vmIP[1], vmIP[2], byte(1)), nil
-	case driver.QEMU:
-		fallthrough
-	case driver.QEMU2:
+	case driver.QEMU, driver.QEMU2:
 		ipString, err := host.Driver.GetIP()
 		if err != nil {
 			return []byte{}, errors.Wrap(err, "Error getting IP address")
diff --git a/pkg/minikube/driver/endpoint.go b/pkg/minikube/driver/endpoint.go
index 0fb86c3c99..bddb207b85 100644
--- a/pkg/minikube/driver/endpoint.go
+++ b/pkg/minikube/driver/endpoint.go
@@ -46,7 +46,7 @@ func ControlPlaneEndpoint(cc *config.ClusterConfig, cp *config.Node, driverName
 			hostname = cc.KubernetesConfig.APIServerName
 		}
 		return hostname, ips[0], port, err
-	} else if IsQEMU(driverName) && network.IsUser(cc.Network) {
+	} else if IsQEMU(driverName) && network.IsBuiltinQEMU(cc.Network) {
 		return "localhost", net.IPv4(127, 0, 0, 1), cc.APIServerPort, nil
 	}
 
diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go
index 2d18101218..687b278dbf 100644
--- a/pkg/minikube/node/start.go
+++ b/pkg/minikube/node/start.go
@@ -648,7 +648,7 @@ func startMachine(cfg *config.ClusterConfig, node *config.Node, delOnFail bool)
 		return runner, preExists, m, host, errors.Wrap(err, "Failed to validate network")
 	}
 
-	if driver.IsQEMU(host.Driver.DriverName()) && network.IsUser(cfg.Network) {
+	if driver.IsQEMU(host.Driver.DriverName()) && network.IsBuiltinQEMU(cfg.Network) {
 		apiServerPort, err := getPort()
 		if err != nil {
 			return runner, preExists, m, host, errors.Wrap(err, "Failed to find apiserver port")
diff --git a/pkg/network/network.go b/pkg/network/network.go
index 8a84260b2c..616f75f0c4 100644
--- a/pkg/network/network.go
+++ b/pkg/network/network.go
@@ -181,9 +181,12 @@ var isSubnetTaken = func(subnet string) (bool, error) {
 	return false, nil
 }
 
-// IsUser returns if network is user.
-func IsUser(network string) bool {
-	return network == "user"
+// IsBuiltinQEMU returns if network is builtin or the legacy value user.
+func IsBuiltinQEMU(network string) bool {
+	if network == "user" {
+		return true
+	}
+	return network == "builtin"
 }
 
 // FreeSubnet will try to find free private network beginning with startSubnet, incrementing it in steps up to number of tries.
diff --git a/site/content/en/docs/drivers/qemu.md b/site/content/en/docs/drivers/qemu.md
index c1b1fe8f58..7039463b05 100644
--- a/site/content/en/docs/drivers/qemu.md
+++ b/site/content/en/docs/drivers/qemu.md
@@ -9,7 +9,7 @@ aliases:
 
 ## Overview
 
-The `qemu` driver users QEMU (system) for VM creation.
+The `qemu` driver uses QEMU (system) for VM creation.
 
 <https://www.qemu.org/>
 
@@ -31,19 +31,26 @@ minikube start supports some qemu specific flags:
 
 ## Networking
 
-The QEMU driver has two networking options, `user` & `socket_vmnet`.
+The QEMU driver has two networking options: `socket_vmnet` and `builtin`. `socket_vmnet` will give you full minikube networking functionality, such as the `service` and `tunnel` commands. On the other hand, the `builtin` network is not a dedicated network and therefore commands such as `service` and `tunnel` are not available. [socket_vmnet](https://github.com/lima-vm/socket_vmnet) can be installed via brew or from source (instructions below).
 
 {{% tabs %}}
-{{% tab "socket_vmnet - needs installation" %}}
+{{% tab socket_vmnet %}}
 
 ### Requirements
 
-Requires macOS 10.15 or later and socket_vmnet.
+Requires macOS 10.15 or later and [socket_vmnet](https://github.com/lima-vm/socket_vmnet).
 
-[lima-vm/socket_vmnet](https://github.com/lima-vm/socket_vmnet) install instructions:
+### Install socket_vmnet via [brew](https://brew.sh/)
+```shell
+brew install socket_vmnet
+brew tap homebrew/services
+HOMEBREW=$(which brew) && sudo ${HOMEBREW} services start socket_vmnet
+```
+
+### Install socket_vmnet from source (requires [Go](https://go.dev/))
 ```shell
 git clone https://github.com/lima-vm/socket_vmnet.git && cd socket_vmnet
-sudo make PREFIX=/opt/socket_vmnet install
+sudo make install
 ```
 
 ### Usage
@@ -52,41 +59,48 @@ sudo make PREFIX=/opt/socket_vmnet install
 minikube start --driver qemu --network socket_vmnet
 ```
 
-The `socket_vmnet` network is a dedicated network and supports the `minikube service` and `minikube tunnel` commands.
 {{% /tab %}}
-{{% tab "user - limited functionality" %}}
-The `user` network is not a dedicated network, it doesn't support some networking commands such as `minikube service` and `minikube tunnel`, and its IP address is not reachable from the host.
+{{% tab builtin %}}
+### Usage
+
+```shell
+minikube start --driver qemu --network builtin
+````
 {{% /tab %}}
 {{% /tabs %}}
 
 ## Known Issues
 
-### 1. Start stuck with `user` network on corp machine or custom DNS
-
-When using the `user` network (default) the guest uses **only** the first `nameserver` entry in the hosts `/etc/resolv.conf` for DNS lookup. If your first `nameserver` entry is a corporate/internal DNS it's likely it will cause an issue. If you see the warning `❗ This VM is having trouble accessing https://registry.k8s.io` on `minikube start` you are likely being affected by this. This may prevent your cluster from starting entirely and you won't be able to pull remote images. More details can be found at: [#15021](https://github.com/kubernetes/minikube/issues/15021)
-
-#### Workarounds:
-
-1. If possible, reorder your `/etc/resolv.conf` to have a general `nameserver` entry first (eg. `8.8.8.8`) and reboot your machine.
-2. Use `--network=socket_vmnet`
-
-### 2. `/var/db/dhcpd_leases` errors
+{{% tabs %}}
+{{% tab socket_vmnet %}}
+##  `/var/db/dhcpd_leases` errors
 
 If you're seeing errors related to `/var/db/dhcpd_leases` we recommend the following:
 
 1. Uninstall `socket_vmnet`:
 
 ```shell
-cd socket_vmnet
-sudo make uninstall
+# if installed via brew
+HOMEBREW=$(which brew) && sudo ${HOMEBREW_PREFIX}/bin/brew services stop socket_vmnet
+brew uninstall socket_vmnet
+
+# if installed from source
+cd socket_vmnet && sudo make uninstall
 ```
 2. Reboot
-3. Reinstall `socket_vmnet`:
+3. [Reinstall `socket_vmnet`](#requirements)
+{{% /tab %}}
+{{% tab builtin %}}
+## Start stuck on corp machine or with custom DNS
 
-```shell
-cd socket_vmnet
-sudo make install
-```
+When using the `builtin` network (default) the guest uses **only** the first `nameserver` entry in the hosts `/etc/resolv.conf` for DNS lookup. If your first `nameserver` entry is a corporate/internal DNS it's likely it will cause an issue. If you see the warning `❗ This VM is having trouble accessing https://registry.k8s.io` on `minikube start` you are likely being affected by this. This may prevent your cluster from starting entirely and you won't be able to pull remote images. More details can be found at: [#15021](https://github.com/kubernetes/minikube/issues/15021)
+
+#### Workarounds:
+
+1. If possible, reorder your `/etc/resolv.conf` to have a general `nameserver` entry first (eg. `8.8.8.8`) and reboot your machine.
+2. Use `--network=socket_vmnet`
+{{% /tab %}}
+{{% /tabs %}}
 
 [Full list of open 'qemu' driver issues](https://github.com/kubernetes/minikube/labels/co%2Fqemu-driver)