Squid HTTP Transparent Proxy для поддельных DNS-запросов

Я работаю над проектом безопасности, который требует удаленно доступного прозрачного прокси. Я настроил виртуальную машину Azure под управлением Ubuntu 18.04 с squid, работающим в качестве прозрачного прокси. Меня интересует только маршрутизация внешнего HTTP-трафика через прокси. У клиента, который будет подключаться к прокси-серверу, настроен DNS-сервер, который подделывает все запросы на IP-адрес виртуальной машины.

Проблема с конфигурацией заключается в том, что squid не прозрачно проксирует HTTP-запросы в соответствии с их заголовком Host , а вместо этого пытается подключиться к исходному IP-адресу назначения (т. Е. Обратно себе). В результате при доступе к веб-сайту HTTP (на примере http://scratchpads.org ) на клиенте наблюдается следующая ошибка:

The following error was encountered while trying to retrieve the URL: http://scratchpads.org/

    Connection to 10.0.1.4 failed

The system returned: (111) Connection refused

Где 10.0.1.4 - это внутренний IP-адрес ВМ.

Конфигурация squid минимальна для целей тестирования:

http_access allow all
http_port 3129
http_port 3128 intercept

Конфигурация iptables на виртуальной машине для пересылки внешнего трафика через squid выглядит следующим образом:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Журнал доступа squid при попытке доступа к веб-сайту выглядит следующим образом:

1614856056.293      0 [request source IP] TCP_MISS/503 4310 GET http://scratchpads.org/ - ORIGINAL_DST/10.0.1.4 text/html
1614856056.619      0 [request source IP] TCP_MISS/503 4218 GET http://scratchpads.org/favicon.ico - ORIGINAL_DST/10.0.1.4 text/html

Я проверил, что DNS-запросы правильно обрабатываются на виртуальной машине, и трафик, исходящий с машины, не маршрутизируется через squid (как хотелось бы), поэтому петля пересылки отсутствует. Также нет ошибок в журналах запуска squid, журналах кеширования или журналах доступа.Я также пробовал различные ACL-списки squid и конфигурации iptables (настройка DNAT и правил маскарадинга), но безрезультатно.

Кто-нибудь знает, как я могу заставить HTTP-запросы перенаправляться в исходное место назначения в соответствии с их заголовком Host , а не обратно на IP-адрес прозрачного прокси?

1
задан 4 March 2021 в 14:07
1 ответ

Оказалось, что это невозможно с помощью squid по некоторым веским причинам. Я решил проблему, настроив Privoxy в режиме "перехвата", который сделал именно то, что мне было нужно.

0
ответ дан 24 April 2021 в 01:03

Теги

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