Проблема

Проблема

Проблема

Я знаю, как добавить блок в интерфейс. Но я действительно не знаю, как использовать конкретный адрес динамически.

Что я хочу

Например:

  • У меня есть блок fe80::/32 для моего приложения.
  • Я разрешу своему пользователю получать доступ к серверу по одному адресу IPv4 с учетными данными.
  • Я отправлю хук с IPV6
  • Я хочу дать каждому пользователю конкретный адрес для отправки.
  • пользовательA: fe80::1пользовательB:fe80::2

У меня есть целый блок для этого, так что этим сервисом будет пользоваться множество пользователей.

Что я наделал

Но я обнаружил, что не могу связать запрос с конкретным адресом, это вызовет ошибку errno99.

Я использовал curl, чтобы проверить, поддерживает ли Linux нужные мне функции, но обнаружил, что не могу этого сделать.

Как я это тестирую:

Тестовый сервер с диапазоном

сервер

python3 -m http.server --bind ::

клиент

curl -vvv -6  "http://[fe80::3]:8000"
curl -vvv -6  "http://[fe80::4]:8000"

Это сработает. Потому что сервер прослушивает все адреса. Так что вы можете получить доступ с любого из них.

Тестовый клиент с диапазоном

Сервер

python3 -m http.server --bind ::

клиент

curl -vvv -6 -i "fe80::2" "http://[fe80::1]:8000"
curl -vvv -6 -i "fe80::3" "http://[fe80::1]:8000"

Это не сработает. Curl выдаст ошибку errno99

Привязать каждый IP к интерфейсу

У меня целый диапазон IP, как же СУМАСШЕДШО мне привязывать каждый IP под /32. Поэтому я ищу лучшее решение.

О дискуссии

Несколько обсуждений были удалены. И я не могу найти историю.

Отказ от ответственности:

  • Я набрал «Например:» в строке «Что я хочу»
  • Если вы проверите историю изменений этой проблемы, то увидите, что «Например:» встречается здесь впервые.
  • Эта проблема возникает при использовании запрошенной клиентами функции.
  • Я хочу решить эту проблему просто, я не хочу больше об этом говорить.
  • Я не знаю, почему меня увольняют только потому, что мне приходится удовлетворять клиентов, размещающих сервис на VPS только с поддержкой IPV6.
  • Проблема у меня в том, что я не знаю, нужно ли было что-то настраивать на оборудовании или ПО, чтобы решить эту проблему, но я думаю, что это проблема сервера, эта причина не по теме. И я нахожу решение.

решение1

Вам нужна проверка реальности и — кхм — немного RTFM.

  • Блок адресов FE80 является локальным для связи. Он предназначен как крайний вариант. Каждая конечная точка в сегменте Ethernet имеет там адрес, если у нее активен IPv6. Поздравляю.
  • Что означает, во-первых, вы не можете использовать ВСЕ адреса, потому что компьютеры имеют случайные адреса в этом. Это случайные - основанные на их MAC.
  • Поскольку этот префикс является локальным для ссылки и автоматически назначается для каждой ссылки - он также НЕ МАРШРУТИРУЕТСЯ. Так что, если ваши пользователи не являются локальными - ОНИ НЕ МОГУТ ОТПРАВЛЯТЬ НА НЕГО.
  • Наконец, вы совершаете большую архитектурную глупость. Вы терминируете пользователей на адресе IPv4 - что хорошо, пользователи, таким образом, имеют доступ к IPv4 - и затем даете им IPv6 для доступа - ПРЕДПОЛАГАЯ (и это ДЕЙСТВИТЕЛЬНО глупая идея), что у них вообще есть активный IPv6. Это вряд ли так. Получите ipv4, ПРИСТУПАЙТЕ к ipv4. Получите Ipv6, ПРИСТУПАЙТЕ к IPv6. Но в данном случае это не имеет значения из-за отсутствия маршрутизации. Но, как правило, вам НЕ следует переключать протоколы - вы предполагаете двойной стек, это не так для 99,9% людей.

решение2

Вы можете рассмотреть возможность создания кластера с corosync и pacemaker, а также использования двух узлов и пары сервисов с виртуальным ip из вашего блока. IP будет виртуальным, поскольку сервис будет использоваться узлом 1 и узлом 2, и, таким образом, node1 и node2 должны иметь возможность его использовать.

Связанный контент