iptables в nftables для сервера VPN iKEv2 IPSEC

Вопрос или проблема

Может кто-нибудь помочь преобразовать следующие правила iptables в эквивалентные правила nftables?

Я уже пытался использовать iptables-translate, но он не переводит все мои правила…

# разрешить порты 500 и 4500, необходимые для IKEv2
sudo iptables -A INPUT -p udp --dport  500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT

# пересылка ESP
sudo iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.1.1.1/24 -j ACCEPT
sudo iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.1.1.1/24 -j ACCEPT

# дополнительные пересылки
sudo iptables -t nat -A POSTROUTING -s 10.1.1.1/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.1.1.1/24 -o eth0 -j MASQUERADE

# исправление фрагментации
sudo iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.1.1.1/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360

Любая помощь будет очень ценна.

Я сам работаю над этой проблемой. Частичный ответ:

выполните

nft -a list ruleset

и запомните номер дескриптора правил, отрегулируйте XX так, чтобы он был выше правила удаления. Проверьте позицию правила после повторного выполнения команды списка правил.

nft add rule inet filter input position XX udp dport 4500 accept
nft add rule inet filter input position XX udp dport 500 accept

и/или добавьте ниже в /etc/nftables.conf в вашем разделе input

      # IPsec
        udp dport 500 accept
        udp dport 4500 accept

Ответ или решение

Конечно, давайте переведем приведенные вами правила iptables в эквивалентные правила nftables для настройки сервера VPN с использованием IKEv2 и IPsec.

1. Установка базовой структуры nftables

Для начала убедитесь, что у вас уже установлен пакет nftables. Вы можете создать новый файл конфигурации, например, /etc/nftables.conf, или использовать командную строку для прямого введения правил. Здесь приведена структура конфигурации:

#!/usr/sbin/nft -f

# Определение таблиц и цепочек
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
    }

    chain forward {
        type filter hook forward priority 0; policy accept;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

table inet nat {
    chain postrouting {
        type nat hook postrouting priority 100; policy accept;
    }
}

table inet mangle {
    chain forward {
        type filter hook forward priority 0; policy accept;
    }
}

2. Правила для nftables

Теперь давайте переведем каждое правило из iptables.

Принятие UDP-трафика на порты 500 и 4500

nft add rule inet filter input udp dport 500 accept
nft add rule inet filter input udp dport 4500 accept

Перенаправление ESP-трафика

nft add rule inet filter forward ipsec policy dir in ipsec esp ip saddr 10.1.1.1/24 accept
nft add rule inet filter forward ipsec policy dir out ipsec esp ip daddr 10.1.1.1/24 accept

Дополнительное перенаправление

nft add rule inet nat postrouting ip saddr 10.1.1.1/24 oif "eth0" ipsec policy dir out accept
nft add rule inet nat postrouting ip saddr 10.1.1.1/24 oif "eth0" masquerade

Исправление фрагментации

nft add rule inet mangle forward ipsec policy dir in ip saddr 10.1.1.1/24 oif "eth0" tcp tcp flags syn,rst SYN tcp mss set 1360

3. Применение изменений

Сохраните конфигурацию в /etc/nftables.conf и примените изменения:

sudo nft -f /etc/nftables.conf

4. Проверка правил

Чтобы убедиться, что ваши правила работают, вы можете использовать следующую команду для просмотра ваших правил:

sudo nft list ruleset

Заключение

Теперь ваши правила iptables успешно переведены в nftables. Вы можете добавить их в конфигурационный файл nftables для автоматической загрузки при старте системы. Обратите внимание на корректность написания и наличие всех необходимых модулей, чтобы избежать проблем с сетевым трафиком.

Оцените материал
Добавить комментарий

Капча загружается...