Мне нужно продемонстрировать и протестировать настройку Squid, которая по умолчанию должна вносить в черный список и разрешать запросы только к URL-адресам из белых списков из известных сетей. В настоящее время он работает в моей тестовой среде и работает должным образом, но я хочу протестировать и продемонстрировать его по запросу, с более приятной обратной связью, чем с curl.
Я развернул Redbot (https://github.com/mnot/redbot), который я настроил для отправки всех HTTP-запросов через прокси-сервер Squid.
С помощью curl -x
с машины Redbot все мои тесты проходят, но при использовании приложения Squid возвращает 400, что бы ни случилось. Все запросы отправляются в Squid, и я вижу каждый запрос, но вместо того, чтобы возвращать 403 и X-Squid-Error: ERR_ACCESS_DENIED 0
, или разрешив запрос, каждый запрос получает 400, а X-Squid-Error: ERR_INVALID_URL 0
.
Копаясь в нем - журналы и tcpdump - я вижу ключевое различие в том, что Redbot отправляет запрос в форме:
GET / HTTP/1.1
Host: chess.com
Curl отправляет:
GET http://chess.com/ HTTP/1.1
Host: chess.com
Из RFC кажется, что запрос Redbot полностью действителен, и поэтому я чувствую, что Squid должен поступить правильно и вывести из заголовка хоста, что хочет Redbot, и пройти через его ACL. Однако это просто ошибки с:
HTTP/1.1 400 Bad Request
Server: squid/3.5.27
Mime-Version: 1.0
Date: Mon, 23 Apr 2018 11:50:23 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 3465
X-Squid-Error: ERR_INVALID_URL 0
X-Cache: MISS from proxy.redaction.com
Via: 1.1 proxy.redaction.com (squid/3.5.27)
Это похоже на проблему с конфигурацией Squid? Или мне нужно, чтобы Redbot делал запрос, как Curl?
Обновить:
Добавление intercept
к http_port
директива привела к тому, что заголовок Host попал в URL-адрес, но теперь Squid выдает 403, даже если ACL должен это разрешать:
z1524498993.558 0 10.8.0.33 TCP_MISS/403 3985 GET
http://www.openstreetmap.com/ - HIER_NONE/- text/html
1524498993.559 0 10.8.2.19 TCP_MISS/403 4077 GET
http://www.openstreetmap.com/ - ORIGINAL_DST/10.8.0.33 text/html
acl cluster src 10.8.0.0/16
acl streetmap dstdomain .openstreetmap.com
http_access allow cluster streetmap
http_access deny all