table ip nat {
chain prerouting {
type filter hook prerouting priority raw; policy accept;
ip daddr 213.10.1.1 ip daddr set 10.1.1.2 notrack counter
ip saddr 10.1.1.2 ip saddr set 213.10.1.1 notrack counter
}
}
Má to i nějaký nevýhody - nepodporuje to nftables mapy například, takže to je pravidlo po pravidlu (dost naprd). Záleží na tom kolik tam má být těch pravidel. Další možností pokud ten router má jen dvě rozhraní je použít TC, které tam ty mapy má, ale je to čisté utrpení dělat v tom rekonfiguraci.
U nás to funguje tak, že tenhle systém dožívá (s použitím nft map - dvě pravidla, ale +conntrack 🙂 ), je nahrazovaný routovanou ip adresou a v kombinaci s policy base routingem nás to stojí jen jednu /32.
edit: na tom příkladu to máte dost zjednodušené, protože to je raw a jde tam všechno, tak třeba první optimalizaci jde udělat už podle mapy na src/dst adresu - to co jsem říkal že nepodporuje podle mapy je ta vlastní změna 1:1