Я настраиваю прокси-сервер squid для работы в качестве своего рода шлюза для исходящего трафика. В среде, в которой это развернуто, есть клиент, который делает запрос через балансировщик нагрузки, который затем отправляет его на прокси-сервер squid. Чтобы не скрывать исходный IP-адрес клиента, балансировщик нагрузки использует прокси-протокол. Squid (3.5+) "поддерживает" протокол прокси и позволяет использовать его в acl. Рабочая конфигурация, которую я видел для разрешения доступа к прокси-протоколу, приведена ниже:
acl localnet src 10.0.0.0/8
http_port 3128 require-proxy-header
http_port 3128
proxy_protocol_access allow localnet
Однако это не позволяет мне фильтровать последующие запросы на основе dstdomain. Я также пробовал
acl allowed dstdomain .google.com
acl localnet src 10.0.0.0/8
http_port 3128 require-proxy-header
http_port 3128
proxy_protocol_access allow localnet allowed
, но из-за этого мои запросы curl возвращались с ошибкой 53 пустых запросов. Я пробовал
acl allowed dstdomain .google.com
http_port 3128 require-proxy-header
http_port 3128
proxy_protocol_access allow allowed
Поведение аналогично приведенному выше. Я также пробовал
acl localnet src 10.0.0.0/8
http_port 3128 require-proxy-header
http_port 3128
proxy_protocol_access allow localnet
acl allowed dstdomain .google.com
http_access allow allowed
http_access deny all
И это привело к тому, что весь трафик был разрешен. (Я также пробовал поменять местами эти 2 блока с теми же результатами.
Я что-то упустил? Есть ли у кого-нибудь рабочая конфигурация, которая позволяет использовать фильтрацию домена и протокол прокси?
Посмотрев на это еще, я смог исправить конфигурацию, чтобы она работала. Это работает:
acl localnet src 10.0.0.0/8
http_port 3128 require-proxy-header
http_port 3128
proxy_protocol_access allow localnet
acl allowed dstdomain .google.com .yahoo.com
http_access allow allowed
http_access deny all
Хотя я пробовал это раньше, я столкнулся с проблемой с http_access deny all
было указано выше.
proxy_protocol_access просто устанавливает, откуда можно принять протокол прокси. При просмотре журнала cache.log при перезагрузке кажется, что любая фильтрация dstdomain в proxy_protocol_access на самом деле не разрешена.
Примечание: правила применяются в порядке появления в конфигурации и по мере совпадения. . Таким образом, если выше появляется отказ, запрос отклоняется.
Дополнительная информация журнала может быть предоставлена для устранения неполадок с помощью debug_options
, в частности debug_options 3,28
для устранения неполадок с файлом конфигурации. (Более подробная информация здесь: http://wiki.squid-cache.org/KnowledgeBase/DebugSections )
http://www.squid-cache.org/Doc/config/proxy_protocol_access/