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