Tengo Parallels Desktop 11, que no admite el reenvío de puertos a máquinas virtuales (solo la versión Pro lo admite). Así que estoy tratando de usar pfctl para reenviar puertos a mi máquina virtual Parallels.
He seguido esta respuesta para configurar el reenvío de puertos. El reenvío está habilitado consysctl net.inet.ip.forwarding=1
He especificado esta regla.
rdr pass inet proto tcp from any to any port 51414 -> 10.211.55.9 port 51414
10.211.55.9 es la IP estática de la VM de Parallels.
Sin embargo, el reenvío de puertos no funciona para VM. Puede reenviar correctamente el puerto x al puerto y en 127.0.0.1 pero no puede reenviar el puerto x de Mac al puerto x en Parallels VM.
¿Qué podría estar saliendo mal? ¿Es Parallels el que está descartando paquetes, etc.?
Existen dos soluciones para su problema con Parallels Desktop 11 (esto no se aplica a Parallels Desktop Pro/Enterprise 11, ya que ambos brindan una interfaz conveniente para configurar el reenvío de puertos; sin embargo, las soluciones también deberían funcionar en esas versiones mejoradas):
En lugar de adjuntar la interfaz de red de la VM a la "Red compartida", use una interfaz puenteada (por ejemplo, en0 o en1) y configúrela con una IP/máscara de red en la red respectiva. Entonces no necesita NAT/reenvío de puertos.
Si insiste en una red con NAT, haga lo siguiente:
En el siguiente ejemplo, lo uso nc
como servidor. Para ejecutar un servidor ingrese nc -l -4 port
y para conectarse a este servidor use nc server-IP port
. También puede especificar un puerto de origen: nc -p source-port server-IP port
.
Aquí lo uso nc -l -4 11111
en la máquina virtual. Para conectarme a este servidor, ejecutaría nc server-IP 11111
desde un host en la misma red. Después de iniciar el servidor y conectar el cliente, simplemente puede ingresar un texto, que se envía a la otra consola. Para conectarme desde un tercer host en una red diferente a la VM nc-server que quiero usar nc NAT-host-IP 22222
. Entonces tengo que reenviar NAT-host-IP:22222 a VM-IP:11111. NAT-host en este caso es la Mac que aloja la VM de Parallels.
adjunte la interfaz de red del invitado de VM a la "red de solo host". Por lo general, la red de solo host de Parallels tiene la siguiente configuración de host (verifique esto ingresando ifconfig
en la máquina host):
vnic1: ...
...
inet 10.37.129.2 netmask 255.255.255.0 broadcast 10.37.129.255
Así que configure el invitado de VM de la siguiente manera:
En la máquina NAT-host, habilite el reenvío en /etc/sysctl.conf:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
y reinicie el host.
En la máquina NAT-host (con una IP de ejemplo de 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 haya 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
nc -l -4 11111
. Ahora, en un tercer host en su red física, ingrese nc 192.168.0.2 22222
.Después de un reinicio, debe iniciar pf nuevamente. Si desea habilitar pf permanentemente, consulte mis otras respuestas relacionadas con pf .
Después de una actualización del sistema o una mejora, algunos de los archivos originales anteriores pueden haber sido reemplazados y debe volver a aplicar todos los cambios.
Sudhir norte