Existen dos soluciones para su problema con Parallels Desktop 11 (esto no se aplica a Parallels Desktop Pro/Enterprise 11, que proporcionan un interfaz práctico para configurar el reenvío de puertos - no obstante, las soluciones deberían funcionar también en esas versiones mejoradas):
En lugar de adjuntar la interfaz de red de la VM a la "Red Compartida", utilice una interfaz puente (por ejemplo, en0 o en1) y configúrela con una IP/máscara de red en la red respectiva. Entonces no necesitas NAT/reenvío de puertos.
Si insiste en una red NAT'ed haga lo siguiente:
En el ejemplo siguiente utilizo nc
como servidor. Para ejecutar un servidor introduzca nc -l -4 port
y para conectarse a este servidor utilice nc server-IP port
. También puede especificar un puerto de origen: nc -p source-port server-IP port
.
Aquí utilizo nc -l -4 11111
en la VM. Para conectarse a este servidor ejecutaría nc server-IP 11111
desde un host de la misma red. Después de iniciar el servidor y conectar el cliente, simplemente se puede introducir algún texto, que se envía a la otra consola. Para conectar desde un tercer host en una red diferente a la VM nc-servidor quiero usar nc NAT-host-IP 22222
. Así que tengo que reenviar NAT-host-IP:22222 a VM-IP:11111. El NAT-host en este caso es el Mac que aloja la VM de Parallels.
-
adjuntar el interfaz de red del huésped de la VM a la "Red de sólo host". Normalmente, la red de sólo host de Parallels tiene la siguiente configuración de host (compruébelo introduciendo ifconfig
en la máquina anfitriona):
vnic1: ...
...
inet 10.37.129.2 netmask 255.255.255.0 broadcast 10.37.129.255
Por lo tanto, configure el huésped VM como sigue:
- IP: 10.37.129.x (con x != 0,1,2,255) - abajo asumo que es 10.37.129.10
- Máscara de red: 255.255.255.0
- Puerta de enlace: 10.37.129.2
- DNS: un servidor DNS real como 8.8.8.8
-
En la máquina con NAT habilite el reenvío en /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
y reiniciar el host.
-
En la máquina NAT-host (con una IP de ejemplo en0: 192.168.0.2) cree un archivo de anclaje org.user.forwarding en /private/etc/pf.anchors
sudo touch /private/etc/pf.anchors/org.user.forwarding
con el siguiente contenido y una línea vacía al final:
rdr pass on en0 inet proto tcp from any to any port 22222 -> 10.37.129.10 port 11111
-
En la máquina NAT-host modifique el archivo /private/etc/pf.conf pero mantenga una línea vacía al final
archivo original:
...
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"
-
Analice y pruebe su ancla y su archivo pf.conf para asegurarse de que no hay errores:
sudo pfctl -vnf /etc/pf.anchors/org.user.forwarding
sudo pfctl -vnf /etc/pf.conf
-
Habilitar pf con:
sudo pfctl -e -f /etc/pf.conf
-
Para probar esto inicie el servidor nc en la VM con nc -l -4 11111
. Ahora, en un tercer host de su red física, introduzca nc 192.168.0.2 22222
.
Después de un reinicio hay que volver a iniciar pf. Si quieres habilitar pf permanentemente revisa mi otro pf relacionados con respuestas.
Después de una actualización del sistema, algunos de los archivos originales anteriores pueden haber sido sustituidos y hay que volver a aplicar todos los cambios.