У меня проблемы с DNS при настройке squid. Я также пробовал использовать dns_nameservers
директиву в моем squid.conf, чтобы указать на DNS-серверы. У меня есть сценарий, в котором www.example.com должен выходить в интернет, но foo.example.com должен выходить на внутренний домен. С моего клиента, когда я пытаюсь пинговать foo.example.com, он выбирает правильный IP, но я получаю эту ошибку в своем браузере:
Unable to determine IP address from hostname foo.example.com
The DNS server returned:
Name Error: The domain name does not exist
Я знаю, что мой клиент указывает на правильный IP-адрес (потому что ping работает нормально), но мне интересно, почему Squid пытается подключиться к публичному example.com.
решение1
В документации, которую я читал, говорится, что по умолчанию Squid берет серверы имен из файла /etc/resolv.conf. Однако у меня это не сработало. Хотя сама ОС (Debian) могла разрешить IP, squid жаловался. Я внес следующие изменения и все заработало:
/etc/nsswitch.conf:
hosts: files dns
/etc/hosts:
<ip_of_server> foo.example.com
Я все еще пытаюсь понять, почему Squid не выбирает серверы имен из /etc/resolv.conf.
решение2
Какой DNS-сервер использует клиент? Тот факт, что клиент может его правильно разрешить, не оказывает большого влияния на squid.
При использовании прокси-сервера разрешение DNS выполняется сервером, поэтому разрешение DNS клиента не имеет значения; необходимо лишь иметь возможность разрешить адрес прокси-сервера.
Вы можете пинговать foo.example.com с сервера squid? Если нет, клиент и сервер должны использовать разные DNS-серверы или обслуживать разные представления для этой зоны.