1

ОБНОВЛЕНИЕ: я нашел отличный ответ на часть моей проблемы здесь https://superuser.com/a/525592/169461. Я был в состоянии установить приоритет для интерфейса en1 (Wi-Fi). Однако это не является достаточно конкретным, поскольку теперь он будет направлять весь трафик через en1. Мне нужно иметь возможность устанавливать метрики специально для маршрута к моему шлюзу и для маршрута к моему NAS. Так что, если вы знаете, как сделать это на Mac, пожалуйста, дайте мне знать.


СТАРЫЙ ЗАГОЛОВОК: оптимизируйте маршрутизацию на машине двумя способами, чтобы добраться до шлюза

Я пытаюсь оптимизировать время отклика между моим iMac, NAS и кабельным модемом. IMac находится в моем офисе и подключен к Интернету через Wi-Fi к маршрутизатору 1 по адресу 192.168.0.1 (кабельный модем Technicolor), расположенный в гостиной.

Трудность заключается в том, что у меня есть NAS на 192.168.0.100, к которому я хочу быть доступным всегда. Он также находится в офисе, поэтому я подключил его к Интернету, используя старый маршрутизатор Linksys (маршрутизатор 2) с DD-WRT, используя его в качестве беспроводного моста. Адрес этого маршрутизатора 192.168.0.2. Конечно, имея дополнительный маршрутизатор в офисе, я также подключил к нему iMac и NAS с помощью кабелей. Это все отлично работает. Доступ к NAS возможен через маршрутизатор 2 по интерфейсу en0 *. Беспроводное соединение на en1. Вот соответствующий вывод netstat -nr .

* ОБНОВЛЕНИЕ2: обратите внимание, что по запросу я снова разместил полную таблицу маршрутизации. Это после того, как я поменял приоритеты en0 и en1 (см. ОБНОВЛЕНИЕ выше). Так что теперь NAS доступен через en1 и шлюз по умолчанию через en1. Суть все та же, как я могу заставить OSX использовать самый быстрый интерфейс для каждого маршрута?

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

ОБНОВЛЕНИЕ 3: Как предложено в комментариях, я попытался добавить статический маршрут, который является очень специфичным, и иногда он работает, но он не сохраняется в Mac OS X: sudo route add 192.168.0.100/32 -iface en0 . Что приводит к следующей записи в таблице маршрутизации:

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

Вывод 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

Теперь я заметил, что сеть в iMac иногда вяло реагирует, и в соединении, похоже, возникают сбои. Используя пинг, я обнаружил, что это, по крайней мере, частично из-за длительного времени отклика. время отклика сильно варьируется:

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

И все это пока traceroute говорит:

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

Поэтому я подозреваю, что некоторые пакеты для интернет-шлюза маршрутизируются через (более медленный) беспроводной мост маршрутизатора 2 на en0, а некоторые - на en1, что достаточно быстро. Очевидно, что моим следующим шагом было попытаться установить статический маршрут к шлюзу, выполнив:

sudo route add -host 192.168.0.1 -iface en1

Что, я думал, заставит любое соединение со шлюзом проходить через беспроводной интерфейс на en1. Однако не повезло: когда я это делаю, я теряю интернет-соединение на iMac, которое даже не восстанавливается, когда я изменяю маршрут обратно.

Я не являюсь экспертом в настройке маршрутов вручную, поэтому возникает вопрос: что я делаю здесь неправильно и что мне нужно сделать, чтобы iMac направил весь трафик (кроме пакетов на 192.168.0.2 и 192.168.0.100) через en1?

Я предполагаю, что одним из способов будет определение разных подсетей, но я все же хочу, чтобы каждая машина была доступна из любой точки мира. Также я не уверен, как бы я поступил об этом. Другие советы по оптимизации трафика также приветствуются.

1 ответ1

0

Простейшее решение этой проблемы не предполагает определения (и поиска способа сохранения) статических маршрутов.

Я бы порекомендовал вам использовать другую подсеть (в той же физической сети) для хранения.

  • Отключите DHCP на en0 на вашем Mac и установите для него статический IP-адрес в этой новой подсети на en0 , без шлюза, определенного на этом интерфейсе. Скажем, например, 192.168.1.1 с маской подсети 255.255.255.0.

  • Дайте NAS IP-адрес и в этой подсети. Скажем, например, 192.168.1.2 с маской подсети 255.255.255.0.

  • Любое другое устройство в сети, которому необходимо подключиться к NAS, также может иметь IP-адрес в этой подсети и сможет связываться с ним. Никакой специальной маршрутизации не требуется. Он может даже иметь два IP-адреса, один в сети 0,0 и один в сети 1,0, если только одному из них назначен шлюз.

  • У вашего Mac теперь будет один маршрут к шлюзу (en1 , Wi-Fi) и один маршрут к NAS (en0 , Ethernet).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .