Auf verschiedenen Rechnern nutze ich libvirt-VMs, was prinzipiell prima funktioniert. Auf den Patchkabel-PCs habe ich die Wahl, die VMs als echte LAN-Clients mit regulärer LAN-IP einzurichten oder via dnsmasq und NAT, beides geht. Auf meinem Laptop ist wegen der WLAN-Verbindung leider nur NAT möglich. So wie ich die Man-Pages verstanden habe, ist das derzeit eine gegebene Einschränkung bei libvirt, also als LAN-Client mit eigener LAN-IP gehts anscheinend derzeit nicht.
Der Ablauf via NAT ist wie folgt:
1. Brigde-NIC einrichten
2. Paketfilter setzen
3. dnsmasq starten
Die Punkte 1 und 2 erledigt das libvirt-Tool "virsh" automatisch, wenn ich die von mir erstellte Konfiguration starte:
Code: Alles auswählen
# virsh net-start nat-bridge
# ip a
8: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:03:39:4d brd ff:ff:ff:ff:ff:ff
inet 10.10.100.1/24 brd 10.10.100.255 scope global br0
valid_lft forever preferred_lft forever
9: br0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
link/ether 52:54:00:03:39:4d brd ff:ff:ff:ff:ff:ff
10: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:59:ba:50 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe59:ba50/64 scope link
valid_lft forever preferred_lft forever
Code: Alles auswählen
virsh net-destroy nat-bridge
Um das Problem zu lösen, möchte ich die Bridge-NICs und NAT selber unter meiner Kontrolle erzeugen. Aber genau das klappt nicht. Ich habe zuerst den vom virsh-Tool generierten und funktionierenden Paketfilter exportiert, die dnsmasq-Conf lief ja ebenfalls. Mit dem zuvor funktionierenden Paketfilter und der funktionierenden dnsmasq.conf habe ich dann nur noch die Bridge-NICs mit den folgenden Befehlen erstellt, um mich der späteren vollständigen Lösung langsam anzunähern. Dabei habe ich alle Bezeichnungen und auch MACs beibehalten.
Code: Alles auswählen
# ip link add br0-nic address 52:54:00:03:39:4d type dummy
# brctl addbr br0
# brctl stp br0 on
# brctl addif br0 br0-nic
# ip address add 10.10.100.1/24 dev br0 broadcast 10.10.100.255
# ip link set dev br0 up multicast on
# ip link set dev br0-nic up multicast on
# dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/dnsmasq.conf --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
# iptables -F -t mangle; iptables -F -t nat; iptables -F -t filter
# iptables-restore ipt_vm -v
Code: Alles auswählen
# ip a
4: br0-nic: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UNKNOWN group default qlen 1000
link/ether 52:54:00:03:39:4d brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:03:39:4d brd ff:ff:ff:ff:ff:ff
inet 10.10.100.1/24 brd 10.10.100.255 scope global br0
valid_lft forever preferred_lft forever
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:59:ba:50 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe59:ba50/64 scope link
valid_lft forever preferred_lft forever
https://jamielinux.com/docs/libvirt-net ... twork.html
https://bugzilla.redhat.com/show_bug.cgi?id=433484