Initial commit

This commit is contained in:
2026-07-02 15:56:21 +02:00
commit 4529a3c472
92 changed files with 13593 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/usr/bin/env bash
# OPT-IN: create a NetworkManager bridge (br0) that enslaves a physical NIC, so
# libvirt/qemu VMs get real LAN IPs (DHCP from your router) instead of NAT.
#
# Host-specific (NIC name differs per machine) and briefly drops the wired link,
# so this is NOT part of run.sh. Run once per machine, locally (not over the
# very link you're bridging):
# sudo ./kvm-bridge.sh [iface] # iface defaults to the connected ethernet
#
# For a STATIC bridge IP instead of DHCP, after running this:
# nmcli connection modify br0 ipv4.method manual \
# ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 8.8.8.8
# nmcli connection up br0
set -euo pipefail
[ "$(id -u)" -eq 0 ] || { echo "run as root"; exit 1; }
IFACE="${1:-$(nmcli -t -f DEVICE,TYPE,STATE device status \
| awk -F: '$2=="ethernet" && $3=="connected"{print $1; exit}')}"
[ -n "$IFACE" ] || { echo "no connected ethernet found — pass the interface name"; exit 1; }
echo "Bridging $IFACE into br0 (the wired connection will blip)."
# let qemu's bridge helper use br0
install -d /etc/qemu
grep -qxF 'allow br0' /etc/qemu/bridge.conf 2>/dev/null || echo 'allow br0' >> /etc/qemu/bridge.conf
# bridge + slave (DHCP on the bridge by default); idempotent
nmcli connection show br0 >/dev/null 2>&1 \
|| nmcli connection add type bridge con-name br0 ifname br0
nmcli connection show "bridge-slave-$IFACE" >/dev/null 2>&1 \
|| nmcli connection add type ethernet con-name "bridge-slave-$IFACE" ifname "$IFACE" master br0
nmcli connection up br0
echo "Done. Point VMs at bridge 'br0' (virt-manager: Bridge device → br0)."