Назад | Перейти на главную страницу

Почему во FreeBSD необходимо установить маску сети 255.255.255.255 для адресов «псевдонимов»?

Из справочника FreeBSD по теме виртуальные хосты:

Для данного интерфейса должен быть один адрес, который правильно представляет сетевую маску сети. Любые другие адреса, входящие в эту сеть, должны иметь сетевую маску всех единиц (выраженную как 255.255.255.255 или 0xffffffff).

Кто-нибудь может объяснить, почему это так?

это страница содержит хорошее объяснение imho:

Поскольку псевдонимы в некотором смысле являются дублирующими тегами, системе необходимо знать, является ли подсеть, представленная этим тегом, новой, и на это указывает сетевая маска. При «нормальной» сетевой маске системе сообщается, что это новая подсеть, и затем она может правильно настроить внутренние таблицы. Если подсеть не новая, таблицы будут настроены неправильно, если сетевая маска «нормальная».

С сетевой маской 255.255.255.255 система знает, что это дубликат существующей подсети, и поэтому назначит адрес, как если бы он был назначен интерфейсу обратной связи, с маской «точка-точка».

Назначение маски сети 255.255.255.0 в большинстве случаев будет работать. Однако внутренние таблицы не будут настроены правильно, и если псевдоним будет удален, могут возникнуть проблемы. Этого можно избежать, добавив соответствующие маршруты хоста при добавлении псевдонима и удалив маршруты при удалении псевдонима. Однако система корректно работает с сетевой маской «точка-точка», и ее легче обслуживать.

Фактически, вы можете установить сетевую маску, которую считаете полезной.

Но если вы измените сетевую маску с / 32, вам также необходимо будет установить маршрут. Если вы последуете рекомендациям, вы можете не устанавливать маршрут.

Справочная страница FreeBSD по ifconfig не очень полезна:

Если адрес находится в той же подсети, что и первый сетевой адрес для этого интерфейса, должна быть указана неконфликтная сетевая маска. Обычно наиболее подходящим является 0xffffffff.

Но вышесказанное означает, что маска / 32 делает эту конкретную сеть (простейшая сеть с одним хостом описывается маской / 32). Наличие той же сетевой маски, что и у физического интерфейса, не причинит никакого вреда, поскольку это два интерфейса в одной сети.

Теперь представьте, что псевдоним имеет маску, которая описывает расширенную сеть, а не физический интерфейс, например физический - 192.168.0.1/25 и псевдоним 192.168.0.2/24. Находится ли 192.168.0.200 в сети и что это означает для вашего псевдонима интерфейса?