Главная > Програмное обеспечение > для Internet >
SQUID Часто задаваемые вопросы [5/9]

4 Squid и браузеры

Большинств доступных web браузеров поддерживают прокси и легко конфигурируются для поддержки Squid в качестве прокси. Некоторые из них поддерживают расширенные возможности такие как список доменов или URL шаблоны которые не следует кешировать, или JavaScript для автоматической настройки.

4.1 Ручная настройка Netscape

Выберите Network Preferences из меню Options. На закладке Proxies, щелкните на Manual Proxy Configuration а затем на кнопке View. Для каждого протокола который поддерживает Ваш Squid (по умолчанию, HTTP, FTP, и gopher) введите имя или IP адрес Squid и номер порта (по умолчанию 3128) в колонке Port. Для тех протоколов, которые Ваш Squid не поддерживает оставьте поля пустыми.

Здесь вид экрана ручной настройки прокси Netscape Navigator.

4.2 Автоматическая настройка Netscape

Настройка прокси Netscape Navigator может быть атоматизирована при помощи JavaScript (для версий Navigator 2.0 или выше). Выберите Network Preferences из меню Options. На закладке Proxies, щелкните на Automatic Proxy Configuration и впишите URL Вашего файла JavaScript конфигурации прокси.

Здесь вид экрана автоматической настройки прокси Netscape Navigator. Вы также можете обратиться к документации Netscape по системе конфигурации прокси Navigator при помощи JavaScript по адресу http://home.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html

Здесь пример автоконфигурации на JavaScript от Oskar Pearson:

//We (www.is.co.za) run a central cache for our customers that they
//access through a firewall - thus if they want to connect to their intranet
//system (or anything in their domain at all) they have to connect
//directly - hence all the "fiddling" to see if they are trying to connect
//to their local domain.

//Replace each occurrence of company.com with your domain name
//and if you have some kind of intranet system, make sure
//that you put it's name in place of "internal" below.

//We also assume that your cache is called "cache.company.com", and
//that it runs on port 8080. Change it down at the bottom.

//(C) Oskar Pearson and the Internet Solution (http://www.is.co.za)
    function FindProxyForURL(url, host)
        {
            //If they have only specified a hostname, go directly.
            if (isPlainHostName(host))
                    return "DIRECT";
            //These connect directly if the machine they are trying to
            //connect to starts with "intranet" - ie http://intranet
            //Connect  directly if it is intranet.*
            //If you have another machine that you want them to
            //access directly, replace "internal*" with that
            //machine's name
            if (shExpMatch( host, "intranet*")||
                            shExpMatch(host, "internal*"))
                return "DIRECT";
            //Connect directly to our domains (NB for Important News)
            if (dnsDomainIs( host,"company.com")||
            //If you have another domain that you wish to connect to
            //directly, put it in here
                            dnsDomainIs(host,"sistercompany.com"))
                return "DIRECT";
            //So the error message "no such host" will appear through the
            //normal Netscape box - less support queries :)
            if (!isResolvable(host))
                    return "DIRECT";
            //We only cache http, ftp and gopher
            if (url.substring(0, 5) == "http:" ||
                            url.substring(0, 4) == "ftp:"||
                            url.substring(0, 7) == "gopher:")
            //Change the ":8080" to the port that your cache
            //runs on, and "cache.company.com" to the machine that
            //you run the cache on
                    return "PROXY cache.company.com:8080; DIRECT";
            //We don't cache WAIS
            if (url.substring(0, 5) == "wais:")
                    return "DIRECT";
            else
                    return "DIRECT";
        }

4.3 Настройка Lynx и Mosaic

Для Mosaic и Lynx, надо задать переменные окружения перед запуском. Например (для csh или tcsh):

% setenv http_proxy http://mycache.example.com:3128/
% setenv gopher_proxy http://mycache.example.com:3128/
% setenv ftp_proxy http://mycache.example.com:3128/

Для Lynx настройки прокси можно сделать в файле lynx.cfg. При такой настройке все пользователи Lynx смогут пользоваться прокси без дополнительного задания окружения для каждого пользователя. Например:

        http_proxy:http://mycache.example.com:3128/
        ftp_proxy:http://mycache.example.com:3128/
        gopher_proxy:http://mycache.example.com:3128/

4.4 Настройка Microsoft Internet Explorer

Выберите Options из меню View. Щелкните на закладке Connection. Выберите Connect through Proxy Server и нажмите кнопку Proxy Settings. Для каждого протокола который поддерживает Ваш Squid (по умолчанию, HTTP, FTP, и gopher) введите имя или IP адрес Squid и номер порта (по умолчанию 3128) в колонке Port. Те протоколы, которые Ваш Squid не поддерживает оставьте зти поля пустыми.

Здесь вид экрана настройки прокси Internet Explorer.

Microsoft также собирается поддерживать как у Netscape автоматическую настройку прокси через JavaScript. Сейчас, только MSIE версии 3.0a для Windows 3.1 и Windows NT 3.51 поддерживает эту возможность (например, в версии 3.01 build 1225 для Windows 95 и NT 4.0, ее нет).

Если Ваша версия MSIE поддерживает такую возможность, выберите Options из меню View. Щелкните на закладке Advanced и в левом нижнем углу щелкните на кнопке Automatic Configuration. Впишите URL Вашего файла JavaScript. Потом перезапустите MSIE. MSIE будет пересчитывать файл JavaScript каждый раз при запуске.

4.5 Настройка Netmanage Internet Chameleon WebSurfer

Netmanage WebSurfer поддерживает ручную настройку прокси и список исключений хостов или доменов не подлежащих кешированию (информация по версии WebSurfer 5.0). Выберите Preferences из меню Settings. Щелкните на закладке Proxies. Выберите опцию Use Proxy для HTTP, FTP, и gopher. Затем для каждого протокола введите имя или IP адрес Squid и номер порта (по умолчанию, 3128) в поле Port. Остальные поля оставьте пустыми.

Вид экрана прилагается.

В этом же окне есть кнопка вызывающая окно исключений, где можно задать хосты или домены, котрые не надо кешировать. Здесь вид экрана.

4.6 Как сделать, чтобы пользователи браузеров пользовались кешем без их настройки?

Можно сделать прозрачное кеширование на Linux, Solaris, и BSD версиях. Смысл в том, что операционная система перенаправляет некоторые IP пакеты приложению. Этот документ на данный момент содержит инструкции по настройке прозрачного кеширования на Linux и Solaris.

4.6.1 Прозрачный прокси для Solaris, SunOS, и BSD систем

Ищите здесь http://cheops.anu.edu.au/~avalon/ip-filter.html

4.6.2 Прозрачный прокси для Linux

[Contributed by Rodney van den Oever <Rodney.van.den.Oever@tip.nl>]

Warning: this technique has several significant shortcomings!

В файле access.log не отображаются имена хостов в URL.
Вместо этого печатаются исходные IP адреса. Это из-за того, что адрес назначения определяется системным вызовом getsockname(2). Это значит, что родительский или братский кеш работают не корректно. Сами эти кеши пишут в URL'е имена, а не IP адреса. Эти URL'ы разные и не происходит попадания в кеш при повторном запросе. Это значит, что Вы теряете преимущество от иерархического прокси, если используете прозрачное кеширование.
Данный метод поддерживает только HTTP протокол, и не поддерживает gopher или FTP
Так как в браузере не установлена поддержка прокси, то он использует FTP протокол (с 21 портом назначения), а не требуемый HTTP. Нельзя задать правила перенаправления на прокси, так как браузер использует другой протокол. Та же ситуация и с gopher. Обычно все запросы к прокси транслируются клиентом в HTTP протокол, но раз клиент ничего не знает о перенаправлении, то ничего не происходит.
Если Вас такая ситуация устраивает, вперед к компиляции ядра с поддержкой брандмауэра и перенаправления. Здесь приведены важные параметры из /usr/src/linux/.config:
    #
    # Code maturity level options
    #
    CONFIG_EXPERIMENTAL=y
    #
    # Networking options
    #
    CONFIG_FIREWALL=y
    # CONFIG_NET_ALIAS is not set
    CONFIG_INET=y
    CONFIG_IP_FORWARD=y
    # CONFIG_IP_MULTICAST is not set
    CONFIG_IP_FIREWALL=y
    # CONFIG_IP_FIREWALL_VERBOSE is not set
    CONFIG_IP_MASQUERADE=y
    CONFIG_IP_TRANSPARENT_PROXY=y
    CONFIG_IP_ALWAYS_DEFRAG=y
    # CONFIG_IP_ACCT is not set
    CONFIG_IP_ROUTER=y
Здесь http://www.xos.nl/linux/ipfwadm/ возьмите исходники ipfwadm и установите его. Ipfwadm понадобится для задания правил перенаправления. Я добавил эти правила в скрипт запускаемый из /etc/rc.d/rc.inet1 (Slackware) который устанавливает интерфейс в момент загрузки. Перенаправление должно быть завершено до задания любых входных правил. Чтобы убедиться, что это работает я отключил forwarding (masquerading).

/etc/rc.d/rc.firewall:

#!/bin/sh
# rc.firewall Linux kernel firewalling rules
FW=/sbin/ipfwadm

# Flush rules, for testing purposes
for i in I O F # A # If we enabled accouting too
do
${FW} -$i -f
done

# Default policies:
${FW} -I -p rej # Incoming policy: reject (quick error)
${FW} -O -p acc # Output policy: accept
${FW} -F -p den # Forwarding policy: deny

# Input Rules:

# Loopback-interface (local access, eg, to local nameserver):
${FW} -I -a acc -S localhost/32 -D localhost/32

# Local Ethernet-interface:

# Redirect to Squid proxy server:
${FW} -I -a acc -P tcp -D default/0 80 -r 80

# Accept packets from local network:
${FW} -I -a acc -P all -S localnet/8 -D default/0 -W eth0

# Only required for other types of traffic (FTP, Telnet):

# Forward localnet with masquerading (udp and tcp, no icmp!):
${FW} -F -a m -P tcp -S localnet/8 -D default/0
${FW} -F -a m -P udp -S localnet/8 -D default/0
Весь траффик локальной сети с любым адресом назначения перенаправляется на локальный 80 порт. Правила можно посмотреть и они будут выглядеть как-то так:
    IP firewall input rules, default policy: reject
    type  prot source               destination          ports
    acc   all  127.0.0.1            127.0.0.1            n/a
    acc/r tcp  10.0.0.0/8           0.0.0.0/0            * -> 80 => 80
    acc   all  10.0.0.0/8           0.0.0.0/0            n/a
    acc   tcp  0.0.0.0/0            0.0.0.0/0            * -> *
Здесь важные установки в squid.conf:
    http_port               80
    icp_port                3130
    httpd_accel             virtual 80
    httpd_accel_with_proxy  on
Внимание, virtual это магическое слово здесь!

Я протестировал на Windows 95 как с Microsoft Internet Explorer 3.01 так и Netscape Communicator и это работает с обоими с отключенными установками прокси.

Один раз squid кажется зациклился когда я указал браузеру на локальный 80 порт. Но этого можно избежать добавив строку:

    ${FW} -I -a rej -P tcp -S localnet/8 -D dec/32 80


    IP firewall input rules, default policy: reject
    type  prot source               destination          ports
    acc   all  127.0.0.1            127.0.0.1            n/a
    rej   tcp  10.0.0.0/8           10.0.0.1             * -> 80
    acc/r tcp  10.0.0.0/8           0.0.0.0/0            * -> 80 => 80
    acc   all  10.0.0.0/8           0.0.0.0/0            n/a
    acc   tcp  0.0.0.0/0            0.0.0.0/0            * -> *
Замечание о преобразовании имен: Вместо того, чтобы просто передать URL прокси, браузер сам преобразовывает их. Удостоверьтесь, что на рабочих станциях прописаны локальные DNS сервера.

Если на брандмауэре или прокси сервере работает DNS сервер (что является хорошей идеей IMHO) пусть рабочие станции используют его.


Страница 1 2 3 4 5 6 7 8 9 <<< Предыдущая Следущая >>>


Украинская Баннерная Сеть

Главная  Алфавитный индекс  Справка  Добавить FAQ  E-mail
Новости  Поиск по сайту

Copyright © 2001 - 2003 Olexandr Slobodyan.
Сайт создан в системе uCoz