iptables-Portweiterleitung für aktive UDP-Verbindungen

iptables-Portweiterleitung für aktive UDP-Verbindungen

port 12345Ich versuche, die Portweiterleitung für UDP von nach port 54321wie folgt einzurichten :

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Dies funktioniert bei neuen Verbindungen einwandfrei, bei aktuell aktiven Verbindungen jedoch nicht.

Um zu verdeutlichen, was ich meine, nehmen wir an, dass vor dem Hinzufügen der Regeln eine aktive Verbindung von 192.168.0.2:55555<---> besteht 192.168.0.1:12345und ich versuche, alle eingehenden Verbindungen auf 192.168.0.1:12345umzuleiten 192.168.0.1:54321.

Nach dem Hinzufügen der beiden oben genannten Regeln 192.168.0.1:12345werden alle anderen Pakete mit dem Ziel bei empfangen, 192.168.0.1:54321außer denen von 192.168.0.2:55555.

Ich vermute, dass der Status der Verbindung dabei eine Rolle spielt. Wie kann ich das Problem lösen und dafür sorgen, dass die Pakete vom 192.168.0.1:55555Zielort port 12345an zugestellt werden port 54321?

Antwort1

Ich habe herausgefunden, wie es geht!

Sie müssen die REDIRECT-Funktion auf NAT verwenden! Zuvor müssen Sie jedoch den Eintrag zu dieser Verbindung aus conntrack löschen! Etwa wie folgt

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

verwandte Informationen