Как установить метрики интерфейса для конкретного маршрута в Mac OS X

обновление: я нашел отличный ответ на часть моей проблемы здесьhttps://superuser.com/a/525592/169461. Я смог установить приоритет для интерфейса en1 (wifi). Однако это не является достаточно определенным, так как это теперь направит весь трафик через en1. Я должен иметь возможность установить метрики специально для маршрута к моему шлюзу и для маршрута К моему NAS. Так что если вы знаете, как делать это на Mac, пожалуйста, дайте мне знать.


старое название: оптимизация маршрутизации на машина с двумя способами добраться до шлюза

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

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

*UPDATE2: пожалуйста, обратите внимание, что по запросу я разместил полную таблицу маршрутизации снова. Этот после того, как я поменял приоритеты 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

UPDATE3: как было предложено в комментариях, я попытался добавить статический маршрут, который очень специфичен, и он иногда работает, он просто не сохраняется в 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, я обнаружил, что это, по крайней мере, частично связано с длительным временем ответа. существует огромная разница во времени отклика:

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?

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

13
задан Community
22.11.2022 3:14 Количество просмотров материала 3397
Распечатать страницу

1 ответ

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

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

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

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

  • любое другое устройство в сети, которому требуется доступ к NAS, также может иметь IP-адрес в этой подсети и сможет взаимодействовать с ним. Специальная маршрутизация не требуется. Он даже может иметь два IP адреса, один на 0.0 NET и на 1.0, а пока только один из них шлюз заданный.

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

0
отвечен jbg 2022-11-23 11:02

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх