Linux iptables DNAT bei eingehenden Paketen ohne Conntrack (zustandslos)

Linux iptables DNAT bei eingehenden Paketen ohne Conntrack (zustandslos)

Auf meiner Linux-Box 10.20.1.1habe ich zwei UDP-Apps, die jeweils an Port 46000 (App A)und gebunden sind 36000(App B). Die Apps kommunizieren mit zwei UDP-Servern, die jeweils als 10.10.1.1:36000 (Srv X)und gebunden sind 10.10.1.2:36000 (Srv Y).

Wenn ich das Paket versende, muss ich immer den UDP-Quellport 36000 verwenden. Das Paket auf der Leitung wird immer 36000 - 36000die Quell- und Zielports verwenden.

Meine iptables-Regeln sind wie unten. Ich möchte DNATdas eingehende Paket von Srv X vom Port 36000 to 46000so senden, dass App A es empfängt.

*nat
-A PREROUTING -s 10.10.1.1/32 -p udp --dport 36000 -j DNAT --to-destination :46000

*raw
-A PREROUTING -p udp --dport 36000 -j CT --notrack
-A PREROUTING -p udp -j ACCEPT
-A OUTPUT -p udp --dport 36000 -j CT --notrack
-A OUTPUT -p udp -j ACCEPT

*filter

-A INPUT -p udp -m udp --dport 36000 -j ACCEPT --> rule 1
-A INPUT -p udp -m udp --dport 46000 -j ACCEPT --> rule 2
-A OUTPUT -p udp -m udp --dport 36000 -j ACCEPT -> rule 3

Wenn ich ein Paket von aussende, App A to Srv Xläuft es einwandfrei. Es gibt keinen Conntrack-Eintrag für die Ein- /proc/net/ip_conntrackund Ausgangspaketübereinstimmungen rule 3. Wenn die Antwort von kommt Srv X to App A, durchläuft das Paket die Rohtabelle, wird aber DOES NOTdurchlaufen DNATund springt direkt zur Filtertabellenregel 1. Das bedeutet, dass die Antwort von Srv X an meine Box geht, aber an App B statt an App A.

Fragen:

  1. Die RAW-Tabelle zeigt an, dass es kein gibt CONNTRACK. Das obige Verhalten zeigt jedoch an, dass das erste Paket App A -> Srv Xmit Quell- und Zielport 36000 - 36000von einem Modul irgendwo verfolgt wird. Daher Srv X -> App Ascheint die Antwort von keinem DNAT unterzogen zu werden. Wie vermeide ich dies CONNTRACK?

  2. Wie kann sichergestellt werden, dass jedes eingehende Paket von Srv X mit Zielport 36000 immer einem DNAT unterzogen wird?

Vielen Dank im Voraus, Telex

Antwort1

Durch einen Blick auf dieNetfilter-Dokumentation, es wurde gesagt, dass„Verbindungsverfolgung ist für NAT von grundlegender Bedeutung“, daher können Sie DNAT nicht haben, ohne es zu aktivierenKontakt.

verwandte Informationen