Benötige ich diese Zeile in meiner iptables-Konfiguration für Weiterleitungen?

Benötige ich diese Zeile in meiner iptables-Konfiguration für Weiterleitungen?

Ich habe eine Anwendung, die auf Port 7162 auf SNMP-Traps wartet. Die Traps kommen auf Port 162 an, daher habe ich diese Umleitung in meinen iptables:

-A PREROUTING -p udp -m udp --dport 162 -j REDIRECT --to-ports 7162

Muss ich eingehende Verbindungen auf Port 162 auch explizit zulassen mit

-A INPUT -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT

Manchmal funktioniert es nur mit der ersten Zeile, manchmal nicht. Ich versuche herauszufinden, woran das liegen könnte.

Antwort1

Die erste Regel sollte ausreichen – es sei denn, Sie beschränken den Zugriff auf Port 7162 INPUTirgendwie in der Kette.

Tatsächlich sollte Ihr UDP-Paket nicht einmal die INPUTKette passieren, wenn der Zielport auf 162 eingestellt ist, zumindest laut dem folgenden Diagramm:https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

Außerdem scheint Ihre INPUTRegel zu kompliziert. UDP ist ein zustandsloses Protokoll, Sie haben es also mit einer Art von Zuständen innerhalb des Netzfilters zu tun. Ich habe nicht einmal eine richtige Dokumentation darüber gefunden, was diese Zustände bedeuten, wenn sie mit UDP verwendet werden.

Versuchen Sie, beide Ports mit tcpdumpeinem Programm auf Hinweise zu überwachen (Hinweis:Wenn Sie Pakete in PREROUTINGder Kette verlieren, erkennt tcpdump sie nichtes kann nur das eingehende Paket auf Port 162 sehen, selbst das Abhören im Loopback zeigt die Umleitung nicht an).

Bearbeiten:Sie probieren die Regel doch nicht bei Verbindungen innerhalb einer einzelnen Maschine aus, oder? PREROUTINGwird bei Nur-Localhost-Verbindungen nicht durchlaufen.

verwandte Informationen