У меня вопрос: как я могу надежно настроить статический маршрут в 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 ...
Любые мысли или предложения будут высоко оценены.