Squid 3.5: Предотвращение петли пересылки в режиме перехвата

Я установил маршрутизатор и перехватывающий прокси-сервер HTTP Squid на разных машинах. Клиенты должны использовать прокси (без ведома) следующим образом:

Клиент -> Маршрутизатор (DNATing для прокси-сервера) -> Прокси-сервер -> Маршрутизатор -> Интернет

Запросы, поступающие на прокси-сервер, имеют следующее атрибуты:

  • Исходный IP-адрес: исходный IP-адрес клиента
  • Исходный порт: исходный порт клиента
  • Целевой IP-адрес: IP-адрес прокси-сервера (192.168.4.50)
  • Целевой порт: 3380

К сожалению, это похоже, что squid пытается пересылать пакеты на адрес назначения запроса, который является самим прокси-сервером, и создает бесконечный цикл. Взято из cache.log :

18.12.2015 14:11:50 kid1 | ПРЕДУПРЕЖДЕНИЕ: обнаружен цикл пересылки для:

Как я могу настроить squid для разрешения имени хоста в HTTP-запросе через DNS, а затем перенаправлять запросы на разрешенный IP-адрес на HTTP-порт 80 по умолчанию?

Дополнительная информация:

DNAT выполняется iptables на маршрутизаторе со следующим правилом: iptables -t nat -A PRE_VS_PROXY -p tcp --dport 80 -j DNAT --to-destination 192.168.4.50:3380

Пример записи в access.log :

1450444309.741      0 192.168.4.50 TCP_MISS/403 4277 POST http://ocsp.digicert.com/ - HIER_NONE/- text/html
1450444309.742     46 192.168.4.46 TCP_MISS/403 4341 POST http://ocsp.digicert.com/ - ORIGINAL_DST/192.168.4.50 text/html

Действующий конфигурация squid:

http_access allow localhost manager
http_access deny manager

http_access deny to_localhost

cache deny all

http_access allow all
http_access deny all

http_port 3128
http_port 3380 intercept
http_port 3443 intercept

coredump_dir /var/squid/cache/squid
shutdown_lifetime 1 seconds

Глядя на трафик DNS с помощью tcpdump, я вижу, что на самом деле, когда squid обрабатывает HTTP-запросы, выполняются два DNS-запроса: один для разрешения имени хоста в HTTP-запросе, а второй - для обратного просмотра IP-адреса получателя запроса.

3
задан 18 December 2015 в 15:34
2 ответа

http://lartc.org/lartc.html#LARTC.COOKBOOK.SQUID будет хорошей отправной точкой.

Не отсылайте DNAT к прокси-серверу, перенаправляйте трафик к нему, маркируя пакеты. Трафик от прокси будет использовать другой интерфейс, в котором не применяется данная политика маршрутизации.

.
1
ответ дан 3 December 2019 в 06:03

I встретил аналогичное требование и сегодня. После некоторого покопания, похоже, что это функция Squid для предотвращения уязвимого http://www.squid-cache.org/Advisories/SQUID-2011_1.txt .

Чтение кода из https://github.com/squid-cache/squid/blob/master/src/peer_select.cc#L287 . Он намеренно избегает DNS-поиска хоста в режиме перехвата.

3
ответ дан 3 December 2019 в 06:03

Теги

Похожие вопросы