Устанавливаем nftables
apt install -y nftables && systemctl enable nftables
Проверяем включен ли forwarding
sysctl net.ipv4.ip_forward
и если полученное значение "net.ipv4.ip_forward = 0", то включаем:
sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
Для немедленного применения настроек:
sudo sysctl -p
Сбрасываем настройки nftables (пропускаем при настроенном)
nft flush ruleset
Добавляем таблицу NAT
nft add table nat
Настраиваем цепочки postrouting и prerouting в таблице NAT
nft 'add chain nat postrouting { type nat hook postrouting priority 100 ; }'
nft 'add chain nat prerouting { type nat hook prerouting priority -100; }'
Настраиваем проброс с адреса 10.10.10.1 и порта 5555 на адрес 10.2.1.1 и порт 3389
nft 'add rule nat prerouting ip daddr 10.10.10.1 tcp dport { 5555 } dnat 10.2.1.1:3389'
Маскарад в цепочке postrouting
nft add rule nat postrouting masquerade
Смотрим на результат
nft list ruleset
Для удаления правила сначала просматриваем значение handle в таблице NAT
nft -a list table nat
Удаляем правило с "handle 6" (номер в выводе предыдущей команды)
nft delete rule nat prerouting handle 6
Для сохранения правил после ребута делаем резерную копию
cp /etc/nftables.conf /etc/nftables.backup
Копируем текущие настройки в рабочий конфиг
nft list ruleset | sudo tee /etc/nftables.conf