Я установил маршрутизатор и перехватывающий прокси-сервер HTTP Squid на разных машинах. Клиенты должны использовать прокси (без ведома) следующим образом:
Клиент -> Маршрутизатор (DNATing для прокси-сервера) -> Прокси-сервер -> Маршрутизатор -> Интернет
Запросы, поступающие на прокси-сервер, имеют следующие атрибуты:
К сожалению, похоже, что squid пытается пересылать пакеты на адрес назначения запроса, который является самим прокси-сервером, и создает бесконечный цикл. Взято из cache.log
:
2015/12/18 14:11:50 kid1| WARNING: Forwarding loop detected for:
Как я могу настроить 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
Эффективная конфигурация кальмара:
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-адреса назначения запроса.
Я встретил подобное требование и сегодня. После некоторого покопания, похоже, что это функция 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-поиска хоста в режиме перехвата.
http://lartc.org/lartc.html#LARTC.COOKBOOK.SQUID было бы хорошей отправной точкой.
Не применяйте DNAT к прокси, маршрутизируйте к нему трафик, маркируя пакеты. Трафик от прокси будет использовать другой интерфейс. к которому не применяется эта политика маршрутизации.