
Die Erweiterungen des Netfiltersmanpagebesagt, dass:
MASQUERADE: Dieses Ziel ist nur in der
nat
Tabelle gültig, in derPOSTROUTING
Kette
FRAGE: Wie klont man dieAusgabedes MASQUERADE
Ziels mit einem TEE
Ziel?
Wenn Sie sich das netfilter/iptables
folgende Diagramm ansehen, werden Sie feststellen, dass dies nat.POSTROUTING
die letzte Kette ist, die ausgewertet wird, bevor das Paket an die ausgehende Schnittstelle gesendet wird. Es gibt keine raw.POSTROUTING
Kette, … oder doch?
Siehe auchDas.
PS
Was ist der Grund dafür, die mangle
und nat
Tabellen in der gleichen Reihenfolge an der outbound
und inbound
Schnittstelle zu verarbeiten, wenn die Daten inentgegengesetzte Richtungenüber diese Schnittstellen (Ausgang und Eingang)?
Antwort1
Soweit ich weiß, ist es nicht möglich, eineiptablesRegel ausgeführt nachnat/POSTROUTING, der letzte Hook voniptablesist es nicht möglich,iptablesum ein Paket nach NAT zu erfassen.
Dies ist jedoch möglich, wennNftables, seit derDie Hook-Priorität wird vom Benutzer definiert.nft'SdupAnweisung ist ein direkter Ersatz füriptables'T-STÜCKEs ist möglich zu mischenNftablesUndiptablessolange sie nicht beide NAT durchführen (die NAT-Ressource ist speziell und kann nicht richtig zwischeniptablesUndNftables). Verwendeniptables-über-nftables's Version voniptablesfunktioniert auch (Vorsicht ist beim Leeren von Regelsätzen geboten) und natürlich nur mitnftdenn es würde auch alles klappen.
Hier ist ein fertigesnftRegelsatz hierfür auf einem Router mit einem NATed-LANeth1und seine WAN-Seite aufeth2, um eine Kopie an 192.168.0.3 auf der LAN-Seite zu senden. Wie in einemandere Frage vom OP. Wird in eine Datei mit dem Namenfürwireshark.nftund „geladen“ werden mit nft -f forwireshark.nft
:
table ip forwireshark {
chain postnat {
type filter hook postrouting priority 250; policy accept;
oif eth2 counter dup to 192.168.0.3 device eth1
}
}
Wichtig ist, dass der Wert 250 höher gewählt wurde alsiptables'NF_IP_PRI_NAT_SRC
(100).
Folgendes würde der Wireshark-Host normalerweise erhalten, wenn der Ping-Host dies ping -c1 8.8.8.8
nach einiger Inaktivität tut (beachten Sie die seltsame ARP-Anfrage von der „falschen“ IP, die auf einigen Systemen möglicherweise nicht standardmäßig akzeptiert wird):
root@ns-wireshark:~# tcpdump -e -n -s0 -p -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:06:03.074142 82:01:54:27:4d:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.2, length 28
21:06:03.074301 9a:80:fb:e6:6a:0a > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.3 tell 140.82.118.4, length 28
21:06:03.074343 7e:0a:6c:12:00:61 > 9a:80:fb:e6:6a:0a, ethertype ARP (0x0806), length 42: Reply 192.168.0.3 is-at 7e:0a:6c:12:00:61, length 28
21:06:03.074387 9a:80:fb:e6:6a:0a > 7e:0a:6c:12:00:61, ethertype IPv4 (0x0800), length 98: 140.82.118.4 > 8.8.8.8: ICMP echo request, id 1633, seq 1, length 64
Ich kenne die Begründung nicht fürmangle/POSTROUTINGUndnat/POSTROUTING. Jedenfalls ist dies ein Teil voniptables' Einschränkungen, denn inNftables, abgesehen von dem Äquivalent vonmangle/AUSGABEdas ist ein besonderesTyp RouteHook für Umleitung, alle anderen gleichwertigen Verwendungen vonMangelsind Teil vonTypfilter: es gibt nicht wirklich eine separateMangelGeben Sie nichts mehr ein. Durch die Möglichkeit, die Reihenfolge der Prioritäten zu wählen, können Sie mehr tun.