Я на Mac и пытаюсь маршрутизировать определенный адрес через определенный шлюз на моем Wi-Fi-соединении.
Я использую:
route add -host 54.81.143.201 192.168.15.1
Иногда это будет работать, а иногда - нет. Я обнаружил, что интерфейс, который он выбирает, каждый раз отличается. Это не должно быть en0
работать
netstat -nr
вывод, когда он не работает:
54.81.143.201 192.168.15.1 UGHS 1 89 en5
Это когда это работает: (примечание en0)
54.81.143.201 192.168.15.1 UGHS 0 1 en
Почему я это делаю? Потому что у нашей компании есть прокси, на котором HipChat не работает. Таким образом, я маршрутизирую трафик hipchat через открытую сеть Wi-Fi, все еще находясь в моей сети Ethernet.
РЕДАКТИРОВАТЬ:
Я также попытался добавить запись, используя только интерфейс
route add -host 54.81.143.201 -interface en0
54.81.143.201 78:31:c1:c7:52:74 UHS 0 2 en0
HipChat не может подключиться.
РЕДАКТИРОВАТЬ 2: Кто-то попросил всю мою таблицу маршрутизации, вот она сегодня. Обратите внимание, что 54.81.143.201 теперь связан с en3, а не 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
en3
это правильно. 192.168.15.1 не доступен через любой другой интерфейс. Единственный способ достичь 192.168.15.1 в этой таблице маршрутизации - это маршрут по умолчанию, верно? (Откровенно говоря, звучит так, будто вы понятия не имеете, что делаете. Похоже, вы удивлены, что система не делает невозможного.)Ответы:
Пытаться:
источник
Как указали другие, это на самом деле 3 проблемы.
Ваш беспроводной интерфейс, кажется, меняется между en0, en3 и en5.
На моем MacBook Air en0 всегда беспроводная; Thunderbolt-to-Ethernet всегда en3, а USB-to-Ethernet всегда en5. Но если вы подключите адаптер к другому порту на вашем Mac, то имя его сетевой карты изменится. Вы должны решить это в первую очередь. Убедитесь, что ваше беспроводное устройство всегда имеет одно и то же имя. В противном случае, когда вы вводите команду статического маршрута, если к этому
en0
местоположению не подключен сетевой адаптер , команда (очевидно) завершится с ошибкой адреса (физический адрес не имеет связи).Также убедитесь, что адаптер всегда подключается к одному и тому же SSID. Очевидно, адрес шлюза должен быть действительным для подсети, и разные сети WiFi будут иметь разные подсети. Это может вызвать другой тип ошибки.
Вы не указали, является ли беспроводное соединение единственным сетевым подключением. Учитывая вышесказанное, я думаю, нет ...? Это и виртуальные сети из-за VMware или Parallels могут вызвать дополнительные сложности. (Например, если обе подключенные сети используют одно и то же пространство IP-адресов ... Виртуальные машины часто имеют мосты и имеют свои собственные IP-адреса / маршруты / ссылки ...) Поможет размещение топологии сети.
Как только это будет сделано, попробуйте либо
sudo route add -host 54.81.143.201 -iface en0
илиsudo ipfw
. Если вы не уверены в названии адаптера, вы можете указать его MAC-адрес, например:sudo route add -host 54.81.143.201 -link 14:10:9f:e7:fd:0a
Связанный: https://discussions.apple.com/thread/5049994?searchText=policy%20route
Если вы перезагрузитесь, это может не сохраняться. Вам нужно будет справиться с этим отдельно.
источник
источник
Я смог добавить маршрут через интерфейс, используя
-link
опцию для указания MAC-адреса.route add -host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]
Это отправит трафик на
54.81.143.201
соответствующий интерфейс.У вас есть два отдельных
192.168.15.*
адреса хоста, по одному для каждого интерфейса, верно? Иначе, вы можете отправлять трафик из любого интерфейса, но трафик будет возвращаться на тот IP-адрес источника, который есть у пакетов.источник
Это решение работает на последней версии MacOS 10.12 (Sierra). Вот суть .
Используйте как это:
Предполагается, что интерфейс Wi-Fi: en1 .
Не забудьте поставить правильные значения для переменных wifi_router и wifi_address . Обратите внимание на формат wifi_address , а именно: имя сетевого интерфейса ' : ' интерфейс mac адрес с ' . " Разделители . Конечно, большая часть необходимой информации может быть проанализирована из вывода команды ifconfig , но я просто слишком ленив для этого =)
источник
Команда OS X
route
задокументирована здесь .-ifscope
Параметр и его значение позволяет указать интерфейс, связанный маршрут.Это, однако, не то, что вы хотите. Вы должны исправить свои сети так, чтобы их диапазоны IP были уникальными. Помимо этого, метрики интерфейса (или приоритеты) влияют на то, какой интерфейс выбирается из других в равной степени подходящих вариантов.
источник
Вот как можно перевести пользовательское имя «Wi-Fi» в любое имя устройства (например, en0, en1, en9, ...), которое MacOS назначило в то время.
Вы можете поместить эти функции в определенный скрипт или просто оставить их в своем
.bash_profile
.Затем просто позвоните,
get_int_name 'Wi-Fi'
чтобы получить назначенное имя устройства.Например:
источник
Таким образом, сервер поставщика, с которым вы пытаетесь поговорить об услуге «HipChat», по вашему мнению, 54.81.143.201? В этом случае я бы сделал запись маршрутизации для 54.81.143.0 255.255.255.0, чтобы увеличить диапазон. Может быть, при использовании программного обеспечения вы не всегда общаетесь с этим конкретным сервером, а кластером из них в одной подсети 54.81.143.0/24. Кроме того, дополнительно убедитесь, что ваши метрики маршрута правильны при создании новой записи. Если вы создаете маршрут к 54.81.143.0/24 192.168.15.1 Metric 20 En5, но также есть маршрут к 0.0.0.0/0 10.7.90.1 Metric 10 En0. Компьютер проигнорирует вашу новую запись и продолжит маршрутизацию трафика по маршруту по умолчанию (через En0), потому что это более предпочтительно. Я просто просмотрел это и хотел указать на это. Ура!
источник
Вы должны попробовать добавить имя NIC:
Это работает для меня в CentOS.
источник