Cómo habilitar el enrutamiento en OS X El Capitan

Tengo una máquina virtual Linux VMware (invitado) configurada con un adaptador NAT en una subred 192.168.56.0. Su dirección IP es 192.168.56.128 y mi Mac (host) tiene 192.168.56.1. La puerta de enlace predeterminada del invitado se establece automáticamente en 192.168.56.2 y puede hacer ping a Google desde el invitado. La IP Wi-Fi del host es 192.168.0.2,

Configuré mi enrutador Wi-Fi con la siguiente tabla de enrutamiento para reenviar paquetes de 192.168.56.0 a 192.168.0.2 (mi Mac)

pi@raspberrypi ~ $ route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.4.1      0.0.0.0         UG    0      0        0 eth0
172.16.4.0      *               255.255.252.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 wlan0
192.168.56.0    192.168.0.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.57.0    192.168.0.2     255.255.255.255 UGH   0      0        0 wlan0

Pero no puedo hacer ping al invitado desde ningún otro dispositivo en la red Wi-Fi (192.168.0.0). Entonces, es obvio que mi Mac con OS X El Capitan no está reenviando los paquetes de 192.168.0.0 a 192.168.56.0

Respuestas (2)

Su enrutador no es responsable de enrutar paquetes de 192.168.0.0 a 192.168.56.0, pero el host de VM sí lo es. Sin embargo, debe mantener la ruta estática 192.168.56.0 -> 192.168.0.2 en el enrutador. No sé cuál es el propósito de la segunda ruta 192.168.57.0 -> 192.168.0.2, probablemente un segundo adaptador NAT en el host.

Para llegar a su VM desde otros dispositivos OS X en su red 192.168.0.0, debe configurar una ruta estática en cada una de las máquinas 192.168.0.x al host de VM:

sudo route add -net 192.168.56.0  192.168.0.2

Para hacer que esta ruta sea persistente, agregue un demonio de lanzamiento en cada una de las máquinas:

sudo nano /Library/LaunchDaemons/local.staticroute.vm.plist

con el contenido

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>local.staticroute.vm</string>
    <key>ProgramArguments</key>
    <array>
      <string>route</string>
      <string>add</string>
      <string>-net</string>
      <string>192.168.56.0</string>
      <string>192.168.0.2</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
  </dict>
</plist>

guarde el archivo (ctrl-O) y salga de nano (ctrl-X).

Cargue el demonio de lanzamiento con:

sudo launchctl load -w /Library/LaunchDaemons/local.staticroute.vm.plist

Si los otros dispositivos en la red 192.168.0.0 son hosts Linux/Windows/Android, use los comandos respectivos para agregar una ruta:

Windows (persistente):

route add -p 192.168.56.0 mask 255.255.255.0 192.168.0.2 

Linux:

route add -net 192.168.56.0 netmask 255.255.255.0 gw 192.168.0.2

Para agregar una ruta persistente en Linux, consulte la documentación de su distribución de Linux.

¿Qué es este xml? ¡Este es el uso más enfermizo de XML que he encontrado!
Esto es para llegar desde otras Mac en la red 192.168.0.0
¡No puedo acceder a mi VM incluso desde mi enrutador!
Sí, mi host de VM es responsable de enrutar los paquetes de 192.168.0.0a 192.168.56.0. Entonces, ¿cómo hacer que el host (Mac) haga eso?
@neckTwi Implemente mi solución. Informe de nuevo si todavía tiene problemas. Lo probé en un entorno similar al tuyo y funciona. Cambie la puerta de enlace predeterminada en la máquina virtual de Linux a 192.168.56.1 (porque esta es la dirección interna de la puerta de enlace del host).
Sí, he implementado su solución. Configuré gw predeterminado de vm en 192.168.56.1 (MacHost). ruta estática agregada a 192.168.56.0 a través de 192.168.0.2 en el enrutador. y lo hizo sudo route add -net 192.168.56.0 192.168.0.2en el MacHost. No puedo hacer ping al enrutador desde la máquina virtual.
@neckTwi Debe agregar la ruta (y/o el demonio de lanzamiento) en cada host en su red 192.168.0.0 excepto el host de VM. Y elimine la ruta del host de VM con sudo route delete -net 192.168.56.0 192.168.0.2cualquier lista de enrutamiento. El host de VM es el enrutador. ¡No necesita una ruta extra! ¡El host de VM es su Mac! La VM es un host, pero no es el host de la VM . La VM es un cliente en el host de VM. ¡No has leído bien mi respuesta! ¡Y por favor, no mezcle/redefina las convenciones comunes de nomenclatura!
No tengo ningún otro dispositivo conectado al wifi excepto mi Mac. Todo lo que quiero hacer es hacer ping a la máquina virtual desde el enrutador. ¡Y la VM ni siquiera puede hacer ping a 192.168.0.2 (IP de WiFi del host)! Gracias por tu esfuerzo por ayudar.

Esto no sobrevivió al reinicio para mí en 10.11. Seguí estas instrucciones :

sudo networksetup -setadditionalroutes Wi-Fi 192.168.56.0 255.255.255.0 192.168.0.2

donde Wi-Fise encuentra usando networksetup -listallnetworkservices.