NPV-AM

Опубликовано: 20 июля 2026
Linux Сети Firewall

nftables vs iptables: миграция

nftables — преемник iptables в ядре Linux. Он предлагает более чистый синтаксис, лучшую производительность и атомарные обновления правил. Рассмотрим, как мигрировать с iptables на nftables без простоя.

Проблемы iptables

iptables — мощный, но сложный инструмент. Основные проблемы:

Преимущества nftables

Примеры синтаксиса

iptables

# Базовый firewall
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Аналогичные правила для IPv6
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

nftables

#!/usr/sbin/nft -f
flush ruleset

table inet firewall {
    chain input {
        type filter hook input priority 0; policy drop;
        
        # Loopback
        iif lo accept
        
        # Established connections
        ct state established,related accept
        
        # SSH, HTTP, HTTPS
        tcp dport { 22, 80, 443 } accept
    }
    
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Миграция: пошаговый план

Шаг 1: Экспорт текущих правил

# Сохранение iptables правил
iptables-save > /tmp/iptables-rules.v4
ip6tables-save > /tmp/iptables-rules.v6

Шаг 2: Конвертация

# Инструмент для автоматической конвертации
apt install iptables-nftables-compat
iptables-restore-translate < /tmp/iptables-rules.v4

Шаг 3: Тестирование

# Проверка синтаксиса
nft -c -f /etc/nftables.conf

# Тестовый запуск (правила применятся, но можно откатить)
nft -f /etc/nftables.conf
Перед миграцией всегда сохраняйте iptables правила и скрипт отката. Неправильная конфигурация nftables может заблокировать доступ к серверу.

Атомные обновления

Главная проблема iptables — отсутствие атомных обновлений. При iptables-restore старые правила удаляются перед добавлением новых, создавая окно без фильтрации:

# nftables: атомное обновление через table
table inet myfilter {
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        tcp dport { 22, 80, 443 } accept
    }
}

# Применение — old table удаляется только после успешного добавления new
nft -f /etc/nftables.conf

Production-стратегия

# 1. Сохраняем текущее состояние
iptables-save > /root/iptables-backup-$(date +%Y%m%d).rules

# 2. Создаём скрипт отката
cat > /usr/local/bin/rollback-iptables.sh << 'EOF'
#!/bin/bash
iptables-restore < /root/iptables-backup-$(date +%Y%m%d).rules
systemctl restart nftables
EOF

# 3. Тестируем nftables на отдельном сервере

# 4. Применяем на production
cp /etc/nftables.conf /etc/nftables.conf.bak
nft -f /etc/nftables.conf

Заключение

nftables — это будущее файрволлинга в Linux. Он проще в использовании, быстрее и безопаснее за счёт атомных обновлений. Миграция требует планирования, но инвестиции окупятся упрощением сопровождения и повышением безопасности.

← Назад к списку статей