
Ich muss den Datenverkehr abfangen, der an eine externe IP-Adresse geht, und ihn an den lokalen Host umleiten. Mit iptables ist das ganz einfach, aber ich habe nicht verstanden, wie ich das über nft zum Laufen bringen kann. Ich erstelle eine Tabelle und eine Kette innerhalb von nft, konnte aber keine Regel erstellen, nft sagt, dass der Vorgang nicht unterstützt wird.
Tabellen
sudo /usr/sbin/nft list ruleset
table ip filter {
chain OUTPUT {
type filter hook output priority filter; policy accept;
}
}
Regel
sudo /usr/sbin/nft add rule ip filter OUTPUT ip daddr $EXTERNAL_ADDRESS counter dnat to 127.0.0.1
Error: Could not process rule: Operation not supported
Kernelmodule
lsmod | grep nf_tables
nf_tables 360448 1 nft_nat
libcrc32c 12288 3 nf_conntrack,nf_nat,nf_tables
nfnetlink 20480 1 nf_tables
Was ist falsch an meiner Regel oder könnte sie einfacher gemacht werden?
Antwort1
Weisen Sie dem Host die IP-Adresse zu. Die Weiterleitungstabelle dient dazu, den gesamten Datenverkehr zu routen. Eine Firewall kann dies zwar tun, aber das ist oft nicht notwendig.
Beispielsweise wird unter Linux dem Loopback eine von mir erstellte IP-Adresse zugewiesen:
ip a add 2001:db8:114:6402::1020 dev lo
Als Route für einen Host hat sie Priorität, auch wenn sie normalerweise an anderer Stelle im Internet vorhanden ist. Über eine Loopback-Schnittstelle wissen andere Hosts nichts davon und sind nur über Datenverkehr erreichbar, der denselben Host „verlässt“.
Wenn es sich bei dem Host um einen Router handelt, entscheiden Sie, ob Sie dies anderen Routern mitteilen möchten oder nicht.
Übungen für den Leser: Registrieren Sie dies in IPAM und DNS. Machen Sie es mit dem Netzwerkmanager Ihrer Distribution persistent.