Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 3. Конфигурация DNS , NTP и установка Squid

imageДля обеспечения корректной работы механизмов аутентификации прокси-сервера Squid нам потребуется выполнить настройку механизма разрешения имён DNS и службу синхронизации времени по протоколу NTP. В первой заметке мы определились с тем, что наш Ubuntu Server будет включён в существующую инфраструктуру Active Directory (AD), где в качестве серверов DNS выполняющих разрешение имён как внутренних зон DNS так и любых внешних, выступают контроллеры домена. Поэтому Ubuntu Server будет настроен нами как DNS-клиент отправляющий DNS-запросы к контроллерам домена. Помимо этого, для успешной работы Kerberos нам потребуется, чтобы текущее время на Ubuntu Server было сопоставимо с временем на клиентских компьютерах и контроллерах домена. Как правило, в инфраструктуре AD клиентские компьютеры синхронизируют время с контроллерами домена, где работает службы NTP, поэтому по аналогии настроим Ubuntu Server на получение точного времени с контроллеров домена. В конце этой заметки, после настройки DNS и NTP, выполним установку Squid.

Настраиваем конфигурацию DNS

Для начала проверим содержимое файла resolv.conf, которое ранее было сконфигурировано в процессе установки Ubuntu Server:

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.160.0.253
nameserver 10.160.0.254
search holding.com

Как видим в файле уже есть информация о двух nameserver и имени домена используемом для поиска. Нам нужно добавить в этот файл строчку domain holding.com. Однако метод прямой правки файла для нас не будет иметь смысла, так как он, согласно комментария в заголовке файла, будет переписан утилитой resolvconf. Поэтому изменим один из конфигурационных файлов этой утилиты (файл будет создан, если его не существует):

sudo nano /etc/resolvconf/resolv.conf.d/tail

Впишем в этот файл нужную нам строку, которая будет дописана в конец файла resolv.conf при его генерации утилитой resolvconf:

domain holding.com

Выполним команду регенерации resolv.conf:

sudo resolvconf -u

Снова проверим содержимое файла resolv.conf и убедимся в том, что нужная нам строка была в него добавлена

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.160.0.253
nameserver 10.160.0.254
search holding.com
domain holding.com

Дополнительные объяснения того, как формируется файл resolv.conf с помощью утилиты resolvconf можно найти например в статье Stéphane Graber’s — DNS in Ubuntu 12.04

***

Убеждаемся в том, что DNS-клиент функционирует корректно и способен разрешать адреса как из внутренней доменной зоны DNS (А-записи) так и из интернета.

ping kom-ad01-dc01.holding.com -c 4 && ping ya.ru -c 4
PING kom-ad01-dc01.holding.com (10.160.0.253) 56(84) bytes of data.
64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=1 ttl=128 time=0.175 ms
64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=2 ttl=128 time=0.250 ms
64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=3 ttl=128 time=0.258 ms
64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=4 ttl=128 time=0.422 ms

--- kom-ad01-dc01.holding.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.175/0.276/0.422/0.090 ms

PING ya.ru (213.180.204.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=56 time=39.5 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=58 time=39.1 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=3 ttl=58 time=39.2 ms
64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=4 ttl=58 time=39.5 ms

--- ya.ru ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3013ms
rtt min/avg/max/mdev = 39.147/39.373/39.552/0.173 ms

***

Проверяем наличие PTR-записей во внутренней DNS-зоне обратного просмотра для контроллеров домена, а также для нашего будущего прокси-сервера (их мы должны создать предварительно) по примеру:

dig -x 10.160.0.2

; <<>> DiG 9.9.5-3-Ubuntu <<>> -x 10.160.0.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23738
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;2.0.160.10.in-addr.arpa.       IN      PTR

;; ANSWER SECTION:
2.0.160.10.in-addr.arpa. 3600   IN      PTR     kom-ad01-gw10.holding.com.

;; Query time: 1 msec
;; SERVER: 10.160.0.253#53(10.160.0.253)
;; WHEN: Fri May 30 22:47:54 MSK 2014
;; MSG SIZE  rcvd: 98

 

Настраиваем конфигурацию NTP

Устанавливаем на наш Ubuntu Server службу NTPD, которая будет отвечать в системе за постоянную синхронизацию времени.

sudo apt-get install ntp

Настраиваем конфигурационный файл службы

sudo nano /etc/ntp.conf

Комментируем строчки где прописаны NTP-серверы Ubuntu и добавляем контроллеры домена

# server 0.ubuntu.pool.ntp.org
# server 1.ubuntu.pool.ntp.org
# server 2.ubuntu.pool.ntp.org
# server 3.ubuntu.pool.ntp.org
# server ntp.ubuntu.com
server kom-ad01-dc01.holding.com server kom-ad01-dc02.holding.com

При необходимости мы можем отключить поддержку IPv6 для ntp отредактировав файл /etc/default/ntp. Для этого нужно найти строчку…

NTPD_OPTS='-g'

…и заменить её на:

NTPD_OPTS='-4 -g'

Чтобы отвадить ntpd прослушивать все интерфейсы за исключением нужных нам, в конец конфигурационного файла /etc/ntp.conf добавляем строчки:

interface ignore wildcard
interface listen 10.160.0.2

Перезапускаем службу ntpd и проверяем результат:

sudo invoke-rc.d ntp stop
 * Stopping NTP server ntpd   [ OK ]

sudo invoke-rc.d ntp start
 * Starting NTP server ntpd   [ OK ]

sudo ss -lnptu | sort | grep :123
tcp    UNCONN     0    0     10.160.0.2:123       *:*      users:(("ntpd",12738,17))
tcp    UNCONN     0    0     127.0.0.1:123        *:*      users:(("ntpd",12738,16))

Проверяем статус синхронизации

sudo ntpq –4 -p

Проверяем текущее время:

date

 

Устанавливаем SQUID

Теперь настало время выполнить установку Squid 3, так как в дальнейшем для настройки поддержки механизмов аутентификации нам потребуется наличие каталога /etc/squid3/

sudo apt-get install squid3 ldap-utils

После установки проверим с какими параметрами собран установленный Squid, чтобы убедиться в том, что он сможет работать со всеми нужными нам хелперами (вспомогательными утилитами выполняющими аутентификацию и авторизацию пользователей)

squid3 -v
Squid Cache: Version 3.3.8
Ubuntu
configure options:  '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'

Отдельным цветом выделены хелперы наличие которых нам будет необходимо для дальнейшей настройки Squid.

В следующей части мы рассмотрим процедуру подготовки Ubuntu Server к работе с механизмами аутентификации Kerberos и NTLM.

***

Предыдущие части цикла заметок:

Часть 1. Установка ОС на ВМ Hyper-V Gen2
Часть 2. Настройка диска для кэша Squid

Следующие части цикла заметок:

Часть 4. Конфигурация Kerberos и NTLM
Часть 5. Конфигурация Squid 3
Часть 6. Настройка Proxy Auto Configuration (WPAD)
Часть 7. Кастомизация страниц ошибок
Часть 8. Конфигурация SqStat
Часть 9. Конфигурация LightSquid
Часть 10. Отключаем IPv6

Всего комментариев: 5 Комментировать

  1. Игорь /

    Спасибо! Очень хорошая статься. Когда будет продолжение?

    1. Алексей Максимов / Автор записи

      Пока воюем со схемами аутентификации Kerberos и NTLM. В принципе работающая конфигурация уже получена но есть ещё, что попробовать. Хочется выдать в итоге какое-то более или менее годное решение, поэтому пока с публикацией не тороплюсь. Но мы над этим работаем :)

  2. Andrey Lyubimets /

    Добавлять domain holding.com в resolv.conf не нужно.

    Этого вполне достаточно:
    nameserver 10.160.0.253
    nameserver 10.160.0.254
    search holding.com

  3. Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 6. Настройка Proxy Auto Configuration (WPAD) | Блог IT-KB /

  4. Обратная ссылка: Высоко-доступный балансировщик Zen Load Balancer (ZenLB) Community Edition на базе 64-битной ОС Ubuntu Server 14.04 | Блог IT-KB /

Добавить комментарий