Zdravím, prosil bych o radu. Zrovna včera jsem vytvářel KVM HomeAssistenta na domácím RPI a snažil se nastavit abych měl k VM přístup z ostatních zařízení v domácí síti.
1. je určitě potřeba z githubu stáhnout správný image (samozřejmě s aarch64 v nazvu), což mi taky chvíli trvalo, protože v návodech to nenajdete :)
2. Routování jsem nastavil pomocí iptables takto:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8123 -j DNAT --to-destination <ip kvm s HA>:8123
sudo iptables -I LIBVIRT_FWI -s <cidr domácí síte> -d <cidr kvm bridge> -j ACCEPT
uložení:
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Problém byl že KVM nadto pořád přidávalo svoje pravidla a z:
ACCEPT all -- <cidr domaci site> <cidr kvm bridge>
ACCEPT all -- anywhere <cidr kvm bridge> ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
bylo vždy:
ACCEPT all -- anywhere <cidr kvm bridge> ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
ACCEPT all -- <cidr domaci site> <cidr kvm bridge>
ACCEPT all -- anywhere <cidr kvm bridge> ctstate RELATED,ESTABLISHED
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Nenašel jsem jinou možnost než přidat do `/etc/libvirt/hooks/qemu` a pak mi zůstalo moje pravidlo nahoře:
#!/bin/bash
GUEST_NAME="HomeAssistant"
echo "$1 $2" >> /tmp/hook.log
if [ "$1" = "$GUEST_NAME" ]; then
if [ "$2" = "started" ]; then
iptables -D LIBVIRT_FWI -d 192.168.100.0/24 -o virbr1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -D LIBVIRT_FWI -o virbr1 -j REJECT --reject-with icmp-port-unreachable
fi
fi
a použít na soubor chmod +x.
Mohl jsem to udělat nějak lépe? S iptables teprve začínám... Stejně tak KVM jsem použil poprvé...
27. 6. 2023, 08:53 editováno autorem komentáře
Ono to moze byt este zaujimavejsie, pokial je potreba odizovalovat iot-lan od main-lan.
Vtedy sa tiez bridguje, ci uz do vm alebo dockeru, ale iba interface pre prislusnu VLAN, plus zabezpecit ten reverzny proxy. Alebo, v pripade HAOS (t.j. vm, fyzicke zariadenie), ak ma ten viacero interfaces, da sa nastavit, na ktorom z nich ma hladat zariadenia cez multicast.