Раньше я назначал разные IPv6-адреса для разных служб на одном сервере, таким образом я могу фильтровать то, что можно получить, откуда, что повышает безопасность сети.
Я только что понял, что единственное, что я делаю неправильно, - это то, что я выбираю эти адреса с одинаковым префиксом / 64. Отфильтровать соединения из внешнего мира на шлюзе не проблема, но изоляция между процессами сервера может быть плохой.
Если я правильно понимаю, / 64 - это наименьший префикс, который рекомендуется назначать. Если я хочу запретить (используя фильтр пакетов на сервере), сервисы взаимодействуют друг с другом, тогда они не должны находиться в одной подсети, поэтому мне нужно назначить адреса из разных префиксов / 64.
Прав ли я в этом?
Или нет проблем с использованием префиксов serveral / 120, например, чтобы не тратить зря диапазон IP?
Если это сработает согласно стандартуили поведение зависит от реализации?
Заранее спасибо!
Внутри ваша сеть, я полагаю, технически вы можете делать все, что захотите. Вы можете назначить / 120, если действительно хотите. Но не стоит.
Но есть ли проблема, которую вы здесь пытаетесь решить? При назначении нескольких адресов IPv6 с одного / 64 одному серверу не должно возникнуть проблем. На самом деле вы можете назначить весь / 64 или больше, если хотите (и есть причины, по которым вы захотите это сделать).
Теперь, когда все сказано и сделано, похоже, что вас больше всего интересует внутрисерверная связь. Но вот в чем дело - даже если вы назначаете IP-адреса из разных сетей, внутрисерверная связь все равно будет работать. Поскольку сервер будет маршрутизировать только к шлюзу по умолчанию (и, таким образом, проходить через брандмауэр сетевого уровня), если у него нет маршрута к цели, но в вашем случае у него есть непосредственный маршрут к цели, потому что все IP-адреса находятся на одном компьютере.
Во-вторых, решение этой сетевой коммуникации - это лишь небольшая часть пирога. Если вас беспокоит безопасность, что может помешать злоумышленнику (или мошенническому приложению) просто читать и писать непосредственно в пространство памяти другого приложения? Или диск?
Самый распространенный способ обеспечить такую сегрегацию - использовать виртуальные машины. Или контейнеры / тюрьмы.
IPv6 основан на предположении о подсетях / 64 (или больше). Если вы сделаете подсети меньше этого размера, вам нужно действительно изучить, какие функции вы можете сломать. Некоторые производители закодировали реализации IPv6, чтобы использовать / 64 в качестве базового размера.
Я также хотел бы добавить, что вам не нужно назначать подсеть для фильтрации IP. Вы правы, что связь между подсетями приведет к тому, что трафик будет маршрутизироваться через шлюз, но если все ваши службы находятся на одном компьютере, вы можете изучить правила iptables или аналогичные правила на этом компьютере для фильтрации межсервисного взаимодействия. Это может быть сделано для / 128 или для каждого хоста.
Последнее, на что следует обратить внимание, - это если эти службы необходимо разделить, возможно, они должны находиться на отдельных машинах, виртуальных машинах или контейнерах (Docker). Это, вероятно, было бы моей рекомендацией, но это далеко от того, о чем вы просите.