Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом документе описана базовая терминология прокси-сервера и описано поведение прокси-сервера для пограничных серверов.
Содержимое
- Идентификаторы прокси-сервера
- Разрешение прокси-сервера
- Схемы прокси-сервера
- Параметры прокси-сервера вручную
- Правила обхода прокси-сервера
-
Шаблоны URL-адресов конфигурации прокси-сервера
- Шаблоны URL-адресов конфигурации прокси-сервера: имя узла
- Шаблоны URL-адресов конфигурации прокси-сервера: поддомен
- Шаблоны URL-адресов конфигурации прокси-сервера: IP-литералы
- Шаблоны URL-адресов конфигурации прокси-сервера: диапазон адресов IPv4
- Шаблоны URL-адресов конфигурации прокси-сервера: диапазон адресов IPv6
- Шаблоны URL-адресов конфигурации прокси-сервера: простые имена узлов
- Шаблоны URL-адресов конфигурации прокси-сервера: вычитание неявных правил
- Значение правил обхода диапазона IP-адресов
- Неявные правила обхода
Идентификаторы прокси-сервера
Прокси-сервер — это посредник, используемый для сетевых запросов. Прокси-сервер можно описать с помощью его адреса, а также схемы прокси-сервера, которая должна использоваться для связи с ним.
Этот идентификатор можно записать в виде строки, используя либо формат PAC, либо формат URI.
Формат PAC — это имя прокси-сервера в скриптах автонастройки прокси-сервера . Пример
PROXY foo:2138 SOCKS5 foo:1080 DIRECT
Вместо этого "формат URI" кодирует сведения в виде URL-адреса. Пример
foo:2138 http://foo:2138 socks5://foo:1080 direct://
Номер порта является необязательным в обоих форматах. Если этот параметр опущен, используется значение по умолчанию для каждой схемы.
Дополнительные сведения о том, какие схемы поддерживает Edge и как записывать их в форматах PAC и URI, см. в разделе Схемы прокси-сервера.
Большинство поверхностей пользовательского интерфейса в Edge (включая командные строки и политику) ожидают идентификаторы прокси-сервера в формате URI. Однако за пределами Edge прокси-серверы определяются менее точно при использовании только адреса . Схема прокси-сервера предполагается на основе контекста.
В параметрах прокси-сервера Windows есть поля узла и порта для прокси-сервера HTTP, Secure, FTP и SOCKS. За исключением "SOCKS", все они являются идентификаторами для небезопасных прокси-серверов HTTP (схема прокси-сервера предполагается как HTTP).
Разрешение прокси-сервера
Прокси-сервер в Edge выполняется на уровне URL-адреса.
Когда браузер получает запрос на выборку URL-адреса, он должен решить, в какую конечную точку IP-адреса отправить запрос. Это может быть прокси-сервер или целевой узел.
Это называется разрешением прокси-сервера. Входными данными для разрешения прокси-сервера является URL-адрес, а выходными данными является упорядоченный список идентификаторов прокси-сервера.
Какие прокси-серверы следует использовать, можно описать с помощью:
Параметры прокси-сервера вручную . Разрешение прокси-сервера определяется с помощью декларативного набора правил. Эти правила выражаются в виде сопоставления схемы URL-адресов с идентификаторами прокси-сервера, а также списка правил обхода прокси-сервера, когда следует переходить к DIRECT вместо использования сопоставленного прокси-сервера.
Скрипт PAC — разрешение прокси-сервера определяется с помощью программы JavaScript, которая вызывается при каждом получении URL-адреса для получения списка используемых идентификаторов прокси-сервера.
Автоматическое определение— протокол WPAD используется для проверки сети (с помощью DHCP/DNS) и, возможно, обнаружения URL-адреса скрипта PAC.
Схемы прокси-сервера
При использовании явного прокси-сервера в браузере влияет несколько уровней сетевого запроса в зависимости от используемой схемы. Ниже приведены некоторые последствия схемы прокси-сервера.
Осуществляется ли связь с прокси-сервером по безопасному каналу? Разрешение имен (например, DNS) выполнено на стороне клиента или на стороне прокси-сервера? Какие схемы проверки подлинности для прокси-сервера поддерживаются? Какой сетевой трафик можно отправлять через прокси-сервер? Edge поддерживает следующие схемы прокси-сервера:
Схема прокси-сервера DIRECT
Порт по умолчанию: N/A (ни узел, ни порт не применимы) Пример идентификатора (PAC): DIRECT пример идентификатора (URI). direct:// Это схема псевдо-прокси, которая указывает, что вместо использования прокси-сервера мы отправим запрос непосредственно на целевой сервер.
Это некорректно называть его прокси-сервером, но это удобная абстракция.
Схема прокси-сервера HTTP
Порт по умолчанию: 80 Пример идентификатора (PAC): PROXY proxy:8080, proxy (нестандартный; не используйте) Примеры идентификаторов (URI): http://proxy:8080, proxy:8080 (может опустить схему). Обычно при ссылке на "прокси-сервер" или "веб-прокси" речь идет о прокси-сервере HTTP.
При использовании прокси-сервера HTTP в Edge разрешение имен всегда откладывается на прокси-сервер. Прокси-серверы HTTP могут прокси-адреса http://, https://ws:// и wss:// .
Связь с прокси-серверами HTTP небезопасна, то есть запросы прокси http:// отправляются в формате clear. При передаче https:// запросов через прокси-сервер HTTP обмен TLS перенаправляется через прокси-сервер с помощью метода CONNECT, поэтому сквозное шифрование не нарушается. Однако при установке туннеля имя узла целевого URL-адреса отправляется на прокси-сервер в формате clear.
Прокси-серверы HTTP в Edge поддерживают те же схемы проверки подлинности HTTP, что и для целевых серверов: Basic, Digest, Negotiate, NTLM.
Схема прокси-сервера HTTPS
Порт по умолчанию: 443. Пример идентификатора (PAC): HTTPS proxy:8080 пример идентификатора (URI): https://proxy:8080
Это работает как прокси-сервер HTTP, за исключением того, что связь с прокси-сервером защищена протоколом TLS и может согласовать протокол HTTP/2 (но не QUIC).
Так как подключение к прокси-серверу является безопасным, запросы, https:// отправленные через прокси-сервер, не отправляются в формате clear, как с прокси-сервером HTTP. Аналогичным образом, так как запросы CONNECT отправляются по защищенному каналу, имена узлов для ПРОКСИ-адресов https:// также не отображаются.
Помимо обычных методов проверки подлинности HTTP прокси-серверы HTTPS также поддерживают сертификаты клиентов.
Прокси-серверы HTTPS, использующие HTTP/2, могут обеспечить более высокую производительность в Edge, чем обычный прокси-сервер HTTP из-за более высоких ограничений на подключение (прокси-серверы HTTP/1.1 в Edge ограничены 32 одновременными подключениями во всех доменах).
Edge, Firefox и Opera поддерживают прокси-серверы HTTPS; однако большинство старых стеков HTTP не используют.
Указание прокси-сервера HTTPS невозможно с помощью параметров системного прокси-сервера. Вместо этого необходимо использовать скрипт PAC или параметр прокси-сервера Edge (командная строка, расширение или политика).
Схема прокси-сервера SOCKSv4
Порт по умолчанию: 1080 Примеры идентификаторов (PAC): SOCKS4 proxy:8080, SOCKS proxy:8080 пример идентификатора (URI): socks4://proxy:8080 SOCKSv4 — это простой прокси-сервер транспортного уровня, который упаковывает сокет TCP. Его использование прозрачно для остальной части стека протоколов; После первоначального подтверждения при подключении сокета TCP (к прокси-серверу) остальная часть стека загрузки остается неизменной.
Методы проверки подлинности прокси-сервера для SOCKSv4 не поддерживаются.
При использовании прокси-сервера SOCKSv4 разрешение имен для целевых узлов всегда выполняется на стороне клиента и, кроме того, должно разрешаться в IPv4-адрес (SOCKSv4 кодирует целевой адрес как четыре октета, поэтому целевые объекты IPv6 недоступны).
Существуют расширения для SOCKSv4, которые позволяют разрешать имена сторон прокси и IPv6, а именно SOCKSv4a. Однако Edge не разрешает настройку или возврат к версии 4a.
Лучшая альтернатива — использовать более новую версию протокола, SOCKSv5 (которая по-прежнему 20+ лет).
Схема прокси-сервера SOCKSv5
Порт по умолчанию: 1080 Пример идентификатора (PAC): SOCKS5 proxy:8080 пример идентификаторов (URI): socks://proxy:8080, socks5://proxy:8080
SOCKSv5 — это прокси-сервер транспортного уровня, который упаковывает сокет TCP и позволяет отложить разрешение имен на прокси-сервер.
В Edge, когда для схемы прокси-сервера задано значение SOCKSv5, разрешение имен всегда выполняется на стороне прокси-сервера (даже если протокол также допускает использование клиентской стороны). В Firefox на стороне клиента и прокси-сервера разрешение имен можно настроить с network.proxy.socks_remote_dnsпомощью ; Edge не имеет эквивалентного параметра и всегда будет использовать разрешение прокси-сервера на стороне.
Методы проверки подлинности для SOCKSv5 в Edge не поддерживаются (хотя некоторые из них существуют для протокола).
Удобно создать прокси-сервер SOCKSv5 с ssh -Dпомощью , который можно использовать для туннелирования веб-трафика к удаленному узлу по протоколу SSH.
В Edge SOCKSv5 используется только для прокси-запросов URL-адресов на основе TCP. Его нельзя использовать для ретрансляции трафика UDP.
Параметры прокси-сервера вручную
Самый простой способ настроить разрешение прокси-сервера — предоставить статический список правил, состоящий из следующих:
Сопоставление схем URL-адресов с идентификаторами прокси-сервера Список правил обхода прокси-сервера. Этот режим конфигурации называется "параметрами прокси-сервера вручную".
Параметры прокси-сервера вручную могут кратко описывать настройки, например:
Использовать прокси-сервер http://foo:8080 для всех запросов. Использование прокси-сервера http://foo:8080 для всех запросов, кроме запросов к поддомену contoso.com Используйте прокси-сервер http://foo:8080 для всех https:// запросов и прокси-сервер socks5://mysocks:90 для всех остальных. Хотя параметры прокси-сервера вручную являются повсеместным способом настройки прокси-серверов на разных платформах, стандартное представление или набор функций отсутствует.
Параметры прокси-сервера Edge вручную больше всего похожи на параметры WinInet. Но он также поддерживает идиомы с других платформ , например, концепция KDE об изменении списка обходов или интерпретация Gnome шаблонов обхода как суффиксов соответствует.
При определении параметров прокси-сервера вручную в Edge мы указываем три (возможно, пустых) списка идентификаторов прокси-сервера:
прокси-серверы для HTTP — список идентификаторов прокси-сервера, используемых для http:// запросов, если прокси-серверы не являются прокси-серверами для HTTPS. Список идентификаторов прокси-сервера, используемых для https:// запросов, если непустые другие прокси-серверы. Список идентификаторов прокси-сервера для всех остальных (не совпадает с двумя другими списками). Существует много способов получить параметры прокси-сервера вручную в Пограничных серверах (обсуждается в других разделах).
В следующих примерах используется метод командной строки. Запуск Edge с --proxy-server=XXX помощью (и при --proxy-bypass-list=YYYнеобходимости )
Пример. Чтобы использовать прокси-сервер http://foo:8080 для всех запросов, можно запустить Edge с --proxy-server="http://foo:8080"помощью . Это означает:
Прокси-серверы для HTTP — пустые прокси-серверы для HTTPS — пустые другие прокси-серверы — http://foo:8080 при указанной выше конфигурации, если прокси-сервер недоступен, все запросы завершатся сбоем с ERR_PROXY_CONNECTION_FAILED. Чтобы устранить эту проблему, можно добавить резервную строку в DIRECT, запустив с помощью --proxy-server="http://foo:8080,direct://" (обратите внимание на список, разделенный запятыми). Эта командная строка означает:
Прокси-серверы для HTTP — пустые прокси-серверы для HTTPS — пустые другие прокси-серверы . http://foo:8080direct:// Если вместо этого мы хотели проксировать только http:// URL-адреса через прокси-сервер https://foo:443HTTPS, а все остальные используют прокси-сервер socks5://mysocks:1080 SOCKSv5, мы могли бы запустить Edge с --proxy-server="http=https://foo:443;socks=socks5://mysocks:1080"помощью . Теперь он расширяется до:
прокси-серверы для HTTP — https://foo:443 прокси-серверы для HTTPS — пустые другие прокси-серверы. socks5://mysocks:1080 В командной строке выше используется формат карты прокси-сервера WinInet с некоторыми дополнительными функциями:
Вместо именования прокси-серверов с помощью , hostname:portможно использовать формат URI Edge для идентификаторов прокси-сервера. Другими словами, можно префиксировать схему прокси-сервера, чтобы она по умолчанию не была http.
Сопоставление socks= понимается более широко как "другие прокси-серверы". Последующий список прокси-серверов может включать прокси-серверы любой схемы, однако если схема опущена, она будет рассматриваться как SOCKSv4, а не HTTP.
Сопоставление URL-адресов WebSocket с прокси-сервером
В параметрах прокси-сервера вручную нет сопоставлений или ws://wss:// URL-адресов.
Выбор прокси-сервера для этих схем URL-адресов немного отличается от других схем URL-адресов. Алгоритм, который использует Edge:
Если "другие прокси- серверы" не является бесполезным, используйте его. Если "прокси-серверы для HTTPS" является непустым используйте его. В противном случае используйте "прокси-серверы для HTTP". Это соответствует рекомендации, описанной в разделе 4.1.3 документа RFC 6455.
Можно маршрутизировать ws:// и wss:// отдельно с помощью скрипта PAC.
Учетные данные прокси-сервера в параметрах прокси-сервера вручную
Параметры прокси-сервера большинства платформ вручную позволяют указать имя пользователя или пароль cleartext для входа через прокси-сервер. Edge не реализует это и не будет использовать учетные данные, внедренные в параметры прокси-сервера.
Проверка подлинности прокси-сервера будет проходить через обычный поток для поиска учетных данных.
Правила обхода прокси-сервера
Помимо указания трех списков идентификаторов прокси-сервера, параметры прокси-сервера Edge вручную позволяют указать список "правил обхода прокси-сервера" с помощью шаблонов URL-адресов.
Этот набор правил определяет, следует ли по заданному URL-адресу пропускать использование прокси-сервера вместе, даже если для него определен прокси-сервер.
Эта концепция также известна под такими именами, как "список исключений", "список исключений" или "список без прокси-серверов".
Правила обхода прокси-сервера можно записать в виде упорядоченного списка строк. Упорядочение обычно не имеет значения, но может и при использовании субтрактивных правил.
Если параметры прокси-сервера вручную указываются из командной строки, --proxy-bypass-list="RULES" можно использовать параметр , где RULES — это список правил обхода с запятой или разделенный запятыми.
Шаблоны URL-адресов конфигурации прокси-сервера см. в разделе шаблоны URL-адресов, поддерживаемые Edge для правил обхода прокси-сервера.
При использовании параметров системного прокси-сервера следует использовать формат правила платформы, а не формат edge.
Шаблоны URL-адресов конфигурации прокси-сервера
В этом разделе описываются конструкции строк, поддерживаемые Edge для указания шаблонов URL-адресов в контексте конфигурации прокси-сервера, например правила обхода ProxyOverrideRules прокси-сервера или DestinationMatchers значения политики. Эти шаблоны можно использовать при определении параметра прокси-сервера Edge вручную из флагов командной строки, расширений или политики.
Шаблоны URL-адресов конфигурации прокси-сервера: имя узла
[ URL_SCHEME "://" ] HOSTNAME_PATTERN [ ":" <port> ]
Сопоставляет имя узла с помощью шаблона подстановочных знаков, а также необязательной схемы и ограничения портов.
Примеры:
foobar.com — соответствует URL-адресу любой схемы и порта, для которого нормализованный узел — foobar.com*foobar.com Соответствует URL-адресу любой схемы и портам, для которого нормализованный узел заканчивается foobar.com (например blahfoobar.com , и foo.foobar.com) *.org:443 — соответствует URL-адресам любой схемы, используя порт 443, и домен верхнего уровня которого — .orghttps://x.*.y.com:99 соответствует https:// URL-адресам на порте 99, для которого соответствует нормализованное имя узла. x.*.y.com
Шаблоны URL-адресов конфигурации прокси-сервера: поддомен
[ URL_SCHEME "://" ] "." HOSTNAME_SUFFIX_PATTERN [ ":" PORT ]
Шаблоны имени узла, начинающиеся с точки, имеют специальный регистр, чтобы означать соответствие поддомена.
.foo.com фактически является еще одним способом написания *.foo.com.
Примеры:
.contoso.com — соответствует outlook.contoso.com и foo.bar.contoso.com, но не contoso.comhttp://.contoso.com — соответствует только http:// URL-адресам, которые являются поддоменом contoso.com
Шаблоны URL-адресов конфигурации прокси-сервера: IP-литералы
[ SCHEME "://" ] IP_LITERAL [ ":" PORT ]
Соответствует URL-адресам, которые являются литералами IP-адресов, а также дополнительным ограничениям схемы и порта. Это особый случай сопоставления имен узлов, в котором учитывается канонизация IP-литерала. Например, правила [0:0:0::1] и эквивалентны (оба представляют один IPv6-адрес [::1] ).
Примеры:
127.0.0.1
http://127.0.0.1
[::1] — сопоставляет любой URL-адрес с адресом [0:0::1] замыкания на себя IPv6 — то же, что и выше http://[::1]:99 , — соответствует любому http:// URL-адресу замыкания на цикл IPv6 через порт 99.
Шаблоны URL-адресов конфигурации прокси-сервера: диапазон адресов IPv4
IPV4_LITERAL "/" PREFIX_LENGTH_IN_BITS
Соответствует любому URL-адресу, имя узла которого является литералом IPv4, и находится между заданным диапазоном адресов.
Обратите внимание, что это относится только к URL-адресам, которые являются IP-литералами.
Примеры:
192.168.1.1/16
Шаблоны URL-адресов конфигурации прокси-сервера: диапазон адресов IPv6
IPV6_LITERAL "/" PREFIX_LENGTH_IN_BITS
Соответствует любому URL-адресу, который является литералом IPv6, который находится между заданным диапазоном. Литералы IPv6 не должны быть заключены в квадратные скобки.
Обратите внимание, что это относится только к URL-адресам, которые являются IP-литералами.
Примеры:
fefe:13::abc/33
[fefe::]/40 --НЕПРАВИЛЬНО! Литералы IPv6 не должны быть заключены в квадратные скобки
Шаблоны URL-адресов конфигурации прокси-сервера: простые имена узлов
<local>
Соответствует именам узлов без точки в них и не являются IP-литералами. Это наивный строковый поиск, то есть точки, отображаемые в любом месте (включая конечные точки!).
Это правило соответствует флажку "Исключить простые имена узлов" в macOS и "Не использовать прокси-сервер для локальных адресов (интрасети) " в Windows.
Имя правила происходит от WinInet, и его можно легко спутать с понятием localhost. Однако эти два понятия являются ортогональными. На практике не следует добавлять правила для обхода localhost, так как это уже делается неявно.
Шаблоны URL-адресов конфигурации прокси-сервера: вычитание неявных правил
<-loopback>
Вычитает неявные правила обхода прокси-сервера (локальные адреса localhost и link). Это необходимо только для тестовых настроек. Остерегайтесь последствий для безопасности при прокси-сервере localhost.
В то время как обычные правила обхода указывают браузеру о URL-адресах, которые не должны использовать прокси-сервер, это правило имеет обратный эффект и предписывает браузеру вместо этого использовать прокси-сервер.
Порядок может иметь значение при использовании правила subtractive, так как правила будут оцениваться слева направо.
<-loopback>;127.0.0.1 имеет эффект, который немного отличается от 127.0.0.1;<-loopback>.
Значение правил обхода диапазона IP-адресов
Правило обхода диапазона IP-адресов в параметрах прокси-сервера вручную применяется только к литералам URL-адресов. Это не то, что можно было бы интуитивно ожидать.
Пример.
Предположим, мы настроили прокси-сервер для всех запросов, но добавили правило обхода для 192.168.0.0.1/16. Если мы перейдем к http://foo (который разрешается в нашей настройке 192.168.1.5 ), браузер подключается напрямую (обход прокси-сервера), так как мы указали правило обхода, включающее этот IP-адрес?
Он проходит через прокси-сервер.
Правило обхода в этом случае неприменимо, так как браузер никогда не выполняет разрешение имен для foo. Разрешение прокси-сервера происходит до разрешения имен, и в зависимости от того, какая схема прокси-сервера будет выбрана позже, разрешение имен на стороне клиента может никогда не выполняться.
Полезность правил обхода прокси-сервера диапазона IP-адресов довольно ограничена, так как они применяются только к запросам, URL-адрес которых явно является IP-литералом.
Если необходимо принимать решения о прокси-сервере на основе разрешенных IP-адресов имени узла URL-адреса, необходимо использовать скрипт PAC.
Правила неявного обхода
Запросы к определенным узлам не отправляются через прокси-сервер, а отправляются напрямую.
Мы называем эти неявные правила обхода. Правила неявного обхода соответствуют URL-адресам, частью узла которых является имя localhost или литерал локального IP-адреса канала. По сути, он соответствует:
localhost
*.localhost
[::1]
127.0.0.1/8
169.254/16
[FE80::]/10 Полные правила немного сложнее. Например, в Windows мы также распознаем loopback.
Эта концепция правил неявного обхода прокси-сервера согласуется с поддержкой прокси-сервера на уровне платформы в Windows и macOS (хотя и с некоторыми различиями из-за их реализации причуд . См. заметки о совместимости в net::ProxyHostMatchingRules::MatchesImplicitRules).
Зачем в первую очередь применять неявные правила обхода прокси-сервера? Конечно, есть соображения по эргономике и ожиданиям пользователей, но большая проблема заключается в безопасности. Так как веб-платформа рассматривает localhost как безопасный источник, возможность прокси-сервера предоставляет дополнительные полномочия. Это особенно проблематично, когда параметры прокси-сервера управляются извне, например при использовании скриптов PAC.
Переопределение правил неявного обхода
Если вы хотите, чтобы трафик на localhost отправлялся через прокси-сервер, несмотря на проблемы безопасности, это можно сделать, добавив специальное правило <-loopback>обхода прокси-сервера . Это правило вычитает неявные правила.
Например, запустите Edge с флагом командной строки:
--proxy-bypass-list="<-loopback>"
В настоящее время нет механизма отключения неявных правил обхода прокси-сервера при использовании скрипта PAC. Правила обхода прокси-сервера применяются только к ручным параметрам, поэтому этот метод нельзя использовать, чтобы скрипты PAC могли выбирать прокси-сервер для URL-адресов localhost.
Лицензия на содержимое
Примечание.
Некоторые части этой страницы представляют собой измененные материалы, созданные и предоставленные на сайте Chromium.org. Их использование регулируется условиями, описанными в лицензии Creative Commons Attribution 4.0 International License. Исходная страница Chromium находится здесь.
Эта работа предоставляется в рамках международной лицензии Creative Commons Attribution 4.0 International License.