1

Я пытаюсь выбрать наиболее подходящую конфигурацию для моего сервера с двумя внешними интерфейсами, оба получают внешний IP-номер от интернет-провайдера через DHCP. Это позволяет мне размещать разные сервисы на разных IP-адресах. Адреса, скорее всего, будут находиться в одной и той же сети, что может вызвать головную боль при моей маршрутизации.

Самый простой сценарий - просто назначить различный приоритет каждому сетевому интерфейсу, имея один интерфейс в качестве "основного", к которому все маршрутизируется по умолчанию. Поскольку меня не интересует балансировка нагрузки или отработка отказа, это должно работать.

ifconfig em0 priority 0
ifconfig em2 priority 10

Я смоделировал сценарий с использованием локального сервера DHCP, и он, кажется, работает хорошо. Таблица маршрутизации выглядит следующим образом после автоматической настройки через DHCP:

# route -n show -inet
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            10.0.0.1           UGS        0        0     -     8 em0
224/4              127.0.0.1          URS        0        0 32768     8 lo0
10.0.0/24          10.0.0.2           UCn        1       13     -     4 em0
10.0.0/24          10.0.0.3           UCn        0        0     -    14 em2
10.0.0.1           xx:xx:xx:xx:xx:01  UHLch      1       12     -     3 em0
10.0.0.2           xx:xx:xx:xx:xx:02  UHLl       0        0     -     1 em0
10.0.0.3           xx:xx:xx:xx:xx:03  UHLl       0        3     -     1 em2
10.0.0.255         10.0.0.2           UHPb       0        0     -     1 em0
10.0.0.255         10.0.0.3           UHPb       0        0     -     1 em2
127/8              127.0.0.1          UGRS       0        0 32768     8 lo0
127.0.0.1          127.0.0.1          UHhl       1        2 32768     1 lo0

Через мой шлюз есть только один выход по умолчанию, а конфликтующий маршрут 10.0.0/24 имеет разные приоритеты, поэтому следует использовать только один путь, если явно не запрошено.

Согласно всем моим тестам, это работает хорошо. Особенно:

  • Службы на сервере, прослушивающие оба IP-адреса, могут быть доступны с использованием любого из них.
  • Службы, прослушивающие один интерфейс, могут быть доступны только через этот интерфейс.
  • При пинге хоста с сервера я могу выбрать исходящий интерфейс. Это работает как ожидалось.

Но я все еще волнуюсь, и у меня есть два вопроса, в частности:

Должен ли я удалить дополнительный маршрут к моей сети?

У меня есть два маршрута до 10.0.0/24 . Счетчик "Использовать" для последнего никогда не увеличивается, и моя сеть, кажется, работает, даже если я удаляю один для em2 .

10.0.0/24          10.0.0.2           UCn        1       13     -     4 em0
10.0.0/24          10.0.0.3           UCn        0        0     -    14 em2

Второй маршрут вообще необходим? Если нет, то приносит ли это вред?

Нужны ли две трансляции для одной сети?

Каждый интерфейс также настраивает свою собственную трансляцию в той же сети.

10.0.0.255         10.0.0.2           UHPb       0        0     -     1 em0
10.0.0.255         10.0.0.3           UHPb       0        0     -     1 em2

Здесь один и тот же вопрос: нужны ли они, а если нет, то вредны ли они? Я мог легко представить, что у каждого интерфейса должна быть запись в таблице, но я боюсь, что не знаю об этом достаточно. Я не вижу странных вещей, происходящих в моей локальной сети.


...Оставайтесь на линии

После запуска с этой настройкой сеть перестала работать. Проверяя логи, я вижу это:

arp: attempt to add entry for 10.0.0.1 on em0 by xx:xx:xx:xx:xx:xx on em2
arpresolve: 10.0.0.1: route contains no arp information
arpresolve: 10.0.0.1: route contains no arp information
arpresolve: 10.0.0.1: route contains no arp information
...

Видимо что-то в настройке должно измениться. Я все еще не уверен, что.

0