Hier habe ich eine Lösung gefunden. Das sieht aus wie eine Map kombiniert
mit einem Set, läuft aber als Map.
https://wiki.nftables.org/wiki-nftables/index.php/Multiple_NATs_using_nftabl
es_maps#Multiple_NAT_mapping_with_address_and_port

Nur kann ich die Regel (aus obigem Beispiel) nun nicht mehr recht lesen.

% nft add map nat foo { type inet_service : ipv4_addr . inet_service ; }
% nft add element nat foo { \
    1100 : 192.168.1.2 . 5061, \
    1101 : 192.168.1.3 . 5061, \
    1400 : 192.168.1.4 . 5061 \
}
% nft add rule nat pre ip protocol udp dnat ip addr . port to udp dport map
@foo

Funktion ist hier, dass Pakete an die eigenen Ports 1100, 1101 usw. auf
Hosts mit den Adressen 192.168.1.x und andere Ports dort umgeschrieben
werden (DNAT).
Jetzt zerlegen wir mal die Regel:
"nft add rule nat pre ..." - füge eine Regel in die Tabelle nat und Chain
pre hinzu
"...ip protocol udp..." - matcht für Pakete vom Typ UDPv4 ...
Und jetzt meine Unklarheiten
"...dport map @foo" - ... an den EIGENEN Port "dport", der in der Map "foo"
zu suchen ist?
"...dnat ip addr . port to udp..." - und mache DNAT auf das "ip addr .
port"-Paar aus der entsprechenden Zeile in der Map; das "to udp" am Ende
irritiert an dieser Position 


Mit freundlichen Grüßen / Kind regards
     Ronny Seffner


Antwort per Email an