Привязки IPv6 и исходящий IPVersion в прокси Indy HTTP
Добавьте явные локальные привязки IPv4/IPv6 перед активацией; выберите нужное семейство следующего перехода в OutboundClient до его подключения.
ProxyServer.Bindings.Clear;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv4;
IP := '127.0.0.1';
Port := 8080;
end;
with ProxyServer.Bindings.Add do
begin
IPVersion := Id_IPv6;
IP := '::1';
Port := 8080;
end;Примените это к неактивному существующему TIdHTTPProxyServer, затем используйте обычную активацию. Адреса loopback намеренно принимают только локальных клиентов; удалённое использование требует доступных адресов интерфейсов и контроля доступа. Проверьте полученную границу доступа прежде чем открыть этот прослушиватель.
Входящие привязки и исходящий сокет выполняют разные задачи:
| Сокет | Выбор семейства |
|---|---|
| Клиент достигает прокси | Каждая явная запись Bindings |
| Прокси достигает следующего перехода | OutboundClient.IPVersion контекста |
Поэтому прослушиватель IPv6 не заставляет каждое назначение использовать IPv6. Если рабочей нагрузке нужно явное семейство следующего перехода, задайте его в OnHTTPBeforeCommand до подключения этого клиента, в соответствии с предполагаемым путём к назначению.
Отделяйте сбой прослушивателя от сбоя следующего перехода, когда одна сторона работает. Опора на автоматические привязки иначе может внести в сравнение предположения, зависящие от платформы.