При установке пакета ufw (uncomplicated firewall) пакетный менеджер автоматически удаляет пакеты iptables-persistent и netfilter-persistent:
apt install ufw
Removing iptables-persistent (1.0.20) ...
Removing netfilter-persistent (1.0.20) ...
Почему они конфликтуют #
iptables-persistent - сохраняет правила iptables в файлы (/etc/iptables/rules.v4, /etc/iptables/rules.v6) и восстанавливает их при загрузке системы;
netfilter-persistent - сервис, который загружает сохранённые правила Netfilter при старте системы;
ufw - это надстройка над iptables, которая тоже управляет правилами Netfilter (iptables/nftables) и имеет свой собственный механизм сохранения;
Оба инструмента пытаются управлять одними и теми же правилами netfilter, что приводит к конфликтам. Если оставить оба механизма, они потенциально могут перезаписывать правила друг друга при загрузке или изменении конфигурации.
Последствия для администратора #
Важные правила могут потеряться при перезагрузке, например, правило для NAT:
iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -o eth0 -j MASQUERADE
Если добавить его после установки UFW, правило будет работать, но не сохранится после перезагрузки системы.
Решения #
Вариант 1: Оставить UFW и добавить правила через него (рекомендуется для простых конфигураций)
# Добавить правило MASQUERADE в конфиг UFW
# Отредактировать /etc/ufw/before.rules
nano /etc/ufw/before.rules
# Добавить перед секцией "*filter":
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.200.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Затем перезагрузить UFW
ufw reload
Вариант 2: Вернуть iptables-persistent обратно с удалением UFW (для сложных конфигураций)
# Установить iptables-persistent, UFW сам удалится
apt install iptables-persistent
# Добавить правило и сохранить
iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -o eth0 -j MASQUERADE
netfilter-persistent save
# или
iptables-save > /etc/iptables/rules.v4
Вариант 3: Использовать оба (не рекомендуется, но возможно)
# После установки UFW, создать скрипт загрузки
cat > /etc/network/if-up.d/iptables-nat << 'EOF'
#!/bin/sh
iptables -t nat -A POSTROUTING -s 10.200.0.0/24 -o eth0 -j MASQUERADE
EOF
chmod +x /etc/network/if-up.d/iptables-nat
Проверить текущее состояние #
# Проверить, работает ли MASQUERADE сейчас
iptables -t nat -L -n -v
# Проверить статус UFW
ufw status
# Проверить, загружены ли сохраненные правила
iptables-save | grep MASQUERADE
Рекомендация #
Если у вас простая конфигурация - оставьте UFW и добавьте правило в /etc/ufw/before.rules (Вариант 1).
Если у вас сложная конфигурация с множеством VPN/туннелей - верните iptables-persistent (Вариант 2), так как он дает более прямой контроль над правилами.