В интернете можно встретить ряд свидетельств того, что при включенной по умолчанию в 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
хотелось бы почитать про настройку 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 - это то, что я искал.