Порядок настройки следующий:
1️⃣ Сохраняю список правил в файл
/etc/iptables.sh. Адаптирую под текущие условия гипервизора: меняю имена сетевых интерфейсов, IP адреса. Делаю его исполняемым. Обычно сразу же проверяю, просто запустив его. # mcedit /etc/iptables.sh# chmod +x /etc/iptables.sh# bash /etc/iptables.sh# iptables -L -v -nНастройку делаю на чистом гипервизоре, поэтому даже если ошибусь где-то, то проблемы это не вызовет. Набор правил отлажен, обычно проблем нет, если не ошибся с именами интерфейсов.
2️⃣ Убеждаюсь, что после выполнения скрипта появился файл-экспорт с набором правил
/etc/iptables.rules. Добавляю применение правил в файл /etc/network/interfaces:iface enp5s0 inet manualpost-up iptables-restore < /etc/iptables.rulesВешаю загрузку правил iptables на поднятие wan интерфейса.
3️⃣ Перезагружаю сервер и убеждаюсь, что всё нормально поднимается, правила применяются, доступ к серверу у меня есть.
4️⃣ Если нужно добавить или изменить какое-то правило, то правлю файл
iptables.sh, а когда закончу, запускаю его. Он обновляет набор правил в iptables.rules, так что после перезагрузки хоста изменённые правила сохранятся.Если у вас хост Proxmox выполняет роль шлюза, то не забудьте проверить, что параметр
net.ipv4.ip_forward=1 активен в /etc/sysctl.conf. Без него NAT для виртуалок не заработает. Точнее не сам нат, а передача пакетов между локальным и wan интерфейсом. Если в качестве шлюза для VM выступает отдельная VM, то как минимум из набора правил исчезает NAT и всё, что касается локалки и проброса портов. А на шлюз уезжает этот же шаблон с правилами и там правится по месту. В наборе правил пример с работающего сервера. На основе него можете сформировать свой набор правил. Я там некоторые правила закомментировал, так как нужны они будут не всем. Оставил их для примера.
Формирую набор правил именно в таком виде, потому что он мне кажется удобным и наглядным. Можно быстро оценить все правила, оставить комментарии, что-то добавить.
#proxmox #iptables