Squid добавляет IP-адрес LAN, имя пользователя squid и порт squid в запрос при использовании url_rewrite_program

Я использую squid в качестве прозрачного прокси с перехватом SSL Bump.

Конфигурация портов HTTP и HTTPS Squid:

http_port 3127 transparent
https_port 3129 intercept ssl-bump generate-host-certificates=on cert=/opt/squid/ssl_cert/cert.crt key=/opt/squid/ssl_cert/cert.key options=NO_SSLv2,NO_SSLv3

Я написал следующую программу URL для принудительный безопасный поиск Google и duckduckgo:

#!/usr/bin/perl
use strict;
use URI::URL;

# Turn off buffering to STDOUT
$| = 1;

# Read from STDIN
while (<STDIN>) {
    # Do some trimming
    s/^\s*//;
    s/\s*$//;

        my $string = $_;

    # Google Safe search
        if ($string =~ m/^http(s?)\:\/\/([a-z]+\.)?google\.([a-z]{2,3})(\.[a-z]{2,3})?\/.*(\?(as_)?q=)|(\#(as_)?q=)|(\&(as_)?q=)/) {
                #print "OK rewrite-url=\"$string", "&safe=active\"";
                if ($string !~ m/&safe=active/) {
                        print "OK url=\"$string", "&safe=active\"";
                        print "\n";
                } else {
                        print "OK\n";
                }
        }

        # Duckduckgo safe search
        elsif ($string =~ m/^http(s?)\:\/\/([a-z]+\.)?duckduckgo\.([a-z]{2,3})(\.[a-z]{2,3})?/) {
                #print "OK rewrite-url=\"$string", "&kp=1\"";
                if ($string !~ m/&kp=1/) {
                        print "OK url=\"$string", "&kp=1\"";
                        print "\n";
                } else {
                        print "OK\n";
                }
        }

        # If no one match, url still intact
        else {
                print "ERR\n";
        }
}

В конфигурации squid я добавляю следующую строку:

url_rewrite_program /opt/squid/bin/url_rewriter

url_rewriter хорошо переписывает URL при тестировании в CLI:

./url_rewriter
https://www.google.fr/?q=test
OK url="https://www.google.fr/?q=test&safe=active"
https://www.duckduckgo.com/
OK url="https://www.duckduckgo.com/&kp=1"

Он отлично работает в браузере, за исключением того, что squid всегда добавляет LAN IP, имя пользователя и порт squid в запросе. Например, он добавляет это в запрос:

"%20192.168.1.18/192.168.1.18%20benoit%20GET%20myip=-%20myport=3129"

Для Google я получаю следующее:

https://www.google.fr/?q=test%20192.168.1.18/192.168.1.18%20benoit%20GET%20myip=-%20myport=3129&safe=active

вместо:

https://www.google.fr/?q=test&safe=active

Для duckduckgo я получаю

https://duckduckgo.com/%20192.168.1.18/192.168.1.18%20benoit%20GET%20myip=-%20myport=3127&kp=1

вместо:

https://duckduckgo.com/&kp=1

Почему у меня такое поведение? Я что-то пропустил ? При необходимости я могу опубликовать дополнительную конфигурацию.

0
задан 5 September 2017 в 12:28
2 ответа

Я нашел решение сам.

Да, я пропустил, чтобы дать версию Squid, и это была важная информация в моем случае. Я использую версию 3.5.20

В каждом запросе при использовании URL-rewriter/redirector helper программы появилась новая директива с именем url_rewrite_extras из squid 3.5

http://www.squid-cache.org/Doc/config/url_rewrite_extras/

По умолчанию при использовании URL-rewriter/redirector helper в каждом запросе добавляется : "%>a/%>A%un %>rm myip=%la myport=%lp".

Таким образом, я добавляю опцию перезаписи этого значения. Мне пришлось задать пробел в качестве значения, так как url_rewrite_extras "" добавил тире "-" в запрос.

url_rewrite_extras " "
url_rewrite_program /opt/squid/bin/url_rewriter
0
ответ дан 24 November 2019 в 03:54

Да вы упустили мельчайшую деталь. Squid не добавляет элементы myip = и т. Д. Позже, но до того, как отправит URL-адрес вашему модулю перезаписи. Это означает, что вы должны удалить его, прежде чем передать его обратно в squid.

Не все версии squid это делают, но он задокументирован до версии 3.4

TomTomTom

0
ответ дан 24 November 2019 в 03:54

Теги

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