KVM Network Discovery
Discover the network configuration on KVM hypervisors to understand how VLANs are passed to VMs.
kvm-01 Summary
Physical Interfaces
Interface Status
| Interface | State | IP Address | Purpose |
|---|---|---|---|
lo |
UNKNOWN |
127.0.0.1/8 |
Loopback |
virbr0 |
UP |
10.50.1.99/24 |
libvirt bridge (all VMs) |
eno1 |
UP |
192.168.1.225/24 |
WAN (ISP connection) |
eno2 |
UP |
10.50.1.202/24 |
Direct MGMT access |
eno3 |
DOWN |
- |
Unused |
eno4 |
DOWN |
- |
Unused |
eno5np0 |
DOWN |
- |
Unused (SFP+) |
eno6np1 |
DOWN |
- |
Unused (SFP+) |
eno8np3 |
UP |
- |
Bridge member (virbr0 uplink) |
virbr1 |
DOWN |
192.168.100.1/24 |
Lab bridge (unused) |
ovs-system |
DOWN |
- |
Open vSwitch system interface |
br-main |
UNKNOWN |
- |
OVS bridge (ovs-main network) |
br-lab |
UNKNOWN |
- |
OVS bridge (unused) |
vnet Interfaces (VM TAPs)
| Interface | Bridge | VM |
|---|---|---|
vnet0 |
virbr0 |
pfSense-FW01 (NIC 1) |
vnet1 |
virbr0 |
pfSense-FW01 (NIC 2) |
vnet2 |
virbr0 |
vault-01 |
vnet4 |
virbr0 |
9800-CL-WLC (NIC 1) |
vnet5 |
virbr0 |
9800-CL-WLC (NIC 2) |
vnet6 |
virbr0 |
ipsk-manager |
vnet9 |
virbr0 |
keycloak-01 |
vnet19 |
virbr0 |
home-dc01 |
vnet26 |
virbr0 |
ise-01 |
vnet39 |
virbr0 |
bind-01 |
vnet46 |
virbr0 |
ipa-01 |
vnet60 |
virbr0 |
k3s-master-01 |
Bridges
Bridge Summary
| Bridge | State | MAC | IP/Subnet |
|---|---|---|---|
virbr0 |
UP |
3a:1e:7c:ca:b9:ed |
10.50.1.99/24 |
virbr1 |
DOWN |
52:54:00:0c:00:93 |
192.168.100.1/24 |
Bridge Members
bridge link show
| Interface | Master | State | Notes |
|---|---|---|---|
eno8np3 |
virbr0 |
forwarding |
Physical uplink to switch |
vnet0 |
virbr0 |
forwarding |
pfSense-FW01 |
vnet1 |
virbr0 |
forwarding |
pfSense-FW01 (2nd) |
vnet2 |
virbr0 |
forwarding |
vault-01 |
vnet4 |
virbr0 |
forwarding |
9800-CL-WLC |
vnet5 |
virbr0 |
forwarding |
9800-CL-WLC (2nd) |
vnet6 |
virbr0 |
forwarding |
ipsk-manager |
vnet9 |
virbr0 |
forwarding |
keycloak-01 |
vnet19 |
virbr0 |
forwarding |
home-dc01 |
vnet26 |
virbr0 |
forwarding |
ise-01 |
vnet39 |
virbr0 |
forwarding |
bind-01 |
vnet46 |
virbr0 |
forwarding |
ipa-01 |
vnet60 |
virbr0 |
forwarding |
k3s-master-01 |
libvirt Networks
Network Summary
| Name | Mode | Bridge | Subnet/Notes |
|---|---|---|---|
default |
nat |
virbr1 |
192.168.100.0/24 (DHCP 100-200) |
ovs-main |
bridge |
br-main |
OVS passthrough |
virbr0 |
bridge |
virbr0 |
10.50.1.0/24 (primary) |
Network Details
for net in $(sudo virsh net-list --all --name); do
echo "=== $net ==="
sudo virsh net-dumpxml $net | awk '/<bridge|<forward|<ip address/'
done
default network (NAT - isolated lab):
<forward mode='nat'>
<bridge name='virbr1' stp='on' delay='0'/>
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.100' end='192.168.100.200'/>
</dhcp>
</ip>
ovs-main network (OVS bridge):
<forward mode='bridge'/>
<bridge name='br-main'/>
virbr0 network (Primary infrastructure):
<forward mode='bridge'/>
<bridge name='virbr0'/>
VM Network Attachments
VM Inventory
| ID | Name | State |
|---|---|---|
1 |
pfSense-FW01 |
running |
2 |
vault-01 |
running |
4 |
9800-CL-WLC |
running |
5 |
ipsk-manager |
running |
8 |
keycloak-01 |
running |
18 |
home-dc01 |
running |
25 |
ise-01 |
running |
39 |
bind-01 |
running |
47 |
ipa-01 |
running |
64 |
k3s-master-01 |
running |
VM Interface Details
| VM | Interface | Type | Source | MAC |
|---|---|---|---|---|
pfSense-FW01 |
vnet0 |
bridge |
virbr0 |
52:54:00:a2:7f:78 |
pfSense-FW01 |
vnet1 |
bridge |
virbr0 |
52:54:00:3f:c1:5c |
vault-01 |
vnet2 |
bridge |
virbr0 |
52:54:00:6b:e3:01 |
9800-CL-WLC |
vnet4 |
bridge |
virbr0 |
52:54:00:35:15:33 |
9800-CL-WLC |
vnet5 |
bridge |
virbr0 |
52:54:00:a1:77:27 |
ipsk-manager |
vnet6 |
bridge |
virbr0 |
52:54:00:76:5b:f5 |
keycloak-01 |
vnet9 |
bridge |
virbr0 |
52:54:00:f0:24:d7 |
home-dc01 |
vnet19 |
bridge |
virbr0 |
52:54:00:69:ab:43 |
ise-01 |
vnet26 |
bridge |
virbr0 |
52:54:00:6b:57:8b |
bind-01 |
vnet39 |
bridge |
virbr0 |
52:54:00:58:de:02 |
ipa-01 |
vnet46 |
bridge |
virbr0 |
52:54:00:72:3d:3c |
k3s-master-01 |
vnet60 |
bridge |
virbr0 |
52:54:00:8a:c2:f6 |
System Resources
VM Resource Allocation
| VM | vCPUs | Memory | Disk Location |
|---|---|---|---|
pfSense-FW01 |
4 |
8 GB |
/mnt/onboard-ssd/vms/ |
vault-01 |
1 |
1 GB |
/mnt/onboard-ssd/vms/ |
9800-CL-WLC |
4 |
16 GB |
/mnt/onboard-ssd/vms/ |
ipsk-manager |
2 |
4 GB |
/mnt/onboard-ssd/libvirt/images/ |
keycloak-01 |
2 |
4 GB |
/mnt/onboard-ssd/vms/ |
home-dc01 |
2 |
4 GB |
/mnt/onboard-ssd/vms/ |
ise-01 |
4 |
16 GB |
/mnt/onboard-ssd/vms/ |
bind-01 |
2 |
2 GB |
/mnt/onboard-ssd/vms/ |
ipa-01 |
2 |
4 GB |
/mnt/onboard-ssd/vms/ |
k3s-master-01 |
4 |
8 GB |
/mnt/onboard-ssd/libvirt/images/ |
TOTAL |
27 |
67 GB |
- |
Storage Pools
| Pool | State | Capacity | Used | Available |
|---|---|---|---|---|
onboard-ssd |
active |
962 GB |
360 GB |
602 GB |
images |
active |
14 GB |
10 GB |
4 GB |
nas-vms |
active |
- |
- |
NFS mount |
iso/isos |
active |
- |
- |
ISO storage |
All production VMs on onboard-ssd pool. The images pool (14 GB) is on root - avoid using it.
|
Resource Commands
| Purpose | Command |
|---|---|
CPU info |
|
Memory |
|
Disk usage |
|
Load average |
|
VM resources |
|
Storage pools |
|
Pool details |
|
VM disks |
|
Live stats |
|
Key Findings
-
All VMs on single bridge - virbr0 handles all infrastructure VM traffic
-
No host-level VLANs - pfSense does VLAN tagging, VMs get untagged
-
Physical uplink - eno8np3 bridges to virbr0 (to switch)
-
Dual-homed VMs - pfSense and 9800-CL-WLC have 2 NICs each
-
Dual default routes - Both ISP (eno1) and pfSense (eno2)
-
OVS present but unused - br-main/br-lab exist but no VMs attached
-
vault-01 - Running PKI and SSH CA
Discovery Commands Reference
| Purpose | Command |
|---|---|
List interfaces |
|
IP addresses |
|
Interface + state |
|
Bridges |
|
Bridge members |
|
VLAN subinterfaces |
|
libvirt networks |
|
Network details |
|
VMs |
|
VM interfaces |
|
All VM interfaces |
|
Routing table |
|
Full Discovery One-Liner
echo "=== INTERFACES ===" && ip -o link show | awk '{print $2}' | tr -d ':' && \
echo -e "\n=== IP ADDRESSES ===" && ip -4 -o addr show | awk '{print $2, $4}' && \
echo -e "\n=== BRIDGES ===" && ip link show type bridge 2>/dev/null | awk '/^[0-9]/ {print $2}' | tr -d ':' && \
echo -e "\n=== LIBVIRT NETWORKS ===" && sudo virsh net-list --all && \
echo -e "\n=== VMS ===" && sudo virsh list --all
Next Steps
-
[ ] Plan VLAN 50/60 addition for k3s pod isolation
-
[ ] Create KVM VLAN Configuration runbook
-
[ ] Document pfSense VLAN trunking to kvm-01
-
[x] VM renamed to vault-01 (completed 2026-03)