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.