NAT

Создаем таблицу nat

nft add table ip nat

Создаем цепочки PREROUTING и POSTROUTING

nft add chain nat POSTROUTING { type nat hook postrouting priority 0\; }

nft add chain nat PREROUTING { type nat hook prerouting priority 0\; }

SNAT. masquerade

Например LAN: 172.16.181.0/24

SNAT, если внешний IP – статический

nft add rule nat POSTROUTING oifname eth0 ip saddr 172.16.181.0/24 counter snat to 18.187.61.156

Если адрес WAN – динамический, используем masquerade

nft add rule nat POSTROUTING oifname eth0 ip saddr 172.16.181.0/24 counter masquerade

DNAT. Проброс порта

nft add rule ip nat PREROUTING iif vmbr0 tcp dport { 80, 443 } dnat to 172.16.2.2

nft add rule ip nat PREROUTING iif vmbr0 tcp dport 2222 dnat to 172.16.2.2:22

Все, что приходит на vmbr0 с моих IP на порт 22 пробросить 172.16.16.4:22

nft add rule ip nat PREROUTING iifname "vmbr0" ip saddr 178.150.69.156 tcp dport 2222 dnat to 172.16.16.4:22

Прописать в файл /etc/nftables.conf

iifname "vmbr0" ip saddr { 178.150.69.156, 176.37.155.208} tcp dport 2222 dnat to 172.16.16.4:22

Пример

/etc/nftables.conf

table ip nat {
   chain POSTROUTING {
        type nat hook postrouting priority srcnat; policy accept;
        oifname "vmbr0" ip saddr 10.10.10.0/24 masquerade
            }

    chain PREROUTING {
        type nat hook prerouting priority dstnat; policy accept;

        iif "vmbr0" udp dport 3319 dnat to 10.10.10.2 comment "OpenVPN Diol udp"
        iif "vmbr0" tcp dport { 80, 443 } dnat to 10.20.20.2
        iif "vmbr0" tcp dport 10052 dnat to 10.10.10.4:10050
    }
}