Я настраиваю прокси-сервер 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/