Вопрос или проблема
Может кто-нибудь помочь преобразовать следующие правила 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
для автоматической загрузки при старте системы. Обратите внимание на корректность написания и наличие всех необходимых модулей, чтобы избежать проблем с сетевым трафиком.