4 votos

Reenvío de puertos de OS X El Capitan a Parallels VM usando pfctl

Tengo Parallels Desktop 11, que no soporta el reenvío de puertos a las VMs (sólo la versión Pro lo soporta). Así que estoy intentando usar pfctl para reenviar puertos a mi VM de Parallels.

He seguido esto responder para configurar el reenvío de puertos. El reenvío se activa con sysctl 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 la VM. Puede reenviar con éxito el puerto x al puerto y en 127.0.0.1 pero no puede reenviar el puerto x del Mac al puerto x en la VM de Parallels.

¿Qué puede estar fallando? ¿Es Parallels el que está dejando caer los paquetes, etc.?

2voto

klanomath Puntos 19587

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.

  1. 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
  2. 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.

  3. 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
  4. 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"
  5. 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
  6. Habilitar pf con:

    sudo pfctl -e -f /etc/pf.conf
  7. 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.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X