From 90b69667c1a01df5bff8125961efc3e739e93c4b Mon Sep 17 00:00:00 2001 From: Sergey Mazein <37579301+semalis@users.noreply.github.com> Date: Sat, 27 Jun 2026 00:39:28 +0300 Subject: [PATCH] IP fix --- Proxmox/RAID0-x3-tuning.md | 2 +- Proxmox/README.md | 83 +++++++++++++++++++++++++++++--------- 2 files changed, 65 insertions(+), 20 deletions(-) diff --git a/Proxmox/RAID0-x3-tuning.md b/Proxmox/RAID0-x3-tuning.md index 47c506a..10040e4 100644 --- a/Proxmox/RAID0-x3-tuning.md +++ b/Proxmox/RAID0-x3-tuning.md @@ -31,7 +31,7 @@ lsof +D /var/lib/vz --- ### 3. Пересоздай файловую систему XFS -Оптимальные параметры для RAID0 с chunk = 1 Mb и 6 дисков для блокчейнов: +Оптимальные параметры для RAID0 с chunk = 1 Mb и 3 диска для блокчейнов: ```bash mkfs.xfs -f -s size=4096 -l size=1g -n size=4096 -d su=1m,sw=3 /dev/md3 ``` diff --git a/Proxmox/README.md b/Proxmox/README.md index 761fe88..becfddb 100644 --- a/Proxmox/README.md +++ b/Proxmox/README.md @@ -91,10 +91,13 @@ 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 -I PREROUTING -i fwbr+ -j CT --zone 1 -post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1 +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 @@ -177,29 +180,71 @@ 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 -✅ Что было причиной -В конфигурации контейнера был установлен firewall=1 +Проверил prox14 / тестовый LXC 111. Ничего не менял. -Но Proxmox firewall был отключён (pve-firewall stop) + Что видно + CT 111: -В итоге трафик из контейнера проходил в bridge, но обратно — не возвращался + net0: firewall=1, ip=192.168.100.24/24, gw=192.168.100.1 -После удаления firewall=1 — контейнер подключился напрямую к vmbr100, и всё заработало + Внутри контейнера: -🧩 Что запомнить на будущее -Компонент Рекомендация -bridge=vmbr100 Указывать в net0 -type=veth Обязательно -firewall=1 Оставлять только если firewall активен -pve-firewall Должен быть запущен, если включён firewall=1 -NAT (MASQUERADE) Должен быть без -o, если bridge без портов -ip_forward=1 Всегда включать + ping 192.168.100.1: OK + ping 1.1.1.1: FAIL + DNS: FAIL + curl наружу: timeout -📦 Хочешь — могу сохранить тебе: -шаблон interfaces с NAT и vmbr100 + Хост prox14 в интернет ходит нормально. LXC без firewall=1 тоже ходит наружу. Значит проблема именно в связке firewall=1 + NAT. -шаблон 500.conf (или net0) без firewall + Причина + На 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. -команду на быструю проверку сети внутри LXC ```