> For the complete documentation index, see [llms.txt](https://docs.vex-nx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vex-nx.com/vex-nx-user-guide-1/management-network.md).

# Management network

This page explains how the **appliance Management IP** works on first boot, later boots, and in the web UI. Console and GUI share one saved configuration.

Do not confuse this with **lab cloud** templates (Management / NAT / Bridge inside a lab). Those are covered in [Networks and clouds](/vex-nx-user-guide-1/networks-and-clouds.md).

## The three OVA adapters

| Adapter | OVF name   | Typical Workstation | Guest NIC | Role                       |
| ------- | ---------- | ------------------- | --------- | -------------------------- |
| 1       | Management | VMnet0 Bridged      | ens160    | Web UI / SSH Management IP |
| 2       | Internet   | VMnet8 NAT          | ens161    | Apt / egress (stays DHCP)  |
| 3       | Lab        | VMnet1 Host-only    | ens192    | Isolated lab L2            |

* Open the UI at `http://<management-ip>` (adapter 1 / ens160).
* **Static IP only configures Management (ens160).** Internet (ens161) stays on DHCP so the appliance can reach mirrors and downloads - keep Internet on **VMnet8 NAT** (or an uplink that offers DHCP).
* Do not reorder the three NICs after import.

## Shared store (console and GUI)

Both paths write the same files:

| File                               | Purpose                                                    |
| ---------------------------------- | ---------------------------------------------------------- |
| `/etc/pram/mgmt-net.json`          | Saved mode (dhcp / static), address, prefix, gateway, DNS  |
| `/etc/netplan/99-vex-nx-mgmt.yaml` | Applied netplan (Management + companion NICs)              |
| `/etc/pram/mgmt-net.done`          | Marks first-boot wizard complete                           |
| `/etc/pram/mgmt-net.applied`       | Hash of last successfully applied state (boot apply stamp) |

If you set Static in the GUI and later choose Change on the console (or the reverse), the other side sees the new values after reboot.

## First boot (DHCP or Static)

On first power-on the VGA console shows a short wizard (after the splash, while install is still preparing the stack):

1. **DHCP** (default after **20 seconds** if you press nothing)
2. **Static IP**

If you choose **Static**, the console waits for your input (no timeout while typing):

| Field                 | Example                  |
| --------------------- | ------------------------ |
| IP address            | `192.168.8.50`           |
| Subnet mask or prefix | `255.255.255.0` or `24`  |
| Default gateway       | `192.168.8.1`            |
| Primary DNS           | `8.8.8.8`                |
| Secondary DNS         | optional (Enter to skip) |

Worked example: Management `192.168.8.50/24`, gateway `192.168.8.1`, DNS `8.8.8.8`, with Internet still on DHCP via VMnet8.

After you finish, boot continues. When phase1 completes, open `http://192.168.8.50/` (or the DHCP address shown on the console banner).

## Later boots (Keep / Change / Reset)

After install finishes, every reboot shows a management network menu:

1. **Keep current** (default after **20 seconds**) - re-applies the last saved GUI or console settings (including a Static you saved in the web UI)
2. **Change** - pick DHCP or Static again (no timeout on the sub-menu or while typing Static fields)
3. **Reset to DHCP now** - writes DHCP for Management immediately

### Typical flows

**GUI Static should stick**

1. In the UI: **Infrastructure -> Management network** -> Static -> enter address -> **Save**
2. Reboot the appliance
3. At the console menu, leave **Keep** (or wait 20s)
4. Banner and login appear; the UI still shows that Static under Management network

**Switch back to DHCP from the console**

1. Reboot
2. Choose **2) Change** then **1) DHCP** (or choose **3) Reset to DHCP**)
3. The script flushes any sticky static address, applies DHCP netplan, and reconfigures the NIC
4. After boot, the GUI Management network form shows DHCP (needs a DHCP server on the Management port group)

**GUI Static -> DHCP**

1. **Infrastructure -> Management network** -> DHCP -> **Save**
2. Reboot and leave **Keep** (or use console **Reset to DHCP**)
3. Until reboot apply finishes, the UI may show a reboot-needed hint

**Change Static from the console**

1. Reboot
2. Choose **2) Change** then **2) Static IP**
3. Enter the new address (boot waits until you finish)
4. After boot, the GUI shows the new Static

Optional anytime: SSH as `vexnx` and run `sudo vexnx-net-config --force` to open the same Keep / Change / Reset menu.

## GUI: Infrastructure -> Management network

Admin only.

1. Open **Infrastructure**
2. Find **Management network**
3. **Currently assigned (live)** shows the address the kernel has now
4. Mode **DHCP** or **Static** - Static fields use muted placeholders such as `ex: 192.168.8.50` (examples, not filled values)
5. Click **Save management network**
6. **Reboot** the VM so netplan applies (or confirm **Keep** on the next console menu)

Notes:

* Saved fields are for the **next** boot; they are not the live IP until reboot + Keep (or Change) finishes.
* Prefix length example: `ex: 24`. Gateway example: `ex: 192.168.8.1`.

## After the menu: console login

When the menu finishes, the VGA console should show the VEX-NX banner and a login prompt (not a blank screen with only a blinking cursor). Use SSH `vexnx` / `vexnx` or the web UI if the Management IP is reachable.

## Troubleshooting

### No Management IP / cannot open the UI

* Confirm adapter 1 is Bridged (Workstation VMnet0) or on a reachable ESXi port group
* On the console, choose **Change** -> DHCP, or **Reset to DHCP**, then retry
* Or set Static to an address on your LAN and reboot with **Keep**
* From SSH: `ip -4 addr show ens160` and `cat /etc/pram/mgmt-net.json`

### Switch Static -> DHCP keeps the old IP or gets none

After this fix, Change/Reset to DHCP flushes the old static address and reconfigures networkd before requesting a lease.

1. Reboot and choose **3) Reset to DHCP** (or **2) Change** -> **1) DHCP**)
2. Confirm Management is on a port group / VMnet that offers DHCP
3. Check: `ip -4 addr show ens160`, `cat /etc/pram/mgmt-net.json`, `tail -40 /var/log/vexnx-net-config.log`
4. From the GUI: save Mode **DHCP**, then reboot and **Keep** - the UI should show **pending reboot** until apply finishes

If there is still no address, the Management segment likely has no DHCP server (not a sticky-static bug).

### Wrong Static after GUI save

* Reboot and choose **2) Change** -> Static with corrected values, or **3) Reset to DHCP**
* Or fix the form in **Infrastructure -> Management network**, Save, reboot, **Keep**

### Apt / downloads fail after Static on Management

* Confirm Internet (ens161) still has DHCP (VMnet8 NAT)
* Static on Management uses a higher route metric so Internet DHCP remains preferred for egress

### Console menu then black screen

Current builds hand off getty after the menu. If you still see a blank VGA, SSH in and check:

```bash
sudo systemctl status getty@tty1 vexnx-net-config
sudo journalctl -u vexnx-net-config -b --no-pager | tail -50
```

Then `sudo vexnx-net-config --force` if you need to change the IP from the console again.

## Related

* Install the OVA
* [Networks and clouds](/vex-nx-user-guide-1/networks-and-clouds.md) (lab cloud modes)
* First login
* [Troubleshooting](/vex-nx-user-guide-1/reference/troubleshooting.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.vex-nx.com/vex-nx-user-guide-1/management-network.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
