Como definir métricas de interface específicas de rota no Mac OS X

1

UPDATE: encontrei uma ótima resposta para parte do meu problema aqui link . Consegui definir prioridade para interface en1 (wifi). No entanto, isso não é específico o suficiente, já que agora roteará todo o tráfego por en1. Eu preciso ser capaz de definir as métricas especificamente para uma rota para o meu gateway e para uma rota para o meu NAS. Então, se você sabe como fazer isso em um Mac, por favor me avise.

OLD TITLE: otimize o roteamento em uma máquina com duas maneiras de acessar o gateway

Estou tentando otimizar o tempo de resposta entre o meu iMac, um NAS e um cablemodem. O iMac está situado no meu escritório e conectado à internet através de Wi-Fi para o roteador 1 em 192.168.0.1 (Technicolor cablemodem) localizado na sala de estar.

A dificuldade aqui é que eu tenho um NAS em 192.168.0.100, que eu quero estar sempre acessível. Ele também está situado no escritório, então eu conectei-o à internet usando um antigo roteador Linksys (roteador 2) com DD-WRT, usando-o como uma ponte sem fio. O endereço desse roteador é 192.168.0.2. Claro que tendo um roteador extra no escritório eu também conectei o iMac e o NAS a ele usando cabos. Isso tudo funciona bem. O NAS é acessível através do roteador 2 na interface en0 *. A conexão sem fio está em en1. Aqui está a saída relevante de netstat -nr .

* UPDATE2: observe que, mediante solicitação, publiquei novamente a tabela de roteamento completa. Isso é depois que eu inverti as prioridades de en0 e en1 (veja o UPDATE acima). Então agora o NAS é alcançado através de en1 e o gateway padrão através de en1 também. O ponto ainda é o mesmo, como posso fazer o OSX usar a interface mais rápida para cada rota?

Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.0.1        UGSc           75        0     en1
default            192.168.0.1        UGScI           1        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              5      285     lo0
169.254            link#5             UCS             1        0     en1
169.254            link#4             UCSI            0        0     en0
169.254.179.33     0:10:95:de:ad:7    UHLSW           0        0     en1   1171
192.168.0          link#5             UCS             2        0     en1
192.168.0          link#4             UCSI            3        0     en0
192.168.0.1/32     link#5             UCS             1        0     en1
192.168.0.1        link#4             UHLWIir         1        0     en0
192.168.0.1/32     link#4             UCSI            1        0     en0
192.168.0.1        cc:35:40:eb:57:e3  UHLWIir        77       24     en1   1089
192.168.0.11/32    link#5             UCS             1        0     en1
192.168.0.11       4:54:53:f:5d:a7    UHLWI           0        1     en0   1090
192.168.0.11       4:54:53:f:5d:a7    UHLWIi         22     2046     lo0
192.168.0.100      0:90:a9:b6:3c:5a   UHLWI           0        0     en0   1184
192.168.0.100      58:6d:8f:d7:d3:3e  UHLWIi          3       63     en1   1184
192.168.0.101/32   link#4             UCS             0        0     en0
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        1     en0
192.168.0.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        4     en1

UPDATE3: Como sugerido nos comentários, tentei adicionar uma rota estática que é muito específica e funciona algumas vezes; ela simplesmente não é persistida pelo Mac OS X: sudo route add 192.168.0.100/32 -iface en0 . O que leva à seguinte entrada na tabela de roteamento:

192.168.0.100/32   3c:7:54:34:5a:4b   ULSc            0        0     en0

Saída de ifconfig :

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
ether 3c:07:54:34:5a:4b 
inet6 fe80::3e07:54ff:fe34:5a4b%en0 prefixlen 64 scopeid 0x4 
inet 192.168.0.101 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=1<PERFORMNUD>
media: autoselect (1000baseT <full-duplex,flow-control>)
status: active
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 04:54:53:0f:5d:a7 
inet6 fe80::654:53ff:fe0f:5da7%en1 prefixlen 64 scopeid 0x5 
inet 192.168.0.11 netmask 0xffffff00 broadcast 192.168.0.255
nd6 options=1<PERFORMNUD>
media: autoselect
status: active

Agora notei que a rede no iMac às vezes é lenta para responder e parece haver soluços na conexão. Usando o ping, descobri que isso é devido, pelo menos em parte, aos longos tempos de resposta. há uma enorme variação nos tempos de resposta:

PING 192.168.0.1 (192.168.0.1): 56 data bytes
64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=67.161 ms
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=86.217 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=5.536 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=26.307 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=47.608 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=67.585 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=64 time=89.349 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=64 time=8.408 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=64 time=30.391 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=64 time=51.700 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=64 time=72.978 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=64 time=94.858 ms

E tudo isso enquanto traceroute diz:

1  192.168.0.1 (192.168.0.1) 36 bytes to 192.168.0.101  88.989 ms  1.824 ms  1.705 ms

Então, eu suspeito que alguns dos pacotes para o gateway da Internet são roteados através da ponte sem fio (mais lenta) do roteador 2 no en0 e alguns são roteados pelo en1, que é rápido o suficiente. Obviamente, meu próximo passo foi tentar definir uma rota estática para o gateway executando:

sudo route add -host 192.168.0.1 -iface en1

O que achei que forçaria qualquer conexão com o gateway a passar pela interface sem fio em en1. Sem essa sorte, no entanto: quando faço isso, perco a conectividade com a Internet no iMac, que nem é restaurado quando eu altero a rota de volta.

Eu não sou especialista em configurar rotas manualmente, então a pergunta é: O que estou fazendo errado aqui e o que eu tenho que fazer para obter o iMac para rotear todo o tráfego (exceto pacotes para 192.168.0.2 e 192.168.0.100 ) até en1?

Eu acho que uma maneira seria definir diferentes sub-redes, mas eu ainda quero que todas as máquinas sejam acessadas de qualquer lugar. Também não tenho certeza de como eu faria isso. Outras dicas sobre como otimizar o tráfego também seriam apreciadas.

    
por titusn 20.12.2015 / 13:36

1 resposta

0

A solução mais simples para isso não envolve ter que definir (e encontrar uma maneira de persistir) rotas estáticas.

Recomendamos que você use uma sub-rede diferente (na mesma rede física) para armazenamento.

  • Desative o DHCP em en0 no seu Mac e configure-o para ter um IP estático nessa nova sub-rede em en0 , sem nenhum gateway definido nessa interface. Digamos, por exemplo, 192.168.1.1 com a máscara de sub-rede 255.255.255.0.

  • Dê ao NAS um IP nesta sub-rede também. Digamos, por exemplo, 192.168.1.2 com a máscara de sub-rede 255.255.255.0.

  • Qualquer outro dispositivo na rede que precise acessar o NAS também pode ter um IP nessa sub-rede e poderá se comunicar com ele. Nenhum roteamento especial é necessário. Pode até ter dois endereços IP, um na rede 0.0 e outro na rede 1.0, desde que apenas um deles tenha um gateway atribuído.

  • O seu Mac terá agora uma rota para o gateway ( en1 , Wi-Fi) e uma rota para o NAS ( en0 , Ethernet).

por 30.12.2015 / 10:30