Como direcionar a rota IP através de uma interface específica no OS X?

31

Estou em um mac e tentando rotear um endereço específico através de um gateway específico na minha conexão Wi-Fi.

Estou usando:

route add -host 54.81.143.201 192.168.15.1

Às vezes isso funciona, outras vezes não. O que eu descobri é que a interface escolhida é diferente a cada vez. Não precisa ser en0 para funcionar

netstat -nr output quando não funciona:

54.81.143.201      192.168.15.1       UGHS            1       89     en5

É quando funciona: (nota en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

Por que estou fazendo isso? Porque nossa empresa tem um proxy no qual o HipChat não funciona. Então eu estou roteando o tráfego do hipchat através de uma rede wifi aberta enquanto ainda estou no meu trabalho ethernet.

EDITAR:

Eu também tentei adicionar a entrada usando apenas a interface

route add -host 54.81.143.201 -interface en0

54.81.143.201      78:31:c1:c7:52:74  UHS             0        2     en0

HipChat não consegue se conectar.

EDIT 2: Alguém pediu toda a minha tabela de roteamento, aqui está hoje. Note que 54.81.143.201 está agora ligado a en3 e não en0

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.7.90.1          UGSc           31        6     en3
10.7.90/24         link#4             UCS             4        0     en3
10.7.90.1          0:23:ac:3d:db:c2   UHLWIir        16        0     en3   1200
10.7.90.44         40:6c:8f:19:4a:bb  UHLWI           0        3     en3    946
10.7.90.63         127.0.0.1          UHS             0        0     lo0
54.81.143.201      192.168.15.1       UGHS            0        0     en3
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3      209     lo0
169.254            link#4             UCS             1        0     en3
169.254.255.255    0:23:ac:3d:db:c2   UHLSW           0        0     en3
    
por Sean256 19.05.2014 / 17:41

8 respostas

27

Tente:

route add -host 54.81.143.201 -interface en0
    
por 19.05.2014 / 18:10
3

Como outros indicaram, isso é na verdade 3 problemas.

  1. Sua interface sem fio parece estar mudando entre en0, en3 e en5.

    No meu MacBook Air, en0 é sempre sem fio; Thunderbolt-to-Ethernet é sempre en3, e USB-to-Ethernet é sempre en5. Mas se você conectar um adaptador a uma porta diferente no seu Mac, o nome da NIC será alterado. Você precisa resolver isso primeiro. Certifique-se de que seu wireless sempre tenha o mesmo nome. Caso contrário, quando você inserir o comando de rota estática, se não houver nenhum NIC conectado ao local en0 , o comando (obviamente) falhará com um "erro de endereço" (o endereço físico não possui um link).

    Da mesma forma, verifique se o adaptador está sempre se conectando ao mesmo SSID. O endereço do gateway obviamente tem que ser válido para a sub-rede, e redes WiFi diferentes terão sub-redes diferentes. Isso pode causar outro tipo de erro.

    Você não especificou se a rede sem fio é sua única conexão de rede. Tendo em conta o exposto, acho que não ...? Isso e a rede virtual devido ao VMware ou Parallels podem causar complexidades adicionais. (Por exemplo, se as duas redes conectadas usam o mesmo espaço IP ... As máquinas virtuais geralmente são conectadas e têm seus próprios IPs / rotas / links ...) A postagem da topologia da rede ajudaria.

  2. Depois disso, tente sudo route add -host 54.81.143.201 -iface en0 ou sudo ipfw . Se você não tiver certeza do nome do adaptador, poderá especificar seu endereço MAC, desta forma: sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a

    Relacionado: link

  3. Se você reiniciar, isso pode não persistir. Você precisará lidar com isso separadamente.

por 12.08.2014 / 22:21
2

Eu consegui adicionar uma rota a uma interface usando a opção -link para especificar um endereço MAC.

route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]

Isso enviará tráfego para 54.81.143.201 da interface apropriada.

Você tem dois endereços de host 192.168.15.* separados, um para cada interface, certo? Senão, você pode enviar tráfego para fora de qualquer interface, mas o tráfego retornará no IP de origem que os pacotes tiverem.

    
por 20.05.2014 / 08:08
2

Esta solução funciona no último MacOS 10.12 (Sierra). Aqui está o Gist .

#!/bin/bash

# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR='ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*//p''
TO='echo -n ${TOADDR//[[:space:]]}'

echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -host $1 $wifi_router -ifp $wifi_address -ifa $TO -static

echo ""
echo "ROUTE ADDED:"
route get $1

Use assim:

> sudo ./route_wifi.sh IP_ADDRESS

Assume-se que a interface wifi é: en1 .

Não se esqueça de colocar os valores corretos para as variáveis wifi_router e wifi_address . Observe o formato wifi_address , que é: nome da interface de rede ': ' endereço MAC da interface com '. ' delimitadores . Claro que a maioria das informações necessárias podem ser analisadas a partir da saída do comando ifconfig , mas eu sou muito preguiçoso para isso =)

    
por 21.08.2017 / 11:17
1

O comando OS X route está documentado aqui . O parâmetro -ifscope e seu valor permitem que você especifique uma rota vinculada à interface.

Isto, no entanto, não é o que você quer. Você precisa consertar suas redes para que seus intervalos de IP sejam exclusivos. Além disso, as métricas de interface (também conhecidas como prioridades) afetam qual interface é escolhida de outra maneira igualmente oportuna.

    
por 19.05.2014 / 22:08
0
sudo route -n add -net 54.81.143.201/32 192.168.15.1
    
por 31.12.2015 / 14:49
-1

Então, o servidor de fornecedores com o qual você está tentando falar sobre o serviço "HipChat" que você afirma é 54.81.143.201? Nesse caso, eu faria uma entrada de roteamento para 54.81.143.0 255.255.255.0 para obter um intervalo maior. Talvez, ao usar o software, você não esteja sempre falando com esse servidor específico, mas com um cluster deles na mesma sub-rede 54.81.143.0/24. Além disso, certifique-se de que suas métricas de rota estejam corretas ao criar uma nova entrada. Se você criar uma rota para a 54.81.143.0/24 192.168.15.1 Métrica 20 En5, mas também tiver uma rota para 0.0.0.0/0 10.7.90.1 Métrica 10 En0. O computador irá ignorar sua nova entrada e continuar o tráfego de roteamento através da rota padrão (via En0), porque é mais preferível. Eu apenas percorri tudo isso e queria apontar isso. Felicidades!

    
por 28.10.2015 / 16:24
-1

Você deve tentar adicionar o nome da NIC:

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

Isso funciona para mim no CentOS.

    
por 19.05.2014 / 18:16

Tags