У меня вопрос: как я могу надежно настроить статический маршрут в OS X, чтобы 2 конечные точки проходили через шлюз, где все машины находятся в одной подсети? Я предоставляю контекст ниже:
В целях тестирования мне нужно иметь возможность настроить конкретный маршрут между двумя конечными точками в одной локальной подсети - MacBook OS X (10.9) и «приемник» на основе Linux.
Поведение должно быть таким, чтобы следующим прыжком для трафика, покидающего MacBook, был компьютер QoS на основе FreeBSD, а не стандартный шлюз по умолчанию.  Машина BSD также может находиться в той же подсети и выполняет SNAT для маскировки нового трафика и повторного преобразования по возвращении.
Упрощенно, моя среда похожа на следующее:
Локальная подсеть = 10.160.0.0/16
MacBook = 10.160.2.100
Linux Receiver = 10.160.2.200
Шлюз по умолчанию для стандартных устройств = 10.160.0.1
Пример конфигурации шлюза BSD:
en0 10.160.2.160
en1 10.160.3.170
маска сети 255.255.0.0
шлюз 10.160.0.1
Пример желаемого потока:
ЗАПРОС: MacBook -> BSD -> DefaultGateway -> Приемник
ОТВЕТ: Приемник -> DefaultGateway -> BSD -> MacBook
Я вижу 3 проблемы:
- Если я устанавливаю шлюз по умолчанию для en0 (единственный активный интерфейс) в OS X, чтобы он был машиной BSD, скажем, 10.160.2.160, это работает некоторое время, пока этот маршрут по умолчанию автоматически не перезаписывается OS X, чтобы быть стандартным значением по умолчанию 10.160 .0.1 
- Я также сталкиваюсь с проблемами при настройке статических маршрутов в OS X с помощью: - route add 10.160.2.200 10.160.2.160- .. в этом случае происходит одно из двух: либо маршрут работает некоторое время, отображая флаги UGHS netstat, а затем перезаписывается OS X, после чего netstat включает флаг M, чтобы указать, что он был перезаписан перенаправлением. 
- ..или маршрут вообще не работает, так как должен быть какой-то другой маршрут, имеющий приоритет. Traceroute подтверждает это. 
Выход Netstat после начальной настройки:
jiosxserver:~ julianivory$ netstat -nr
Routing tables
Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.160.2.160       UGSc           17        0     en0
10.140.1.31        10.160.2.160       UGHS            0        0     en0
10.140.1.35        10.160.1.1         UGHS            0        0     en0
10.160/16          link#4             UCS             5        0     en0
10.160.0.1         0:14:22:20:1c:d9   UHLWIir        14        0     en0   1191
10.160.1.37        0:50:56:8a:87:e9   UHLWIi          0        0     en0   1138
10.160.2.160       8e:af:b2:47:7f:91  UHLWIir         4        0     en0   1144
10.160.3.75        127.0.0.1          UHS             0        0     lo0
10.160.3.79        a8:20:66:27:72:2e  UHLWIi          0        1     en0   1184
10.160.255.255     ff:ff:ff:ff:ff:ff  UHLWbI          0       44     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              9    20602     lo0
169.254            link#4             UCS             0        0     en0
... и вывод Traceroute показывает, что маршрут по умолчанию не используется:
traceroute to 8.8.8.8 (8.8.8.8), 64 hops max, 52 byte packets
 1  10.160.0.1 (10.160.0.1)  0.504 ms  0.237 ms  0.217 ms
 2  192.168.2.1 (192.168.2.1)  1.065 ms  1.020 ms  0.973 ms
 3  name-removed (xx.1xx.xxx.1)  14.250 ms  13.688 ms  14.046 ms
 4  xxx.xxx.178.141 (xxx.xxx.178.141)  14.196 ms  14.121 ms  13.967 ms
... через некоторое время шлюз по умолчанию будет автоматически изменен на 10.160.0.1 ...
Любые мысли или предложения будут высоко оценены.
