Вопрос: Определение постоянного статического маршрута в Mac OS X


Как определить статический маршрут в MacOS X, который сохраняется при перезагрузке? Единственное предложение, которое я нашел в Google, советует настроить службу запуска для запуска при загрузке, что кажется ужасным взломом (например, если вы перезагрузите сетевой перезапуск без перезагрузки)?

Чтобы настроить маршрут, мне нужно временно, я могу запустить следующее:

route add -net ${network} ${gateway} ${netmask}

Как я могу сделать это упорством?


5
2018-03-22 14:20


Источник




Ответы:


За исключением того, что Daunch Daemon (например, Startup Item перед ним) сталкивается с двумя важными проблемами в этом отношении:

  1. Если «Конфигурация системы» повторно использует сетевую конфигурацию, она уничтожит ваш маршрут. Вы можете бороться с этим, запустив запуск запуска своего запуска Daemon периодически, но вам все равно придется ждать, пока не будет восстановлен ваш маршрут.

  2. Оба запускаемых запуска и элементы запуска могут запускаться до того, как некоторые сетевые интерфейсы будут полностью настроены. В этом случае вы не сможете совершить маршрут в это время и, возможно, придется вернуться к ожиданию периодического вызова вашего запуска Daemon (или в случае Startup Item, возможно, для задания cron).

Я только что опубликовал то, что, надеюсь, будет лучшим (то есть более надежным) решением на моем веб-сайте. Я построил пакет установки (скачать) для этого; есть также некоторый исходный код, но я не могу опубликовать ссылку на Server Fault, так как у меня нет достаточно высокой репутации, чтобы разместить более одной гиперссылки на сообщение.

Чтобы использовать его, установите пакет (пока он тестируется только на моем ноутбуке, но, похоже, работает). Он должен установить Daunch Daunch, который запускает процесс «staticrouted» server (вы можете проверить это сверху, если он не запущен, вероятно, это означает, что я неправильно установил установщик, но вы можете запустить его с помощью launchctll как обычный).

Чтобы создать статические маршруты, вы используете программу «staticroute» (которую вы найдете в / usr / local / sbin). например

staticroute add 10.128.4.0/24 "Main Network Interface"
staticroute delete 10.192.0.0/16 "Other Interface"

Вы также можете просмотреть список настроенных статических маршрутов с помощью

staticroute list

и список имен интерфейсов с

staticroute list-interfaces

Настроенные статические маршруты сохраняют перезапуск и будут автоматически добавляться и удаляться по мере того, как сетевые интерфейсы идут вверх и вниз.

Есть также справочные страницы; они установлены в / usr / local / share / man / man8, поэтому вы также можете добавить / usr / local / share / man в свой MANPATH, если он еще не существует.

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


2
2017-07-15 17:59





Три подхода, в порядке возрастания добра:

  • Вручную создайте службу запуска для настройки маршрута в соответствии с http://osxfaq.com/tips/kluskens/index.ws
  • использование Lingon автоматизировать создание службы, иначе, как указано выше; это программное обеспечение не поддерживается, но все еще отлично работает с OS X 10.5.8.
  • использование RouteSplit, инструмент, созданный для этой цели.

3
2018-03-22 14:42





Я должен не соглашаться на порядок добра - если OP использует launchd (либо с созданным вручную plist, либо с созданным с помощью лингона), они могут запускаться при загрузке. Если они используют решение на основе AppleScript, такое как RouteSplit, они не смогут запускать его без входа пользователя в систему.

Чарльз, мне любопытно, почему использование санкционированного OS-инструмента, такого как launchd, кажется вам хаки?


1
2018-04-04 06:00



jpb, RouteSplit устанавливает задание запуска, которое делает запускать при загрузке. Во-вторых, не использование самого запуска является хакерским, а скорее отсутствием интеграции с остальной системой - например, тот факт, что задание не запускается повторно, если сетевое соединение перезапускается, но запускается только один раз в загрузки. - Charles Duffy
Мне плохо, что я не смотрел RouteSplit, когда увидел, что источник находится в Applescript. Посмотрите на crankd (pymacadmin.googlecode.com/hg/bin/crankd.py) для чего-то, что позволит запускать скрипты при возникновении сетевых событий. - Joe Block