Назад | Перейти на главную страницу

Проблема CNTLM с интрасетью (возможно, DNS)

На моем компьютере с Linux мне нужно использовать прокси-сервер ISA, который требует аутентификации для доступа в Интернет. Поэтому я установил CNTLM и настроил его так, чтобы он указывал на адрес прокси-сервера и прослушивал порт 4321.

Затем я настроил свой дистрибутив GNOME на использование localhost: 4321 в качестве глобального прокси для HTTP и HTTPS.

Результат: я могу подключиться к Интернету. Я могу пинговать IP-адреса интрасети, я получаю разрешение имен для сайтов интрасети, но я не могу пинговать их или открывать любой сайт интрасети в браузере (настроенном на использование прокси-сервера распространения), если я не использую IP-адрес сайта.

Я безуспешно пытался заблокировать диапазон IP-адресов интрасети в файле конфигурации CNTLM.

Похоже, прокси-сервер ISA некорректно разрешает имена хостов интрасети. Одно из решений - написать автоконфигурация прокси файл, который сообщает клиенту, когда и какой прокси использовать. Это не работает с программами CLI, которые используют http_proxy, но по крайней мере будет работать в браузерах.

Сохраните это в файл вроде ~/proxy.pac и измените в соответствии с вашей средой. В конфигурации прокси-сервера GNOME выберите параметр «Автоматическая конфигурация прокси-сервера» и введите расположение этого файла как file:// URL, например file:///home/htorque/proxy.pac.

function FindProxyForURL(url, host)
{
    // Strip port number
    host = host.replace(/:\d*/, "");

    // Local destinations
    if (    isPlainHostName(host) ||
            dnsDomainIs(host, ".local") ||
            dnsDomainIs(host, ".mycompany") ||
            shExpMatch(host, "127.*.*.*") ||
            shExpMatch(host, "10.*.*.*") ||
            shExpMatch(host, "192.168.*.*") )
        return "DIRECT";

    // External destinations
    return "PROXY localhost:3128";
}