Ci sono due soluzioni per il tuo problema con Parallels Desktop 11 (questo non si applica a Parallels Desktop Pro / Enterprise 11, che fornisce entrambe una comoda interfaccia per configurare il port forwarding - tuttavia le soluzioni dovrebbero funzionare anche in quelle versioni avanzate) :
Invece di collegare l'interfaccia di rete della VM alla "Rete condivisa", utilizzare un'interfaccia a ponte (ad esempio en0 o en1) e configurarla con una maschera IP / di rete nella rispettiva rete. Quindi non hai bisogno di NAT / port forwarding.
Se insisti su una rete NAT fare quanto segue:
Nell'esempio seguente utilizzo nc
come server. Per eseguire un server inserisci nc -l -4 port
e per connetterti a questo server usa nc server-IP port
. Puoi anche specificare una porta di origine: nc -p source-port server-IP port
.
Qui utilizzo nc -l -4 11111
sulla VM. Per connetterti a questo server, eseguirò nc server-IP 11111
da un host nella stessa rete. Dopo aver avviato il server e aver connesso il client, è possibile inserire semplicemente del testo, che viene inviato all'altra console. Per connetterti da un terzo host su una rete diversa al VM nc-server voglio usare nc NAT-host-IP 22222
. Quindi devo inoltrare NAT-host-IP: 22222 a VM-IP: 11111. L'host NAT in questo caso è il Mac che ospita la macchina virtuale Parallels.
-
collega l'interfaccia di rete del guest VM alla "Rete solo host". Solitamente la rete host-only di Parallels ha la seguente configurazione host (controlla questo inserendo ifconfig
sulla macchina host):
vnic1: ...
...
inet 10.37.129.2 netmask 255.255.255.0 broadcast 10.37.129.255
Quindi configurare il guest VM come segue:
- IP: 10.37.129.x (con x ≠ 0,1,2,255) - di seguito suppongo che sia 10.37.129.10
- Maschera di rete: 255.255.255.0
- Gateway: 10.37.129.2
- DNS: un vero server DNS come 8.8.8.8
-
Sulla macchina host NAT, abilitare l'inoltro in /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
e riavvia l'host.
-
Sulla macchina host NAT (con un IP di esempio di en0: 192.168.0.2) crea un file di ancoraggio org.user.forwarding in /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
con il seguente contenuto e una riga vuota finale:
rdr pass on en0 inet proto tcp from any to any port 22222 -> 10.37.129.10 port 11111
-
Sulla macchina host NAT modifica il file /private/etc/pf.conf mantenendo una riga vuota finale
file originale:
...
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"
a
...
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"
-
Analizza e verifica il tuo ancoraggio e il tuo file pf.conf per assicurarti che non ci siano errori:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
sudo pfctl -vnf /etc/pf.conf
-
Abilita pf con:
sudo pfctl -e -f /etc/pf.conf
- Per testare questo avvia il server nc sulla VM con
nc -l -4 11111
. Ora su un terzo host nella tua rete fisica inserisci nc 192.168.0.2 22222
.
Dopo un riavvio devi ricominciare pf. Se vuoi abilitare pf controlla permanentemente le mie altre risposte pf .
Dopo un aggiornamento del sistema o l'aggiornamento di alcuni dei file originali di cui sopra potrebbe essere stato sostituito e devi riapplicare tutte le modifiche.