Como associar uma rota a uma interface?


0

Eu tenho um Mac com duas interfaces de rede, conectado a redes diferentes. Por uma questão de argumentação, digamos que um esteja conectado a uma rede privada e o outro à Internet.

Eu entendo que posso usar o painel de preferências do sistema Redes para colocar a interface da Internet mais alta na "ordem de serviço" do que na rede privada e que, ao fazer isso, seu "Roteador" se tornará o gateway padrão do sistema. Router "é ignorado).

No entanto, isso obviamente resulta em todos tráfego sendo roteado pela Internet (exceto a sub-rede específica da rede privada à qual a máquina está diretamente conectada). Eu quero substituir esse comportamento para o inteira rede privada, encaminhando todo o tráfego privado através da interface apropriada.

Qual é a "maneira da Apple" de realizar isso? Simplesmente executando sudo route add ... cria apenas a rota temporariamente, enquanto eu quero associá-la à interface de alguma forma permanente (ou seja, que sobreviverá ao estado de alteração da interface ou à reinicialização do sistema).

Eu presumo que a solução envolva o launchd invocando um script depois que a interface aparecer… mas como ?!


Por favor, adicione algumas informações sobre a "rede privada inteira" e como ela difere da "rede privada de sub-rede específica".
— klanomath

@klanomath: Para fins de argumentação, suponha que "toda a rede privada" seja 10/8 e a "sub-rede específica" seja 10.11.12 / 24.
— eggyal

Só estou perguntando porque nenhum tráfego para redes privadas é roteado com sucesso pela Internet (exceto quando a VPN está envolvida) por favor, verifique . Portanto, algumas informações básicas sobre sua infra-estrutura de rede estão faltando.
— klanomath

@klanomath: É exatamente por isso que eu preciso de uma rota estática para garantir que o tráfego da rede privada seja roteado pela interface de rede privada.
— eggyal

você checou isso: rota estática
— klanomath

Respostas:


0

1 - Aqui está um copiado solução mas depreciado:

Primeiro de tudo, você tem que ser um administrador local.

Abra um terminal e mude para o diretório StartupItems

cd /Library/StartupItems

Em seguida, crie um novo diretório com privilégios de root, por exemplo, AddRoutes e mude para ele

sudo mkdir ./AddRoutes
cd ./AddRoutes

Agora você tem que criar e editar o script bash

sudo touch ./AddRoutes
sudo nano ./AddRoutes

Cole as seguintes linhas no script bash e adaptá-lo para sua rede

#!/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"

Quando você terminar o script, salve-o.

Em seguida, crie o plist correspondente.

sudo touch StartupParameters.plist
sudo nano StartupParameters.plist

Quando você criou o arquivo plist, cole as seguintes linhas nele.

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

Quando você terminar o arquivo plist, salve-o.

Finalmente você tem que definir os direitos de acesso

sudo chmod 755 /Library/StartupItems/AddRoutes/*

No final, você precisa reiniciar e agora suas rotas estáticas permanentes estão definidas.

Você pode verificar com o seguinte

netstat -nr

2 - Aqui você pode encontrar uma solução mais atualizada envolvendo um pequeno programa:

rota estática

As rotas estáticas configuradas sobrevivem a uma reinicialização e serão automaticamente adicionadas e removidas à medida que as interfaces de rede sobem e descem.


Obrigado. Eu já tinha visto essa solução antes. Contudo, StartipItems foi preterido por um tempo em favor de launchd. Existe uma recomendação atual?
— eggyal

Funciona de forma semelhante. Você provavelmente ainda precisa do mesmo script de shell. Deixe-me dar uma olhada...
— klanomath

Outro problema é que o script precisará ser acionado sempre que a interface aparecer, não apenas quando a máquina for reinicializada.
— eggyal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.