Ich möchte Anfragen von 192.168.99.100:80
an weiterleiten 127.0.0.1:8000
. So mache ich es unter Linux mit iptables
:
iptables -t nat -A OUTPUT -p tcp --dport 80 -d 192.168.99.100 -j DNAT --to-destination 127.0.0.1:8000
Wie mache ich dasselbe in MacOS X? Ich habe eine Kombination von ipfw
Befehlen ohne großen Erfolg ausprobiert :
ipfw add fwd 127.0.0.1,8000 tcp from any to 192.168.99.100 80
(Erfolg für mich ist, einen Browser zu zeigen http://192.168.99.100
und eine Antwort von einem Entwicklungsserver zu erhalten, auf dem ich ausgeführt werde. localhost:8000
)
Antworten:
Also fand ich einen Weg, dies zu tun. Ich bin mir nicht sicher, ob es der bevorzugte Weg ist, aber es funktioniert! Bei deiner Lieblingsschale:
(Der Alias zu
lo0
scheint der fehlende Teil zu sein)Wenn Sie möchten, dass eine (gefälschte) Domain auf diesen neuen Alias verweist, stellen Sie sicher, dass / etc / hosts die folgende Zeile enthält:
quelle
Ich konnte dies mit den Befehlen
ifconfig
undpfctl
unter Mac 10.10.2 zum Laufen bringen. Mit dem folgenden Ansatz kann ich erfolgreich eine Zuordnung127.0.0.1:3000
zumydomain.com
lokal auf meinem Computer vornehmen.Geben Sie in Ihrer Befehlszeile die folgenden zwei Befehle ein, um Verbindungen weiterzuleiten
127.0.0.1:3000
an10.0.0.1
:Bearbeiten Sie dann Ihre
/etc/hosts
oder/private/etc/hosts
-Datei und fügen Sie die folgende Zeile hinzu, um Ihre Domain zuzuordnen10.0.0.1
.Nachdem Sie Ihre Hosts-Datei gespeichert haben, leeren Sie Ihr lokales DNS:
Öffnen
mydomain.com
Sie jetzt in einem Browser und Sie sehen den Server, der auf Ihrem lokalen Host-Port (dh127.0.0.1:3000
) gehostet wird . Grundsätzlich ordnet dieser Prozess<ip>:<port>
eine neue zu,<ip>
so dass Sie dann einem Host diese IP zuordnen können.quelle
sudo discoveryutil udnsflushcaches
gibts mircommand not found
aber es passt trotzdem zum eintrag richtig. Aber wie kann ich einen zweiten Port zuordnen? Ich habe versucht, die Schritte 1 + 2 mit id:10.0.0.2
und einem anderen Port auszuführen, aber es wird immer nur die letzte Verbindung verwendet. Wenn ich also last10.0.0.1
&port 3000
it forwards3000
mache, wenn ich last10.0.0.2
und portiere4000
es forwards4000
. In meinem habe/private/etc/hosts
ich beide Einträge mit der (entsprechend) unterschiedlichen ID geschrieben.sudo dscacheutil -flushcache
In letzter Zeit musste auch ich etwas Ähnliches tun, und bei der Suche kam ich auf diese Antwort. Leider wird die Antwort von Nafe verwendet,
ipfw
die in OSX mittlerweile veraltet und nicht mehr verfügbar ist. und die Antwort von Kevin Leary ist in der Tat ein bisschen hackisch. Also musste ich etwas besseres (saubereres) machen und entschied mich, es hier für die Nachwelt zu teilen. Diese Antwort basiert größtenteils auf dem Ansatz, der an dieser Stelle erwähnt wurde .Wie OP erwähnt, sollte ein Browser, der auf 192.168.99.100 zeigt, eine Antwort von einem Server bei localhost erhalten: 8000. Das Hinzufügen eines Alias zu
ifconfig
ist nicht wirklich erforderlich,pfctl
es reicht aus, um dies zu erreichen. Dazu muss diepf.conf
Datei/etc/pf.conf
unter geändert werden.Zuerst erstellen wir (mit sudo) einen neuen Anker - Datei (nennen wir es
redirection
) an:/etc/pf.anchors/redirection
. Dies ist im Grunde eine normale Textdatei und enthält die folgende Zeile (genau wie in der Antwort von Kevin Leary):rdr pass on lo0 inet proto tcp from any to 192.168.99.100 port = 80 -> 127.0.0.1 port 8000
. Nachdem die neue Ankerdatei erstellt wurde, muss sie in derpf.conf
Datei referenziert werden. Öffne diepf.conf
Datei mit sudo und füge sierdr-anchor "redirection"
nach der letzten rdr-anchor-Zeilerdr-anchor "com.apple/*"
hinzu und füge sieload anchor "redirection" from "/etc/pf.anchors/redirection"
am Ende hinzu.Letztendlich sollte die pf.conf-Datei so aussehen:
Und das war's auch schon. Starten Sie einfach neu,
pfctl
indem Sie ausgebensudo pfctl -d
, um es zuerst zu deaktivieren, und es dann erneutsudo pfctl -fe /etc/pf.conf
zu starten.Wenn dies nach jedem Neustart automatisch geschehen soll, muss noch ein winziger Arbeitsschritt erledigt werden: Der
pfctl
Startdämon für muss aktualisiert werden (in der Referenz wird erwähnt, dass pf beim Start automatisch aktiviert wird, dies scheint jedoch nicht der Fall zu sein der Fall vom Betrachten des Codes). Öffne (mit sudo)System/Library/LaunchDaemons/com.apple.pfctl.plist
und suche danach:und füge die Zeile hinzu
<string>-e</string>
, um es letztendlich so zu machen:Das sollte es tun.
Vorsichtsmaßnahme : Apple erlaubt nicht mehr, die Start-Dämon-Dateien einfach so zu ändern (weder mit sudo, noch mit chmod, noch mit irgendetwas anderem). Die einzige Möglichkeit besteht darin, die Einstellungen für den Systemintegritätsschutz zu ändern : Starten Sie den Wiederherstellungsmodus und starten Sie das Terminal. Überprüfen Sie den SIP-Status mit
csrutil status
, er sollte generell aktiviert sein. Deaktivieren Sie es mitcsrutil disable
und starten Sie es im normalen Modus neu. Nehmen Sie dann die oben beschriebenen Änderungen an der plist-Datei vor. Wenn Sie fertig sind, kehren Sie in den Wiederherstellungsmodus zurück und aktivieren Sie den Schutz (der aus gutem Grund vorhanden ist) erneut, indem Sie ihn ausstellencsrutil enable
.Erläuterung: Sie können dies überprüfen, indem Sie den
ifconfig
Befehl127.0.0.1
absetzen , der bereits der (Standard-) Alias für localhost lo0 ist. Diese Tatsache wird verwendet, um das Hinzufügen eines zusätzlichen Alias für localhost zu vermeiden und einfach die Standardadresse in derpf.conf
Datei zu verwenden.UPDATE: Leider scheint das Laden der Datei beim Start nicht zu funktionieren. Ich versuche immer noch, Hilfe zu bekommen, um es zu sortieren. Bis dahin
sudo pfctl -f /etc/pf.conf
macht das Laufen nach dem Start den Trick.quelle
System/Library/LaunchDaemons/com.apple.pfctl.plist
; Dies würde wahrscheinlich ein Betriebssystem-Update nicht überleben?Das hat bei mir gut funktioniert:
Fügen Sie der Startdatei die folgende Zeile hinzu, wie hier beschrieben: http://xeiam.com/port-forwarding-80-to-8080-using-ipfw-on-mac-os-x/
add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in
quelle
Ab 10.5 wird OS X mit einer neuen, anwendungsorientierten Firewall ausgeliefert
ipfw
. Ipfw ist aber noch installiert. Wenn Sie Probleme mit der Syntax haben, sehen Sie sich die grafischen Frontends wieWaterRoof
oder anFlying Buttress
.HTH, PEra
quelle
Die Reihenfolge der Regeln ist wichtig. Vergewissern Sie sich, dass vor Ihren Zulassungsregeln oder Ähnlichem kein "Alle verweigern" vorhanden ist.
quelle
65535 allow ip from any to any
).Ihrem Befehl scheint eine Regelnummer zu fehlen. Versuchen:
(Wenn Sie nicht als root ausgeführt werden, müssen Sie sudo voranstellen). Eine weitere zu überprüfende Sache ist, dass die Firewall aktiviert ist:
Wenn es mit dem Wert 0 (aus) zurückkommt, schalten Sie es ein mit:
... und sorgen Sie dann dafür, dass es beim Neustart des Computers wieder aktiviert wird. Der "richtige" Weg, dies zu tun, ist wahrscheinlich, ein Startelement zu erstellen ( Lingon macht dies ziemlich einfach). Oder verwenden Sie einfach eines der erwähnten GUI-Tools PEra und lassen Sie es sich um die Details kümmern.
quelle