Ich habe Parallels Desktop 11, das die Portweiterleitung an VMs nicht unterstützt (nur die Pro-Version unterstützt dies). Also versuche ich, pfctl zu verwenden, um Ports an meine Parallels-VM weiterzuleiten.
Ich bin dieser Antwort gefolgt , um die Portweiterleitung einzurichten. Die Weiterleitung wird mit aktiviertsysctl net.inet.ip.forwarding=1
Ich habe diese Regel angegeben.
rdr pass inet proto tcp from any to any port 51414 -> 10.211.55.9 port 51414
10.211.55.9 ist die statische IP der Parallels-VM.
Die Portweiterleitung funktioniert jedoch nicht für VM. Es kann Port x erfolgreich an Port y auf 127.0.0.1 weiterleiten, aber Port x kann nicht von Mac an Port x auf Parallels VM weitergeleitet werden.
Was könnte schief laufen? Ist es Parallels, das Pakete usw. verwirft?
Es gibt zwei Lösungen für Ihr Problem mit Parallels Desktop 11 (dies gilt nicht für Parallels Desktop Pro/Enterprise 11, die beide eine praktische Schnittstelle zum Konfigurieren der Portweiterleitung bieten - dennoch sollten die Lösungen auch in diesen erweiterten Versionen funktionieren):
Anstatt die Netzwerkschnittstelle der VM an das „Shared Network“ anzubinden, verwenden Sie eine Bridged-Schnittstelle (z. B. en0 oder en1) und konfigurieren Sie diese mit einer IP/Netzmaske im jeweiligen Netzwerk. Dann brauchst du kein NAT/Portforwarding.
Wenn Sie auf einem NAT-Netzwerk bestehen, gehen Sie wie folgt vor:
Im folgenden Beispiel verwende ich nc
als Server. Um einen Server auszuführen, geben Sie ein nc -l -4 port
und verwenden Sie , um sich mit diesem Server zu verbinden nc server-IP port
. Sie können auch einen Quellport angeben: nc -p source-port server-IP port
.
Hier verwende ich nc -l -4 11111
auf der VM. Um eine Verbindung zu diesem Server herzustellen, würde ich nc server-IP 11111
von einem Host im selben Netzwerk aus laufen. Nachdem Sie den Server gestartet und den Client verbunden haben, können Sie einfach einen Text eingeben, der an die andere Konsole gesendet wird. Um eine Verbindung von einem dritten Host in einem anderen Netzwerk zum VM-nc-server herzustellen, möchte ich nc NAT-host-IP 22222
. Also muss ich NAT-Host-IP: 22222 an VM-IP: 11111 weiterleiten. NAT-Host ist in diesem Fall der Mac, der die Parallels-VM hostet.
Verbinden Sie die Netzwerkschnittstelle des VM-Gasts mit dem „Host-only Network“. Normalerweise hat das Host-Only-Netzwerk von Parallels die folgende Host-Konfiguration (überprüfen Sie dies, indem Sie ifconfig
auf dem Host-Rechner eingeben):
vnic1: ...
...
inet 10.37.129.2 netmask 255.255.255.0 broadcast 10.37.129.255
Konfigurieren Sie also den VM-Gast wie folgt:
Aktivieren Sie auf der NAT-Host-Maschine die Weiterleitung in /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
und starten Sie den Host neu.
Erstellen Sie auf dem NAT-Host-Computer (mit einer Beispiel-IP von en0: 192.168.0.2) eine Ankerdatei org.user.forwarding in /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
mit folgendem Inhalt und einer abschließenden Leerzeile:
rdr pass on en0 inet proto tcp from any to any port 22222 -> 10.37.129.10 port 11111
Ändern Sie auf der NAT-Host-Maschine die Datei /private/etc/pf.conf, aber lassen Sie eine nachgestellte leere Zeile
Originaldatei:
...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
Zu
...
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr-anchor "org.user.forwarding"
nat on en0 proto {tcp, udp, icmp} from 10.37.129.0/24 to any -> en0
pass from {lo0, 10.37.129.0/24} to any keep state
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
load anchor "org.user.forwarding" from "/etc/pf.anchors/org.user.forwarding"
Analysieren und testen Sie Ihren Anker und Ihre pf.conf-Datei, um sicherzustellen, dass keine Fehler vorhanden sind:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
sudo pfctl -vnf /etc/pf.conf
pf aktivieren mit:
sudo pfctl -e -f /etc/pf.conf
nc -l -4 11111
. Geben Sie nun auf einem dritten Host in Ihrem physischen Netzwerk nc 192.168.0.2 22222
.Nach einem Neustart müssen Sie pf neu starten. Wenn Sie pf dauerhaft aktivieren möchten, überprüfen Sie meine anderen pf-bezogenen Antworten.
Nach einer Systemaktualisierung oder -aktualisierung wurden möglicherweise einige der oben genannten Originaldateien ersetzt, und Sie müssen alle Änderungen erneut anwenden.
Sudhir N