Вот ситуация. Мой Mac подключается к двум сетям - одна внутренняя, одна внешняя. Внутренний DNS работает как для внутренних, так и для внешних URL, внешний DNS (очевидно) ничего не знает о внутренних URL. Внутренняя сеть не подключается к внешним IP-адресам, внешняя сеть не подключается к внутренним IP-адресам.

Поэтому в зависимости от того, как я настроил Сервисный заказ в разделе «Сеть» Системных настроек:

Так что если я поставлю внутреннюю сеть перед внешней в сервисном заказе:

  1. Внутренний DNS отвечает на все запросы правильно (как для внутренних, так и для внешних URL)
  2. Внутренняя сеть не может подключиться к внешним URL-адресам, поэтому, мне кажется, мне нужно добавить несколько записей в таблицу маршрутизации, чтобы все, что не является внутренним IP-адресом, отправлялось во внешнюю сеть.

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

  1. Даже если я сначала добавлю внутренний DNS в настройках внешней сети, я все равно не смогу разрешить внутренние URL.

Итак, вот мои вопросы:

1) Почему я не могу разрешить внутренние URL? Поскольку у меня есть запись в таблице маршрутизации, отправляющая все внутренние IP-адреса во внутреннюю сеть, разве DNS-запросы не должны идти во внутренний DNS, даже если внешняя сеть является первой в заказе на обслуживание?

2) Есть ли умный способ добавить записи в таблицу маршрутизации, чтобы сказать «все, кроме 10.xxx идет в сеть X»?

п.с. Что касается моего вопроса №2, я подумал, что способ указать «все, кроме 10.xxx» состоит в том, чтобы иметь целый ряд команд маршрута:

/sbin/route add -net 128.0.0.0 -netmask 128.0.0.0 -interface en0
/sbin/route add -net  64.0.0.0 -netmask 192.0.0.0 -interface en0
/sbin/route add -net  32.0.0.0 -netmask 224.0.0.0 -interface en0
/sbin/route add -net  16.0.0.0 -netmask 240.0.0.0 -interface en0

но я надеюсь, что есть более простой способ.

1 ответ1

1

Предполагая, что ваша внутренняя сеть похожа на 10.0.0.0/8 со шлюзом 10.0.0.1 на eth1, а ваш внешний шлюз по умолчанию на eth1 с IP abcd, это должно сделать это:

route change default -interface en0 route add -net 10.0.0.0 -netmask 255.0.0.0 -interface en1

Вы также можете настроить их в своих сетевых скриптах (вы можете сделать это в Linux - не уверен насчет Mac), смотрите здесь в качестве примера. На самом деле это был бы более устойчивый способ, так как вам не нужно добавлять туда маршруты вручную при каждой загрузке (или помещать их в скрипт).

Обновление: команды обновлены для Mac OS X в соответствии с комментариями ОП, см. Ссылку для альтернатив Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .