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

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

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

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

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

1 ответ

Решение

Похоже, что прокси-сервер 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";
}
Другие вопросы по тегам