¿Cómo asociar una ruta con una interfaz?

0

Tengo una Mac con dos interfaces de red, conectadas a redes diferentes. En aras de la discusión, digamos que uno está conectado a una red privada y el otro a Internet.

Comprendo que puedo usar el panel de preferencias del sistema de Redes para colocar la interfaz de Internet más alta en la "orden de servicio" que en la red privada y que, al hacerlo, su "Enrutador" se convertirá en la puerta de enlace predeterminada del sistema (y la el "Router" de otra interfaz se ignora).

Sin embargo, esto obviamente hace que el tráfico todo se enrute a través de Internet (excepto la subred específica de la red privada a la que la máquina está conectada directamente). Quiero anular este comportamiento para la red privada completa , enrutando todo el tráfico privado a través de la interfaz apropiada.

¿Cuál es la "forma de Apple" de lograr esto? La simple ejecución de sudo route add ... solo crea la ruta temporalmente, mientras que quiero asociarla con la interfaz de alguna manera permanente (es decir, que sobrevivirá al estado de cambio de la interfaz o al reinicio del sistema).

Supongo que la solución involucrará el lanzamiento y la invocación de un script después de que haya surgido la interfaz ... ¡¿pero cómo?

    
pregunta eggyal 19.11.2014 - 13:29

1 respuesta

0

1 - Aquí hay un copiado solución pero en desuso:

En primer lugar, tienes que ser un administrador local.

Abra un terminal y cambie al directorio de StartupItems

cd /Library/StartupItems

Luego cree un nuevo directorio con privilegios de raíz, por ejemplo. AddRoutes y cambiar en él

sudo mkdir ./AddRoutes
cd ./AddRoutes

Ahora tienes que crear y editar el script de bash

sudo touch ./AddRoutes
sudo nano ./AddRoutes

Pegue las siguientes líneas en el script de bash y adáptelo a su red

#!/bin/sh

# Set static routing tables

. /etc/rc.common

StartService ()
{
sleep 10
ConsoleMessage "Adding Static Routing Table"
sudo /sbin/route add -net 10.0.0.0 -netmask 255.0.0.0 -gateway w.x.y.z
}

StopService ()
{
return 0
}

StopService ()
{
return 0
}

RestartService ()
{
return 0
}

RunService "$1"

Cuando termines con el script, guárdalo.

Luego crea el plist correspondiente.

sudo touch StartupParameters.plist
sudo nano StartupParameters.plist

Cuando creó el archivo plist, pegue las siguientes líneas en él.

{
Description = "Add static routing tables";
Provides = ("AddRoutes");
Requires = ("Network");
OrderPreference = "None";
}

Cuando termines el archivo plist, guárdalo.

Finalmente tienes que configurar los derechos de acceso

sudo chmod 755 /Library/StartupItems/AddRoutes/*

Al final tienes que reiniciar y ahora tus rutas estáticas permanentes están configuradas.

Puedes verificar con lo siguiente

netstat -nr

2: aquí puede encontrar una solución más actualizada que incluye un pequeño programa:

staticroute

  

Las rutas estáticas configuradas sobreviven al reinicio y se agregarán y eliminarán automáticamente a medida que las interfaces de red suban y bajen.

    
respondido por el klanomath 19.11.2014 - 21:46

Lea otras preguntas en las etiquetas