markdown
Proxmox-site.md
markdown
# Proxmox a sítě Proxmox je Debian s webovým rozhraním, takže síť pod ním je normální linuxová síť. Zmatek dělá hlavně to, že se konfiguruje na třech místech naráz: v rozhraní Proxmoxu, v `/etc/network/interfaces` a uvnitř samotných VM. ## vmbr, čili linuxový most `vmbr0` není nic proxmoxového. Je to obyčejný linuxový [switch](MAC-ARP-a-prepinani) v softwaru. Fyzická síťovka se do něj zapojí jako jeden port a virtuální stroje jako další porty. ```mermaidflowchart TD LAN[Fyzická síť] --- E[enp1s0] E --- BR[vmbr0<br/>linuxový most] BR --- H[Proxmox hostitel<br/>192.168.1.5] BR --- V1[VM 100] BR --- V2[VM 101] BR --- C1[LXC 200]``` Adresu má **most**, ne fyzická síťovka. To je nejčastější zdroj zmatku: `enp1s0` je bez adresy a to je správně. `/etc/network/interfaces`: ```auto loiface lo inet loopback iface enp1s0 inet manual auto vmbr0iface vmbr0 inet static address 192.168.1.5/24 gateway 192.168.1.1 bridge-ports enp1s0 bridge-stp off bridge-fd 0``` Po ruční editaci: ```bashifreload -a # aplikuje bez restartu``` ## VLAN-aware bridge Tohle je ta funkce, kvůli které tuhle stránku píšu. Umožňuje dávat jednotlivé VM do různých [VLAN](VLANy), aniž bys pro každou stavěl vlastní most. ```auto vmbr0iface vmbr0 inet static address 192.168.1.5/24 gateway 192.168.1.1 bridge-ports enp1s0 bridge-stp off bridge-fd 0 bridge-vlan-aware yes bridge-vids 2-4094``` Nebo v rozhraní: `Datacenter` → uzel → `Network` → `vmbr0` → zaškrtnout **VLAN aware**. Pak u každé VM nastavíš `VLAN Tag` v nastavení síťového zařízení a VM je v té VLANě. Uvnitř VM se nic nenastavuje — o tagování se stará most, stejně jako u fyzického switche na access portu. **Port na fyzickém switchi, do kterého je Proxmox zapojený, musí být trunk** s povolenými potřebnými VLANami. Bez toho ti tagovaný provoz nikam neprojde. Pro [UniFi](UniFi) to znamená nastavit v `Port Manager` tagované VLANy. ## Hostitel ve VLANě Když chceš mít samotný Proxmox v jiné VLANě než výchozí: ```auto vmbr0iface vmbr0 inet manual bridge-ports enp1s0 bridge-vlan-aware yes bridge-vids 2-4094 auto vmbr0.10iface vmbr0.10 inet static address 192.168.10.5/24 gateway 192.168.10.1``` Most zůstane bez adresy a ta se přesune na virtuální rozhraní `vmbr0.10`, které je tagované do VLANy 10. **Tohle je moment, kdy se snadno odřízneš.** Než to uděláš, měj přístup ke konzoli — IPMI, iDRAC, nebo alespoň fyzickou klávesnici. ## Vnitřní síť bez fyzického portu Most bez `bridge-ports` je izolovaná síť jen mezi VM. Užitečné pro provoz mezi aplikací a databází, který nemá opustit hostitele: ```auto vmbr1iface vmbr1 inet static address 10.99.0.1/24 bridge-ports none bridge-stp off bridge-fd 0``` Když má taková síť mít přístup ven, musíš na hostiteli zapnout [NAT](NAT-a-port-forwarding) a forwarding — viz [iptables](iptables) nebo [nftables](nftables). ## Agregace linek Dva kabely místo jednoho, kvůli propustnosti nebo redundanci: ```auto bond0iface bond0 inet manual bond-slaves enp1s0 enp2s0 bond-miimon 100 bond-mode 802.3ad bond-xmit-hash-policy layer2+3 auto vmbr0iface vmbr0 inet static address 192.168.1.5/24 gateway 192.168.1.1 bridge-ports bond0 bridge-vlan-aware yes bridge-vids 2-4094``` Režim `802.3ad` (LACP) vyžaduje podporu na switchi a nastavenou agregaci na protější straně. Když ji switch neumí, použij `active-backup` — nezvýší propustnost, ale přežije výpadek kabelu. Realistické očekávání: LACP **nezrychlí jedno spojení**. Rozděluje provoz mezi linky podle hashů, takže jeden přenos souboru pojede pořád po jedné lince. Pomůže při víc souběžných spojeních. ## Firewall v Proxmoxu Proxmox má vlastní vrstvu firewallu na třech úrovních: datacentrum, uzel a jednotlivá VM. Zapisuje si vlastní pravidla do netfilteru. Platí tu totéž co u Dockeru: **`ufw status` ti o nich neřekne.** Viz [Docker a firewall](Docker-a-firewall) a [Linux firewall](Linux-firewall). ```bashnft list ruleset | lesspve-firewall statuspve-firewall compile # ukáže, co Proxmox vygeneroval``` Doporučení: **buď proxmoxový firewall, nebo vlastní pravidla, ne obojí.** Když chceš jemnou kontrolu, vypni proxmoxový a piš [nftables](nftables) ručně. Když chceš jednoduchost, používej proxmoxový a nesahej na netfilter jinak. Firewall pro VM se zapíná na dvou místech naráz — v nastavení VM a na síťovém zařízení. Zapomenutí druhého je klasika. ## LXC versus VM **LXC kontejnery** sdílí jádro hostitele. Síť jde přímo přes most, jsou lehčí a startují okamžitě. Nevýhoda: některé věci uvnitř nefungují, typicky [Docker](Site-v-Dockeru) v neprivilegovaném kontejneru vyžaduje šamanské zásahy. **VM** mají vlastní jádro a chovají se jako samostatný stroj. Těžší, ale bez překvapení. Doporučení: **Docker provozuj ve VM, ne v LXC.** Ušetříš si hodiny hledání, proč něco nefunguje. LXC nech na věci, které jsou samy o sobě jednoduché — Pi-hole, reverse proxy, malé služby. ## Diagnostika ```baship -br addr # přehled adresbridge link show # co je v mostěbridge vlan show # VLANy na portech mostuifreload -a # aplikace /etc/network/interfacesjournalctl -u pve-firewall -f``` `bridge vlan show` je nejužitečnější příkaz při ladění VLAN — ukáže ti, které tagy jsou na kterém portu povolené. | Problém | Příčina ||---|---|| VM nemá síť | zapomenutý VLAN tag, nebo port na switchi není trunk || Hostitel nedostupný po změně | špatná brána, nebo adresa na síťovce místo na mostu || VM se nevidí navzájem | jsou v různých VLANách, chová se to správně || Pomalá síť mezi VM | v nastavení VM je model `e1000` místo `virtio` | Ten poslední bod je snadné přehlédnout. `virtio` je paravirtualizovaný ovladač a je řádově rychlejší než emulovaná Intel karta. Používej ho vždycky, když to hostovaný systém umí.