В интернете можно встретить ряд свидетельств того, что при включенной по умолчанию в Squid3 поддержке IPv6 и при этом ненастроенных и неиспользуемых интерфейсах IPv6 можно столкнуться с разнообразными проблемами. В этой заметке мы рассмотрим то, как можно отключить на Ubuntu Server 14.04 LTS поддержку IPv6, а также выполним пересборку пакета Squid3, чтобы отбить у Squid желание использовать IPv6.
Отключаем IPv6 в Ubuntu Server
Убедимся в том, что в системе действительно присутствуют ipv6 интерфейсы:
ip a | grep inet
Также можно увидеть, что некоторые приложения вывешивают TCP прослушиватели на интерфейсах IPv6. Посмотреть все прослушиваемые в системе порты можно командой:
sudo ss -lnptu | sort
Чтобы выключить поддержку IPv6 на всех сетевых интерфейсах сразу, открываем на редактирование файл sysctl.conf
sudo nano -Y sh /etc/sysctl.conf
В конец файла добавляем строку:
net.ipv6.conf.all.disable_ipv6 = 1
Для проверки того, что наша опция сможет быть прочитана sysctl во время загрузки выполним:
sudo sysctl -p
Перезагружаем сервер и снова проверяем список интерфейсов, где inet6 интерфейсов уже не должно остаться
ip a | grep inet
Пересобираем пакет Squid3
Как уже было замечено, в репозиториях Ubuntu пакет Squid3 собран с включенной поддержкой IPv6. Описанные ниже процедуры помогут нам пересобрать и установить этот пакет с отключенной поддержкой IPv6.
Шаг #1. Устанавливаем пакеты, необходимые для перестроения пакета squid3:
sudo apt-get build-dep squid3 Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'libcap-dev' instead of 'libcap2-dev' The following NEW packages will be installed: autoconf automake autotools-dev binutils build-essential cdbs comerr-dev cpp cpp-4.8 debhelper dh-apparmor dh-translations dpkg-dev g++ g++-4.8 gcc gcc-4.8 gettext intltool intltool-debian krb5-multidev libasan0 libatomic1 libc-dev-bin libc6-dev libcap-dev libcloog-isl4 libcppunit-1.13-0 libcppunit-dev libcroco3 libdb-dev libdb5.3-dev libdpkg-perl libecap2-dev libencode-locale-perl libexpat1-dev libfile-listing-perl libgcc-4.8-dev libgomp1 libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libio-html-perl libio-socket-ssl-perl libisl10 libitm1 libkrb5-dev libldap2-dev libltdl-dev liblwp-mediatypes-perl liblwp-protocol-https-perl libmpc3 libmpfr4 libnet-http-perl libnet-ssleay-perl libnetfilter-conntrack-dev libnfnetlink-dev libpam0g-dev libquadmath0 libsasl2-dev libstdc++-4.8-dev libtsan0 libunistring0 liburi-perl libwww-perl libwww-robotrules-perl libxml-parser-perl libxml2-dev linux-libc-dev m4 make pkg-config po-debconf python-scour 0 upgraded, 78 newly installed, 0 to remove and 0 not upgraded. Need to get 33.6 MB of archives. After this operation, 130 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Шаг #2. Загружаем исходные файлы используемые для сборки пакета squid3:
sudo apt-get source squid3 Reading package lists... Done Building dependency tree Reading state information... Done Need to get 3,046 kB of source archives. Get:1 http://ru.archive.ubuntu.com/ubuntu/ trusty/main squid3 3.3.8-1ubuntu6 (dsc) [1,703 B] Get:2 http://ru.archive.ubuntu.com/ubuntu/ trusty/main squid3 3.3.8-1ubuntu6 (tar) [2,993 kB] Get:3 http://ru.archive.ubuntu.com/ubuntu/ trusty/main squid3 3.3.8-1ubuntu6 (diff) [51.4 kB] Fetched 3,046 kB in 8s (365 kB/s) gpgv: Signature made Tue 18 Feb 2014 07:15:47 AM MSK using DSA key ID C6CEA0C9 gpgv: Can't check signature: public key not found dpkg-source: warning: failed to verify signature on ./squid3_3.3.8-1ubuntu6.dsc dpkg-source: info: extracting squid3 in squid3-3.3.8 dpkg-source: info: unpacking squid3_3.3.8.orig.tar.bz2 dpkg-source: info: unpacking squid3_3.3.8-1ubuntu6.debian.tar.gz dpkg-source: info: applying 01-cf.data.debian.patch dpkg-source: info: applying 02-makefile-defaults.patch dpkg-source: info: applying 15-cachemgr-default-config.patch dpkg-source: info: applying 16-ipc-statedir.patch dpkg-source: info: applying 90-cf.data.ubuntu.patch dpkg-source: info: applying 99-ubuntu-ssl-cert-snakeoil.patch dpkg-source: info: applying fix-pod2man-config.test.patch dpkg-source: info: applying fix-distribution.patch
В домашнем каталоге пользователя (он же текущий каталог) появятся новые файлы
ls -la | grep squid drwxr-xr-x 20 root root 4096 Jun 24 11:16 squid3-3.3.8 -rw-r--r-- 1 root root 51440 Feb 18 07:18 squid3_3.3.8-1ubuntu6.debian.tar.gz -rw-r--r-- 1 root root 1703 Feb 18 07:18 squid3_3.3.8-1ubuntu6.dsc -rw-r--r-- 1 root root 2992708 Aug 14 2013 squid3_3.3.8.orig.tar.bz2
Если по какой-то причине не появился распакованный каталог исходников squid3-3.3.8, запускаем команду на распаковку пакета исходных текстов из файла squid3_3.3.8-1ubuntu6.dsc
sudo dpkg-source -x /home/user/squid3_3.3.8-1ubuntu6.dsc
Шаг #3. Устанавливаем пакеты для обеспечения сборочной среды
sudo apt-get install build-essential devscripts fakeroot Reading package lists... Done Building dependency tree Reading state information... Done build-essential is already the newest version. The following extra packages will be installed: dctrl-tools diffstat distro-info-data dput hardening-includes libapt-pkg-perl libarchive-zip-perl libauthen-sasl-perl libautodie-perl libclone-perl libcommon-sense-perl libdigest-hmac-perl libdistro-info-perl libemail-valid-perl liberror-perl libexporter-lite-perl libfakeroot libfile-basedir-perl libio-pty-perl libio-socket-inet6-perl libio-stringy-perl libipc-run-perl libipc-system-simple-perl libjson-perl libjson-xs-perl liblist-moreutils-perl libmailtools-perl libnet-dns-perl libnet-domain-tld-perl libnet-ip-perl libnet-smtp-ssl-perl libparse-debcontrol-perl libperlio-gzip-perl libsocket6-perl libsub-identify-perl libtext-levenshtein-perl libtie-ixhash-perl lintian patchutils python3-chardet python3-debian python3-magic python3-six t1utils wdiff Suggested packages: debtags bsd-mailx mailx cvs-buildpackage devscripts-el gnuplot libfile-desktopentry-perl libterm-size-perl libyaml-syck-perl mutt svn-buildpackage debian-keyring equivs libsoap-lite-perl mini-dinstall python-bzrlib libgssapi-perl binutils-multiarch libtext-template-perl libyaml-perl The following NEW packages will be installed: dctrl-tools devscripts diffstat distro-info-data dput fakeroot hardening-includes libapt-pkg-perl libarchive-zip-perl libauthen-sasl-perl libautodie-perl libclone-perl libcommon-sense-perl libdigest-hmac-perl libdistro-info-perl libemail-valid-perl liberror-perl libexporter-lite-perl libfakeroot libfile-basedir-perl libio-pty-perl libio-socket-inet6-perl libio-stringy-perl libipc-run-perl libipc-system-simple-perl libjson-perl libjson-xs-perl liblist-moreutils-perl libmailtools-perl libnet-dns-perl libnet-domain-tld-perl libnet-ip-perl libnet-smtp-ssl-perl libparse-debcontrol-perl libperlio-gzip-perl libsocket6-perl libsub-identify-perl libtext-levenshtein-perl libtie-ixhash-perl lintian patchutils python3-chardet python3-debian python3-magic python3-six t1utils wdiff 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. Need to get 3,480 kB of archives. After this operation, 12.6 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Шаг #4. После этого нужно внести изменения в файл squid3-3.3.8/debian/rules
sudo cp /home/user/squid3-3.3.8/debian/rules /home/user/squid3-3.3.8/debian/rules.default sudo nano -Y sh /home/user/squid3-3.3.8/debian/rules
А именно в секции DEB_CONFIGURE_EXTRA_FLAGS добавить следующую строку:
--disable-ipv6 \
Соответственно указанная секция примет следующий вид:
DEB_CONFIGURE_EXTRA_FLAGS := --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 \
--disable-ipv6 \
--with-default-user=proxy
Шаг #5. Затем собираем deb-пакет. Для этого переходим в каталог squid3-3.3.8 и выполняем команду:
cd /home/user/squid3-3.3.8/ sudo dpkg-buildpackage -rfakeroot
Операция займёт продолжительное время и после её завершения в каталоге верхнего уровня появятся deb-пакеты:
ls -l /home/user/ | grep .deb$ -rw-r--r-- 1 root root 1876694 Jun 24 11:53 squid3_3.3.8-1ubuntu6_amd64.deb -rw-r--r-- 1 root root 103250 Jun 24 11:54 squid_3.3.8-1ubuntu6_amd64.deb -rw-r--r-- 1 root root 248114 Jun 24 11:53 squid3-common_3.3.8-1ubuntu6_all.deb -rw-r--r-- 1 root root 8667572 Jun 24 11:54 squid3-dbg_3.3.8-1ubuntu6_amd64.deb -rw-r--r-- 1 root root 128234 Jun 24 11:54 squid-cgi_3.3.8-1ubuntu6_amd64.deb -rw-r--r-- 1 root root 125458 Jun 24 11:54 squidclient_3.3.8-1ubuntu6_amd64.deb -rw-r--r-- 1 root root 119282 Jun 24 11:54 squid-purge_3.3.8-1ubuntu6_amd64.deb
Шаг #6. Смотрим какой версии пакет Squid3 уже установлен в системе:
dpkg -l | grep squid3 ii squid3 3.3.8-1ubuntu6 amd64 Full featured Web Proxy cache (HTTP proxy) ii squid3-common 3.3.8-1ubuntu6 all Full featured Web Proxy cache (HTTP proxy) - common files
Шаг #7. Несмотря на то, что основной конфигурационный файл Squid не должен быть перезаписан, сохраняем его на всякий случай.
sudo cp /etc/squid3/squid.conf /home/user/squid.conf.backup
Шаг #8. Устанавливаем полученный пакет:
cd /home/user/ sudo dpkg -i squid3_3.3.8-1ubuntu6_amd64.deb squid3-common_3.3.8-1ubuntu6_all.deb (Reading database ... 98837 files and directories currently installed.) Preparing to unpack squid3_3.3.8-1ubuntu6_amd64.deb ... squid3 stop/waiting Unpacking squid3 (3.3.8-1ubuntu6) over (3.3.8-1ubuntu6) ... Preparing to unpack squid3-common_3.3.8-1ubuntu6_all.deb ... Unpacking squid3-common (3.3.8-1ubuntu6) over (3.3.8-1ubuntu6) ... Setting up squid3-common (3.3.8-1ubuntu6) ... Setting up squid3 (3.3.8-1ubuntu6) ... squid3 start/running, process 52972 Skipping profile in /etc/apparmor.d/disable: usr.sbin.squid3 Processing triggers for man-db (2.6.7.1-1) ... Processing triggers for ufw (0.34~rc-0ubuntu2) ... Processing triggers for ureadahead (0.100.0-16) ... ureadahead will be reprofiled on next reboot
Шаг #9. Перезагружаем сервер и проверяем результат.
sudo ss -lnptu | grep :3128
tcp LISTEN 0 128 127.0.0.1:3128 *:* users:(("squid3",1271,1840))
tcp LISTEN 0 128 10.160.0.2:3128 *:* users:(("squid3",1271,1839))
Отключаем обновление пакетов.
Если используется автоматическое обновление пакетов, то при желании дополнительно можно исключить возможность обновления для пересобранных нами пакетов и тех пакетов, рабочие файлы которых мы модифицировали в процессе нашего описания.
Посмотрим какие пакеты были установлены вручную а какие автоматически (как зависимости):
sudo apt-mark showmanual | grep squid lightsquid squid3
sudo apt-mark showauto | grep squid squid-langpack squid3-common
Добавим на удержание (запрет обновления) интересующие нас пакеты:
sudo apt-mark hold squid3 squid3-common squid-langpack lightsquid squid3 set on hold. squid3-common set on hold. squid-langpack set on hold. lightsquid set on hold.
Проверим полный список поставленных на удержание пакетов:
sudo apt-mark showhold lightsquid squid-langpack squid3 squid3-common
***
На этом мы завершим серию заметок по настройке прокси-сервера Squid 3.3 на Ubuntu Server 14.04 LTS. В конечном итоге мы получили решение представляющее бесплатную альтернативу Forefront TMG в части базовой функциональности прямого прокси (forward proxy) с поддержкой аутентификации и авторизации пользователей в домене Active Directory.
***
Предыдущие части цикла заметок:
Часть 1. Установка ОС на ВМ Hyper-V Gen2
Часть 2. Настройка диска для кэша Squid
Часть 3. Конфигурация DNS , NTP и установка Squid
Часть 4. Конфигурация Kerberos и NTLM
Часть 5. Конфигурация Squid 3
Часть 6. Настройка Proxy Auto Configuration (WPAD)
Часть 7. Кастомизация страниц ошибок
Часть 8. Конфигурация SqStat
Часть 9. Конфигурация LightSquid
RSS - Записи
хотелось бы почитать про настройку netflow
Большое Вам спасибо за этот цикл статей!
Просто респект за столь подробную статью. Ни багов ни косяков. Настроил и работай. Класс!!!
Можно не отключать IPv6, а установить Miredo (реализация туннеля Teredo для Linux).
Обратная ссылка: Обновляем Squid 3.3.8 до версии 3.4.8 из исходных файлов на Ubuntu Server 14.04.1 LTS | Блог IT-KB /
Спасибо за статью! продела все по мануалу, было пару ошибок но вроде справился. в итоге получилась занятная ситуация:
ext_ldap_group_acl отрабатывает только 4 пользователей..(( остальные не определяются в группах доступа
проверяю например:
sudo /usr/lib/squid3/ext_ldap_group_acl -v 3 -P -R -K -b "ou=Groups,dc=corp,dc=aeroem,dc=ru" -D SquidKerb@XXX.XXX.ru -W /etc/squid3/conf_param_ldappass.txt -f "(&(objectclass=person)(sAMAccountName=%v)(memberOf:1.2.840.113556.1.4.1941:=CN=%g,OU=Groups,DC=XXX,DC=XXX,DC=ru))" -h ad.XXX.XXX.ru adc.XXX.XXX.ru
kff corp-internet-standard
OK
update corp-internet-standard
ERR
оба пользователя лежат в одном каталоге внутри АД...
при чем проработало несколько дней.. и вот те пользователи которые в эти дни работали... работают до сих пор, но новых добавляю в группы и скуид их не пускает. Я если честно в тупике.
если например на ад удалю пользователя kff из группы corp-internet-standard, то ext_ldap_group_acl выдает ERR... т.е. отрабатывает и с доменом работает.
Чтобы ответить на все Ваши вопросы, нужно детально разбирать ситуацию. Делать это лучше на форуме, а не в комментариях.
Добрый вечер.
Всё работает прекрасно .
Есть одно но и непонятно почему.
Все администраторы домена отлично работают , статистика ведётся, всё согласно групп доступа к сайтам, всё ок.
Но обычному пользователю , куда бы я его не добавлял по группам, всегда отказано в доступе.
В чём может быть подвох ?
тоже самое было... разобрался.
нужно сделать делегирование управления для учетки компа-пользователя на "Чтение информации о всех пользователях" я тоже с этим намучился)) Предлагаю Алексею сделать в манулае где то сноску об этом.
Спасибо Вам огромное, Алексей!За подробный и крутой manual по настройке Squid!
Это просто бомба!!! Спасибо тебе Мужик! По банерам понатыкаю!
Спасибо всем за тёплые слова :)
Еще одно огромное спасибо, отключение IPv6 и пересборка Squid - это то, что я искал.