Install proxmox on Hetzner Войдите в консоль корневого сервера Hetzner и перейдите в раздел Rescue Mode, чтобы загрузить сервер в режиме восстановления. Заходим на терминал и там предложат установить ОС командой installimage Запускаем, выбираем Other (!!NO SUPPORT!!) - Proxmox7 `` installimage `` Разметка диска, настраиваем RAID0 (так я делал в prox8) ``` DRIVE1 /dev/nvme0n1 DRIVE2 /dev/nvme1n1 SWRAID 1 SWRAIDLEVEL 0 # Use 1 for Raid 1 HOSTNAME prox8 # Set correct hostname PART /boot/efi esp 256M PART /boot ext4 1024M PART lvm vg0 all LV vg0 root / ext4 20G LV vg0 swap swap swap 24G LV vg0 data /var/lib/vz xfs all # List images with ls /root/.oldroot/nfs/install/../images IMAGE /root/.oldroot/nfs/install/../images/Debian-1107-bullseye-amd64-base.tar.gz ``` # Конфигурация массива без LVM, что позволяет, в дальнейшем, тонок настроить конфигурацию файловой системы ```bash SWRAID 1 SWRAIDLEVEL 0 PART swap swap 24G PART /boot ext3 1024M PART / ext4 20G PART /var/lib/vz xfs all ``` Настройка сети с NAT и мрашрутизацией для виртуалных машин. Взято тут https://adminwin.ru/nastroyka-nat-dlya-virtualynh-mashin-proxmox/ ```bash nano /etc/network/interfaces ``` ``` source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface lo inet6 loopback auto enp7s0 iface enp7s0 inet static address 65.109.116.119/26 gateway 65.109.116.65 up route add -net 65.109.116.64 netmask 255.255.255.192 gw 65.109.116.65 dev enp7s0 # route 65.109.116.64/26 via 65.109.116.65 iface enp7s0 inet6 static address 2a01:4f9:3051:1005::2/64 gateway fe80::1 iface eth0 inet manual #auto vmbr100 #iface vmbr100 inet static # address 192.168.100.0/24 # bridge-ports none # bridge-stp off # bridge-fd 0 auto vmbr100 iface vmbr100 inet static address 192.168.100.1 netmask 255.255.255.0 bridge-ports none bridge-stp off bridge-fd 0 #NAT post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o enp7s0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o enp7s0 -j MASQUERADE post-up iptables -t raw -C PREROUTING -i fwbr+ -j CT --zone 1 2>/dev/null || iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 2>/dev/null || true ``` ## OVH ```bash iface lo inet loopback iface eno1 inet manual iface enp3s0f1 inet manual auto vmbr0 iface vmbr0 inet static address 167.114.172.204/24 gateway 167.114.172.254 bridge-ports eno1 bridge-stp off bridge-fd 0 hwaddress AC:1F:6B:05:B7:84 iface vmbr0 inet6 static address 2607:5300:60:73cc::/64 gateway 2607:5300:60:73ff:ff:ff:ff:ff auto vmbr100 iface vmbr100 inet static address 192.168.100.1/24 bridge-ports none bridge-stp off bridge-fd 0 post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -o vmbr0 -j MASQUERADE #NAT post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 ``` Попался проблемный сервер, где LXC контейнер не мог получить интернет, решение ниже ```bash source /etc/network/interfaces.d/* auto lo iface lo inet loopback iface lo inet6 loopback auto enp195s0 iface enp195s0 inet static address 162.55.133.173/26 gateway 162.55.133.129 up route add -net 162.55.133.128 netmask 255.255.255.192 gw 162.55.133.129 dev enp195s0 # route 162.55.133.128/26 via 162.55.133.129 iface enp195s0 inet6 static address 2a01:4f8:271:5f92::2/64 gateway fe80::1 iface eth0 inet manual iface eth1 inet manual auto vmbr100 iface vmbr100 inet static address 192.168.100.1 netmask 255.255.255.0 bridge-ports none bridge-stp off bridge-fd 0 #NAT post-up echo 1 > /proc/sys/net/ipv4/ip_forward post-up iptables -t nat -A POSTROUTING -s '192.168.100.0/24' -j MASQUERADE post-down iptables -t nat -D POSTROUTING -s '192.168.100.0/24' -j MASQUERADE post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 || true ``` ```bash Проверил prox14 / тестовый LXC 111. Ничего не менял. Что видно CT 111: net0: firewall=1, ip=192.168.100.24/24, gw=192.168.100.1 Внутри контейнера: ping 192.168.100.1: OK ping 1.1.1.1: FAIL DNS: FAIL curl наружу: timeout Хост prox14 в интернет ходит нормально. LXC без firewall=1 тоже ходит наружу. Значит проблема именно в связке firewall=1 + NAT. Причина На prox14 есть MASQUERADE: -A POSTROUTING -s 192.168.100.0/24 -o enp7s0 -j MASQUERADE Но отсутствует runtime raw-правило conntrack zone для fwbr+: iptables-save -t raw # raw table пустая, правила fwbr+ нет При этом в /etc/network/interfaces оно прописано: post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 Но в активных правилах его нет. Поэтому для LXC с firewall=1, которые проходят через fwbr/fwln/fwpr, NAT работает неправильно. Это подтверждается conntrack: src=192.168.100.24 dst=185.12.64.2 ... [UNREPLIED] reply dst=192.168.100.24 mark=111 То есть пакет от CT 111 не получает нормальный SNAT на публичный IP 23.88.7.159; ответ ожидается обратно на приватный 192.168.100.24, что с интернета невозможно. Для LXC без firewall conntrack другой: src=192.168.100.29 dst=1.1.1.1 ... reply dst=23.88.7.159 [ASSURED] mark=0 Там NAT работает. Как решить Нужно восстановить raw conntrack-zone правило для firewall bridge: iptables -t raw -C PREROUTING -i fwbr+ -j CT --zone 1 || \ iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 После этого новые соединения из LXC с firewall=1 должны начать NAT’иться корректно. Старые UNREPLIED conntrack-записи можно либо подождать, либо аккуратно удалить для конкретного CT. Постоянно лучше сделать idempotent-вариантом, а не голым -I, чтобы не плодить дубли после reload: post-up iptables -t raw -C PREROUTING -i fwbr+ -j CT --zone 1 || iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 || true Коротко: проблема не в правилах самого CT 111; outbound из него firewall разрешает. Проблема в отсутствующем активном raw/conntrack-zone правиле для fwbr+ после переустановки prox14. ```