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

Squid не может разрешить адрес локального сервера от RedHat Linux Server

У меня очень любопытная проблема на моем Linux-сервере RedHat. У меня установлен прокси-сервер Squid, который отлично работает для адресов WAN. Однако, когда я пытаюсь получить доступ к своей локальной системе MediaWiki, я получаю

The requested URL could not be retrieved
The following error was encountered: Unable to determine IP address from host name for ServerName

Когда я перезапускаю squid, я могу получить доступ к этим локальным адресам в течение примерно 5 минут, но затем возвращается то же самое сообщение. Теперь я убедился, что могу нормально пинговать ServerName, поэтому проблема не в разрешении имен.

Я также добавил строки в свой squid.conf, которые, по-видимому, указывают на то, что все инструкции, которые я нахожу в Интернете, должны решить проблему.

acl ServerName dstdomain DomainName
always_direct allow ServerName

(ПРИМЕЧАНИЕ: имена были изменены, чтобы защитить невиновных)

Затем я также добавил:

acl MyDomain src 192.168.0.1/255.255.255.192
never_direct deny MyDomain

Тот же результат (и было какое-то странное сообщение от aclParseIpData, предупреждающее меня о том, что моя сетевая маска удаляет часть моего указанного IP-адреса), что, по моему мнению, было действительно очень странным сообщением.

Правильный ответ - изменить файлы proxy.pac и wpad.dat. Вместо того, чтобы просто сказать:

function FindProxyForURL(url,host)
{

 return "PROXY 192.168.0.XX:3128; DIRECT";
}

вместо этого я должен изменить его, чтобы, когда машины увидели, что это имя хоста локального компьютера, а не URL-адрес, они не пытались использовать прокси. Функция isPlainHostName работала отлично. Я использовал следующий код:

function FindProxyForURL(url,host)
{
  if(isPlainHostName(host))
        return "DIRECT";

  return "PROXY 192.168.0.XX:3128; DIRECT";
}

Просто я не знал, как правильно использовать файл .pac, чтобы направлять пользователей на локальные адреса.