Portweiterleitung ausgehender Anforderung mit PF

1924
Alexander Olsson

Ich versuche, den gesamten ausgehenden Datenverkehr von meinem lokalen Computer an Port 843 umzuleiten, um zu meinem lokalen Dienst an Port 1234 zu gelangen.

Wenn ich also beispielsweise eine Anfrage an mich stelle 1.2.3.4:843, möchte ich, dass 127.0.0.1:1234stattdessen eine Verbindung hergestellt wird (transparent zur anfordernden Anwendung).

Ich bin auf OS X und versuche dies mit zu erreichen pf.

Folgendes habe ich:

ext_if = "en0" int_if = "lo0"  rdr on $ext_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234 

Wenn ich dies tue, telnet 1.2.3.4 843würde ich eine Verbindung zu meinem lokalen Dienst (auf Port 1234) erwarten.

Es scheint jedoch nicht richtig umzuleiten. Mit tcpdumpkann ich sehen, dass die Pakete mit dem Ziel auf die Schnittstelle gelegt werden 1.2.3.4.

Wenn ich localhost nur regiere, z

rdr on $int_if inet proto tcp from self to any port 843 -> 127.0.0.1 port 1234 

Dann telnet localhost 843funktioniert es wie erwartet und ich erhalte die Antwort von meinem lokalen Dienst, der Port abhört 1234.

Ich bin mir nicht sicher, was ich falsch mache, und jetzt habe ich keine Ideen mehr. Jede Hilfe / Hinweise wird geschätzt.

BEARBEITEN:

Ich habe ein bisschen mehr getestet und es scheint, als ob mit der letzten Regel jede Anfrage, die auf der Loopback-Schnittstelle landet, funktioniert. Also telnet 127.2.3.4 843auch richtige Weiterleitungen.

Ich habe versucht, $ext_ifzu oben hinzuzufügen

rdr on { $ext_if $int_if } proto tcp from any to any port 843 -> 10.0.1.10 port 1234 

Aber ohne Erfolg. Ich habe auch sysctl forwarding hinzugefügt. Tat nichts.

sudo sysctl -w net.inet.ip.forwarding=1 sudo sysctl -w net.inet6.ip6.forwarding=1 
3
Hatte die gleiche Frage hier beantwortet: https://serverfault.com/questions/421261/os-x-10-8-redirecting-locally-initiated-ssh-connections-to-localhost22 vor 8 Jahren 1

0 Antworten auf die Frage