Some checks failed
Run Check Script / check (pull_request) Failing after 40s
109 lines
3.6 KiB
Markdown
109 lines
3.6 KiB
Markdown
# OPNsense PXE Lab Environment
|
|
|
|
This project contains a script to automatically set up a virtual lab environment for testing PXE boot services managed by an OPNsense firewall.
|
|
|
|
## Overview
|
|
|
|
The `pxe_vm_lab_setup.sh` script will create the following resources using libvirt/KVM:
|
|
|
|
1. **A Virtual Network**: An isolated network named `harmonylan` (`virbr1`) for the lab.
|
|
2. **Two Virtual Machines**:
|
|
* `opnsense-pxe`: A firewall VM that will act as the gateway and PXE server.
|
|
* `pxe-node-1`: A client VM configured to boot from the network.
|
|
|
|
## Prerequisites
|
|
|
|
Ensure you have the following software installed on your Arch Linux host:
|
|
|
|
* `libvirt`
|
|
* `qemu`
|
|
* `virt-install` (from the `virt-install` package)
|
|
* `curl`
|
|
* `bzip2`
|
|
|
|
## Usage
|
|
|
|
### 1. Create the Environment
|
|
|
|
Run the `up` command to download the necessary images and create the network and VMs.
|
|
|
|
```bash
|
|
sudo ./pxe_vm_lab_setup.sh up
|
|
```
|
|
|
|
### 2. Install and Configure OPNsense
|
|
|
|
The OPNsense VM is created but the OS needs to be installed manually via the console.
|
|
|
|
1. **Connect to the VM console**:
|
|
```bash
|
|
sudo virsh console opnsense-pxe
|
|
```
|
|
|
|
2. **Log in as the installer**:
|
|
* Username: `installer`
|
|
* Password: `opnsense`
|
|
|
|
3. **Follow the on-screen installation wizard**. When prompted to assign network interfaces (`WAN` and `LAN`):
|
|
* Find the MAC address for the `harmonylan` interface by running this command in another terminal:
|
|
```bash
|
|
virsh domiflist opnsense-pxe
|
|
# Example output:
|
|
# Interface Type Source Model MAC
|
|
# ---------------------------------------------------------
|
|
# vnet18 network default virtio 52:54:00:b5:c4:6d
|
|
# vnet19 network harmonylan virtio 52:54:00:21:f9:ba
|
|
```
|
|
* Assign the interface connected to `harmonylan` (e.g., `vtnet1` with MAC `52:54:00:21:f9:ba`) as your **LAN**.
|
|
* Assign the other interface as your **WAN**.
|
|
|
|
4. After the installation is complete, **shut down** the VM from the console menu.
|
|
|
|
5. **Detach the installation media** by editing the VM's configuration:
|
|
```bash
|
|
sudo virsh edit opnsense-pxe
|
|
```
|
|
Find and **delete** the entire `<disk>` block corresponding to the `.img` file (the one with `<target ... bus='usb'/>`).
|
|
|
|
6. **Start the VM** to boot into the newly installed system:
|
|
```bash
|
|
sudo virsh start opnsense-pxe
|
|
```
|
|
|
|
### 3. Connect to OPNsense from Your Host
|
|
|
|
To configure OPNsense, you need to connect your host to the `harmonylan` network.
|
|
|
|
1. By default, OPNsense configures its LAN interface with the IP `192.168.1.1`.
|
|
2. Assign a compatible IP address to your host's `virbr1` bridge interface:
|
|
```bash
|
|
sudo ip addr add 192.168.1.5/24 dev virbr1
|
|
```
|
|
3. You can now access the OPNsense VM from your host:
|
|
* **SSH**: `ssh root@192.168.1.1` (password: `opnsense`)
|
|
* **Web UI**: `https://192.168.1.1`
|
|
|
|
### 4. Configure PXE Services with Harmony
|
|
|
|
With connectivity established, you can now use Harmony to configure the OPNsense firewall for PXE booting. Point your Harmony OPNsense scores to the firewall using these details:
|
|
|
|
* **Hostname/IP**: `192.168.1.1`
|
|
* **Credentials**: `root` / `opnsense`
|
|
|
|
### 5. Boot the PXE Client
|
|
|
|
Once your Harmony configuration has been applied and OPNsense is serving DHCP/TFTP, start the client VM. It will automatically attempt to boot from the network.
|
|
|
|
```bash
|
|
sudo virsh start pxe-node-1
|
|
sudo virsh console pxe-node-1
|
|
```
|
|
|
|
## Cleanup
|
|
|
|
To destroy all VMs and networks created by the script, run the `clean` command:
|
|
|
|
```bash
|
|
sudo ./pxe_vm_lab_setup.sh clean
|
|
```
|