Два маршрута в одну сеть - разные приоритеты

418
pipe

Я пытаюсь выбрать наиболее подходящую конфигурацию для моего сервера с двумя внешними интерфейсами, оба получают внешний 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-адреса, могут быть доступны с использованием любого 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 ... 

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

1

0 ответов на вопрос