Архив рубрики: Linux

Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.

Автозапуск скрипта при загрузке ОС с помощью Systemd на примере x11vnc. Service-файлы.

С массовым переходом на systemd, вопрос запуска скрипта от имени пользователя root при загрузке ОС, стал всё чаще подниматься на форумах и в умах линуксоидов, которым ещё не приходилось сталкиваться с этой новой системой инициализации. Меня этот вопрос так же не обошёл стороной, когда пришлось внедрять корпоративный дистрибутив, использующий systemd и появилась необходимость запускать при загрузке ОС x11vnc от имени пользователя root. Выяснилось, что в systemd, эта задача решается с помощью service-файлов, имеющих простой для понимания формат и создаваемых по стандартному, для этих целей, шаблону. Файлы эти располагаются в /lib/systemd/system (системные) и /etc/systemd/system (эта директория приоритетнее первой для systemd) и имеют имена вида: название.service. Загляните в эти директории, просмотрите несколько service-файлов имеющих знакомые названия типа network.service или cups.service и в общих чертах всё станет ясно. Содержание созданного мной service-файла таково:

[root@comp-core-2-81b58d system]# cat startvncserver.service
[Unit]
Description=Start vnc server /usr/bin/startvncserver

[Service]
Type=oneshot
ExecStart=/usr/bin/startvncserver
RemainAfterExit=yes

[Install]
WantedBy=graphical.target

Где, Description=Start vnc server /usr/bin/startvncserver — Описание сервиса.
Type=oneshot — Задание метода окончания периода запуска сервиса. Oneshot означает что действие, выполняемое сервисом должно быть окончено до запуска следующего сервиса.
RemainAfterExit=yes — Используется в связке с предыдущей опцией и говорит systemd о том, что данный сервис хоть и завершит свою работу после выполнения скрипта, но должен оставаться со статусом active.
ExecStart=/usr/bin/startvncserver — Путь к скрипту для выполнения.
WantedBy=graphical.target — Параметр, который даёт понять systemd, на какой стадии загрузки системы нужно выполнить данный сервис.  multi-user.target соответствует init3. graphical.target соответствует init5.

Для запуска, остановки, перезапуска, просмотра статуса  и включения в автозгрузку сервиса (и соответственно нашего скрипта), используются стандартные команды systemd.
Запустить:

[root@comp-core-2-81b58d system]# systemctl start startvncserver.service

Остановить:

[root@comp-core-2-81b58d system]# systemctl stop startvncserver.service

Перезапустить:

[root@comp-core-2-81b58d system]# systemctl restart startvncserver.service

Посмотреть статус:

[root@comp-core-2-81b58d system]# systemctl status startvncserver.service

И самое важное! Для запуска сервиса при загрузке ОС, его нужно включить:

[root@comp-core-2-81b58d system]# systemctl enable startvncserver.service

С автозагрузкой скрипта разобрались, теперь разберём сам скрипт и опции запуска vnc сервера x11vnc. В нашем случае, подключаются клиенты только из локальной сети, поэтому шифрование мы не используем. Из необходимых требований — запрет завершения процесса от имени пользователя и запрет чтения пароля на подключение пользователем. Поэтому мы запускаем x11vnc от имени root и храним пароль в файле, доступном на чтение только ему.

[root@comp-core-2-81b58d system]# cat /usr/bin/startvncserver

#!/bin/bash
while [[ $(test -f /var/run/xauth/A* ; echo $?) -ne 0 ]]
do
sleep 1s
done
/usr/bin/x11vnc -noipv6 -shared -forever -passwdfile /etc/x11vncpasswd -bg -display :0 -auth /var/run/xauth/A*

Где, используя цикл while мы задаём проверку того, появился ли файл «магической печенки», необходимый для запуска vnc сервера и если он ещё не появился, то ждём 1 секунду и проверяем вновь. Когда необходимый файл появляется, запускаем x11vnc со следующими опциями:

-noipv6 — Не использовать ipv6.
-shared — Обеспечить возможность подключения одновременно нескольких клиентов. Без этой опции, при подключении одного клиента, второй уже подключиться не сможет.
-forever — Не завершать работу сервера после подключения первого клиента.
-passwdfile /etc/x11vncpasswd — Указать, где искать пароль для подключения. Пароль содержится в текстовом файле, без шифрования, либо создаётся командой x11vnc -storepasswd в интерактивном режиме и записывается в файл ~/.vnc/passwd в шифрованном виде. При использовании первого варианта, нужно выставить права на чтение файла только пользователю root и соответственно запускать x11vnc от имени root, что я в общем и описываю.
-bg — запустить процесс на заднем фоне, то есть отвязать его от текущего терминала.
-display :0 — номер дисплея для подключения. По умолчанию в одномониторных системах это :0.
-auth /var/run/xauth/A* — путь к файлу с магической печенкой 🙂 То есть файлу авторизации X сервера. Где он лежит в вашей системе, можно выяснить так:

[yar4e@yar4e-admin ~]$ ps aux | grep X
yar4e     6888  0.0  0.0    568   144 pts/5    D+   14:39   0:00 grep X
root      7324  0.0  0.9  42356 19852 tty7     Ss+  Mar26  26:19 X :0 vt7 -auth /var/run/xauth/A:0-uyXr3I

Всё вышеописанное реализовывалось на Alt Linux P7 TDE и может незначительно отличаться на вашем дистре.

Автор: Yar4e

Ограничение пропускной ширины канала (шейпинг) средствами Linux

В последнее время, грань между рабочим/домашним компьютером стирается. Все эти облака, концепции BYOD (bring your own device), а так же тотальное покрытие 3G/4G делает пользователей не разборчивыми в своих желаниях. И если, он нашел интересное видео, то почему бы его не скачать на телефон, что бы просмотреть со смартфона, стоя в пробке? Но корпоративные каналы не всегда могут поспевать за такими “потребностями” пользователей. Читать

Полезные Bash скрипты

Пример: очень простой скрипт резервного копирования:

#!/bin/bash
SRCD="/home/"                #SRCD - SouRCe Directory - исходный каталог
TGTD="/var/backups/"         #TGTD - TarGeT Directory - конечный каталог
OF=home-$(date +%Y%m%d).tgz  #OF - Output File - выходной файл
tar -cZf $TGTD$OF $SRCD

Читать

Wine для игр. Мой рецепт. Linux Mint/Ubuntu.

Предисловие.

Количество нативных игр для Linux растёт с каждым днём и это очень радует! Но существует так же полно хороших игр для Windows, которые либо ещё не портировали на Linux, либо не будут портировать на него вообще. К счастью есть WINE, который неумолимо и активно развивается и в нынешнем своём состоянии позволяет абсолютно комфортно, играть в большинство Windows игр. В этой заметке я не буду описывать его установку, настройку и решение проблем запуска конкретных игр — всё это подробно описано на официальном сайте и обсуждалось на многочисленных форумах. Я же опишу пару приёмов, выполняя которые можно превратить абсолютно не играбельную «из коробки» игру в конфетку! Две основные проблемы, не дающие наслаждаться графически «тяжёлыми» играми под WINE — это скорость, с которой исполняется игра, в не зависимости от мощности «железа» (в частности напрягающие «рывки») и заикающийся/трещащий/щёлкающий звук, сопровождающий аудио составляющую игры. Обе эти проблемы решаемы! Начнём.

Повышаем скорость. Запуск игры в отдельном X-сервере.

Этот приём позволяет сильно повысить скорость исполнения игры, убрать или ощутимо сгладить «рывки», которые убивают всё удовольствие от игры. Работает не зависимо от используемой видеокарты, версии драйверов или окружения рабочего стола.
Итак, нужно активировать возможность запуска X-сервера от имени любого пользователя, а не только пользователя root:

# dpkg-reconfigure x11-common

Добавить пользователя, от имени которого запускается WINE в группу audio:

# gpasswd -a username audio

Где, username — имя пользователя.

Подготовительная работа закончена. Перезагружаем компьютер или перелогиниваемся и переходим непосредственно к запуску игры в новом X-сервере. За это отвечает команда xinit. Синтаксис:

$ xinit /usr/bin/command1 /usr/bin/command2 — :1

Где, :1 — номер дисплея.
Обратите внимание, что команды, выполняемые xinit должны обязательно содержать абсолютные пути к файлам, иначе выполняться не будут.
Пример запуска игры Mass Effect 3 в новом X-сервере:

$ xinit /usr/bin/wine ~/.wine/drive_c/Mass Effect 3/Binaries/Win32/MassEffect3.exe — :1

Преимуществом запуска игры в отдельном X-сервере, так же является то, что при этом WINE не сможет изменить разрешение экран на основном рабочем столе (которое он иногда забывает вернуть назад), что спасёт Ваши нервы, а так же появляется возможность безопасного переключения между рабочим столом и игрой по сочетания клавиш: ctrl+alt+F8 — рабочий стол, ctrl+alt+F9 — игра. В основных редакциях Ubuntu этот процесс проходит гладко, а вот в Mint приводит к падению DE. Не страшно, но и не приятно. Как этого избежать, я пока не нашёл.
Стоит так же отметить, что запуская игру в новом X-сервере, возможна ситуация, когда изображение выводится с сильным смещением и большая часть изображения смещается за пределы экрана. Это лечится заданием в утилите winecfg размера виртуального рабочего стола:

Исцеляем щёлкающий/хрипящий/заикающийся звук в игре.

Думаю, люди не далёкие от Linux догадываются, что проблемы со звуком в WINE вызваны всеми любимым Pulse Audio 🙂 И исцелить «щелкунчика», можно указав WINE, что нужно использовать ALSA вместо PULSE AUDIO. Делается это просто:

$ winetricks sound=alsa

После этого перезагружаемся и наслаждаемся тем, как прекрасно WINE запускает Windows игры 🙂

Автор: Yar4e

RFC по сетевым протоколам на русском

TCP/IP — это семейство сетевых протоколов, ориентированных на
совместную работу. В состав семейства входит несколько компонентов:
• IP (Internet Protocol — межсетевой протокол) обеспечивает передачу пакетов дан­
ных с одного компьютера на другой (RFC791);
• ICMP (Internet Control Message Protocol — протокол управляющих сообщений
в Интернете) отвечает за различные виды низкоуровневой поддержки протокола
IP, включая сообщения об ошибках, вспомогательные маршрутизирующие запро­
сы и отладочные сообщения (RFC792);
• ARP (Address Resolution Protocol — протокол преобразования адресов) обеспечи­
вает трансляцию IP-адресов в аппаратные адреса (RFC826)2;
• UDP (User Datagram Protocol — протокол передачи датаграмм пользователя) обе­
спечивает непроверяемую одностороннюю доставку данных (RFC768);
• TCP (Transmission Control Protocol — протокол управления передачей) обеспечи­
вает надежный дуплексный канал связи между процессами на двух компьютерах
с возможностью управления потоками и контроля ошибок (RFC793).
Эти протоколы образуют иерархию, или стек, в котором протокол верхнего уровня
использует протокол нижележащего уровня. Систему TCP/IP обычно описывают в виде
пятиуровневой структуры (рис. 14.1), но реальная система TCP/IP содержит только три
из этих уровней.

 Подборка RFC на русском языке в основном  по сетевым протоколам,все оформленно в удобном виде.

— User Datagram Protocol (Протокол пользовательских дейтаграмм)RFC768
— Internet Protocol (Протокол Интернета)RFC791
— Internet Control Message Protocol (Протокол ICMP )RFC792
— Transmission Control Protocol (Протокол управления передачей. Спецификация протокола)RFC793
— Протокол преобразования адресов Ethernet (ARP)RFC826
— Протокол Echo RFC862
— Discard Protocol (Протокол отбрасывания)RFC863
— Протокол генерации символов RFC864
— Стандарт передачи дейтаграмм IP в сетях Ethernet RFC894
— Протокол RARP RFC903
— Broadcasting Datagrams (Широковещательная рассылка дейтаграмм IP) RFC919
— Broadcasting Internet Datagrams in the Presence of Subnets (Широковещательная рассылка дейтаграмм при наличии подсетей) RFC922
— Internet Standard Subnetting Procedure (Стандартные процедуры организации подсетей IP) RFC950
— Domain Administrators Operations Guide (Руководство администратора домена) RFC1033
— A Standard for the Transmission of IP Datagrams over IEEE 802 Networks (Стандарт передачи дейтаграмм IP в сетях IEEE 802) RFC1042
— Computing the Internet Checksum (Расчет контрольных сумм в Internet ) RFC1071
— Models of Policy Based Routing (Маршрутизация на основе правил) RFC1104
— Расширение IP Multicasting RFC1112
— Requirements for Internet Hosts – Communications Layers (Требования к хостам Internet – коммуникационные уровни) RFC1122
— Requirements for Internet Hosts – Application and Support (Требования к хостам Internet – прикладные и служебные протоколы) RFC1123
— A Simple Network Management Protocol (SNMP) (Простой протокол сетевого управления) RFC1157
— A TCP/IP Tutorial (Учебник по TCP/IP) RFC1180
— Path MTU Discovery RFC1191
— The MD4 Message-Digest Algorithm (Алгоритм MD4) RFC1320
— The MD5 Message-Digest Algorithm (Алгоритм MD5) RFC1321
— Identification Protocol (Протокол идентификации) RFC1413
— Мультипротокольная инкапсуляция через AAL5 RFC1483
— Multiprotocol Interconnect over Frame Relay (Многопротокольные соединения через Frame Relay) RFC1490
— Applicability Statement for the Implementation of Classless Inter-Domain
Routing (CIDR) (Заявление о применимости для реализации бесклассовой доменной маршрутизации CIDR) RFC1517
— An Architecture for IP Address Allocation with CIDR (Архитектура распределения адресов IP для CIDR) RFC1518
— Classless Inter-Domain Routing (CIDR): an Address Assignment and Aggregation Strategy (Бесклассовая междоменная маршрутизация (CIDR): Выделение адресов и стратегия агрегирования) RFC1519
— IP и ARP через АТМ RFC1577
— Cisco Systems X.25 over TCP (XOT) RFC1613
— MTU протокола IP при передаче через АТМ AAL5 RFC1626
— The Point-to-Point Protocol (PPP) RFC1661
— Generic Routing Encapsulation (GRE) (Базовая инкапсуляция маршрутных данных) RFC1701
— Спецификация протокола BGP-4ф RFC1771
— Application of the Border Gateway Protocol in the Internet (Применение протокола BGP в Internet) RFC1772
— Requirements for IP Version 4 Routers (Требования к маршрутизаторам IP V4) RFC1812
— Address Allocation for Private Internets (Распределение адресов в частных IP-сетях) RFC1918
— Guidelines for creation, selection, and registration of an Autonomous System (AS) (Руководство по созданию, выбору и регистрации автономных систем) RFC1930
— Defending Against Sequence Number Attacks (Защита от атак с подменой порядковых номеров) RFC1948
— Autonomous System Confederations for BGP (Конфедерации автономных систем в BGP) RFC1965
— BGP Route Reflection: An alternative to full mesh IBGP (BGP Route Reflection – альтернатива полносвязности IBGP) RFC1966
— Serial Number Arithmetic (Арифметика порядковых номеров) RFC1982
— A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY) (Механизм быстрого уведомления об изменении зоны) RFC1996
— BGP Communities Attribute (Атрибут BGP Communities) RFC1997
— TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms (Алгоритмы Slow Start, Congestion Avoidance, Fast Retransmit и Fast Recovery для протокола TCP) RFC2001
— Internet Message Access Protocol – v. 4, rev. 1 (Протокол IMAP v.4, rev. 1) RFC2060
— Key words for use in RFCs to Indicate Requirement Levels (Ключевые слова для обозначения уровня требований в RFC) RFC2119
— PPP Vendor Extenrions (Расширения поставщикам ПО протокола PPP) RFC2153
— Simple Authentication and Security Layer (SASL) (Простой уровень аутентификации и защиты SASL) RFC2222
— Augmented BNF for Syntax Specifications: ABNF1 (Расширенная спецификация синтаксиса Бэкуса-Наура (ABNF)) RFC2234
— Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing (Фильтрация на входе в сеть: Защита от DoS-атак с использованием обманных адресов IP (IP Spoofing)) RFC2267
— Multiprotocol Extensions for BGP-4 (Многопротокольные расширения для BGP-4) RFC2283
— Протокол OSPF версии 2 RFC2328
— Protection of BGP Sessions via the TCP MD5 Signature Option (Защита сеансов BGP с использованием сигнатур MD5) RFC2385
— Multiprotocol Interconnect over Frame Relay (Многопротокольные соединения через Frame Relay) RFC2427
— The One-Time-Password SASL Mechanism (Механизм SASL с однократными паролями) RFC2444
— RIP Version 2 (Протокол RIP версии 2) RFC2453
— Message Submission (Прием сообщений от пользователей) RFC2476
— The Network Access Identifier (Идентификатор доступа в сеть) RFC2486
— Anti-Spam Recommendations for SMTP MTA’s (Рекомендации по предотвращению спама для SMTP MTA) RFC2505
— A Method for Transmitting PPP Over Ethernet (PPPoE) (Метод передачи РРР через Ethernet (PPPoE)) RFC2516
— Detached Domain Name System (DNS) Information (Обособленная информация DNS) RFC2540
— SMTP Service Extension for Authentication (Расширение сервиса SMTP для аутентификации) RFC2554
— OSI connectionless transport services on top of UDP Applicability Statement for Historic Status (Транспортный сервис OSI
на основе UDP. Обоснование статуса Historic) RFC2556
— FTP Security Considerations (Вопросы безопасности FTP) RFC2577
— TCP Congestion Control1 (Контроль насыщения в TCP) RFC2581
— Changing the Default for Directed Broadcasts in Routers (Смена принятого по умолчанию поведения маршрутизаторов по отношению к пакетам Directed Broadcast) RFC2644
— Security Extensions For HTML (Безопасность HTML (расширение)) RFC2659
— Multiprotocol Encapsulation over ATM Adaptation Layer 5 (Мультипротокольная инкапсуляция через AAL5) RFC2684
— BGP Route Reflection — An Alternative to Full Mesh IBGP (BGP Route Reflection – альтернатива полносвязности IBGP) RFC2796
— Simple Mail Transfer Protocol (Протокол SMTP) RFC2821
— Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing (Фильтрация на входе в сеть для защиты от DoS-атак с использованием обманных адресов IP (IP Spoofing)) RFC2827
— Capabilities Advertisement with BGP-4 (Анонсирование возможностей в BGP-4) RFC2842
— Multiprotocol Extensions for BGP-4 (Многопротокольные расширения для BGP-4) RFC2858
— Remote Authentication Dial In User Service (RADIUS) (Протокол RADIUS) RFC2865
— RADIUS Accounting (RADIUS – средства учета) RFC2866
— Route Refresh Capability for BGP-4 (Возможность обновления маршрутов для BGP-4) RFC2918
— Stream Control Transmission Protocol (Протокол SCTP) RFC2960
— Recommended Internet Service Provider Security Services and Procedures (Службы и процедуры обеспечения безопасности, рекомендуемые для провайдеров Internet) RFC3013
— Спецификация Протокола Объединенного Пространства Памяти. RFC3018
— Комментарии к Протоколу Объединенного Пространства Памяти RFC3018-1
— Traditional IP Network Address Translator (Traditional NAT) (Традиционная трансляция сетевых адресов IP (NAT)) RFC3022
— Autonomous System Confederations for BGP (Конфедерации автономных систем в BGP) RFC3065
— IP Payload Compression Protocol (IPComp) (Протокол компрессии данных IP ) RFC3173
—  Electricity over IP (Передача электроэнергии по протоколу IP) RFC3251
— An Introduction to the Stream Control Transmission Protocol (SCTP) (Введение в SCTP) RFC3286
— Capabilities Advertisement with BGP-4 (Анонсирование возможностей в BGP-4) RFC3392
— Система DDDS. Часть 1 — DDDS в целом RFC3401
— Система DDDS. Часть 2 — Алгоритм RFC3402
— Система DDDS. Часть 3 — База данных DNS RFC3403
— Система DDDS. Часть 4 — Приложение для преобразования URI RFC3404
— Система DDDS. Часть 5 — Процедуры присваивания URI.ARPA RFC3405
— The Security Flag in the IPv4 Header (Флаг безопасности в заголовке IPv4) RFC3514
— Robust Explicit Congestion Notification (ECN) Signaling with Nonces (Устойчивый механизм сигнализации насыщения с помощью ECN-nonce) RFC3540
— Linux Netlink as an IP Services Protocol (Netlink как протокол для служб IP) RFC3549
— Key Management Considerations for the TCP MD5 Signature Option (Управление ключами для при использовании опции TCP MD5 Signature) RFC3562
— The Lightweight User Datagram Protocol (UDP-Lite) (Облегченный протокол пользовательских дейтаграмм (UDP-Lite)) RFC3828
— Mobile IPv4 Extension for Carrying Network Access Identifiers (Расширение Mobile IPv4 для передачи идентификаторов доступа) RFC3846
— A 224-bit One-way Hash Function: SHA-224 (Необратимая 224-битовая хэш-функция SHA-224) RFC3874
— Configuring BGP to Block Denial-of-Service Attacks (Настройка BGP для блокирования DoS-атак) RFC3882
— WHOIS Protocol Specification (Спецификация протокола WHOIS) RFC3912
— Требования к сквозной эмуляции псевдо-провода (PWE3) RFC3916
— Архитектура сквозной э
муляции псевдо-провода (PWE3) RFC3985
— Early IANA Allocation of Standards Track Code Points (Предварительное распределение IANA кодов для проектов стандартов) RFC4020
— Domain Name System Media Types RFC4027
— Безопасность DNS  — введение и требования RFC4033
— Terminology for Describing Internet Connectivity (Терминология для описания услуг по подключению к Internet) RFC4084
— Management Information Base for the User Datagram Protocol (UDP) (MIB для протокола UDP) RFC4113
— Requirements for Edge-to-Edge Emulation of Time Division Multiplexed (TDM) Circuits over Packet Switching Networks (Требования к сквозной эмуляции каналов TDM через сети пакетной коммутации) RFC4197
— Augmented BNF for Syntax Specifications: ABNF (Расширенная спецификация синтаксиса Бэкуса-Наура (ABNF)) RFC4234
— The Secure Shell (SSH) Protocol Architecture (Архитектура протокола SSH) RFC4251
— BGP Wedgies RFC4264
— Протокол BGP-4 RFC4271
— BGP Security Vulnerabilities Analysis (Анализ уязвимостей протокола BGP) RFC4272
— Definitions of Managed Objects for BGP-4 (Определения объектов управления для BGP-4) RFC4273
— BGP-4 Protocol Analysis (Анализ протокола BGP-4) RFC4274
— BGP-4 MIB Implementation Survey (Опрос по реализациям BGP-4 MIB) RFC4275
— BGP-4 Implementation Report (Отчет о реализации протокола BGP-4) RFC4276
— Опыт использования протокола BGP-4 RFC4277
— Standards Maturity Variance Regarding the TCP MD5 Signature Option (RFC 2385) and the BGP-4 Specification (Отход от стандартных требования для опции TCP MD5 Signature (RFC 2385) и спецификации BGP-4) RFC4278
— Криптографические алгоритмы для использования с IKEv2 RFC4307
— Криптографические наборы для Ipsec RFC4308
— Datagram Congestion Control Protocol (DCCP) (Протокол DCCP) RFC4340
— BGP Extended Communities Attribute (Атрибут BGP Extended Communities) RFC4360
— What’s in a Name: False Assumptions about DNS Names (Что в имени тебе моем? Ложные представления о доменных именах) RFC4367
— BGP Communities for Data Collection (Группы BGP для сбора данных) RFC4384
— TCP/IP Field Behavior (Поведение полей TCP/IP) RFC4413
— Simple Authentication and Security Layer (SASL) (Простой уровень аутентификации и защиты (SASL)) RFC4422
— BGP MULTI_EXIT_DISC (MED) Considerations (Вопросы использования атрибута BGP MED) RFC4451
— BGP Route Reflection: An Alternative to Full Mesh Internal BGP (IBGP) (BGP Route Reflection – альтернатива полносвязности IBGP) RFC4456
— Механизм Anonymous в SASL RFC4505
— Согласование для протокола PPPoE значений MTU/MRU более 1492 RFC4638
— Атрибуты RADIUS для поддержки VLAN и приоритета RFC4675

Автор: r1za
Дата публикации: 2014-11-12T05:13:00.000-08:00

Не работал squid_ldap_group

Настраивал связку Squid+AD. Negotiate авторизация завелась без проблем, захотелось, чтобы пользователи ходили по группам из LDAP. По мануалам настроил external acl, но оно не взлетело. В cache.log при запуске сыпалось:

2014/11/12 10:04:41| helperOpenServers: Starting 5/5 ‘squid_ldap_group’ processes

2014/11/12 10:04:41| commBind: Cannot bind socket FD 31 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| commBind: Cannot bind socket FD 32 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| ipcCreate: Failed to create child FD.

2014/11/12 10:04:41| WARNING: Cannot run ‘/usr/lib/squid3/squid_ldap_group’ process.

2014/11/12 10:04:41| commBind: Cannot bind socket FD 34 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| commBind: Cannot bind socket FD 35 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| ipcCreate: Failed to create child FD.

2014/11/12 10:04:41| WARNING: Cannot run ‘/usr/lib/squid3/squid_ldap_group’ process.

2014/11/12 10:04:41| commBind: Cannot bind socket FD 37 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| commBind: Cannot bind socket FD 38 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| ipcCreate: Failed to create child FD.

2014/11/12 10:04:41| WARNING: Cannot run ‘/usr/lib/squid3/squid_ldap_group’ process.

2014/11/12 10:04:41| commBind: Cannot bind socket FD 39 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| commBind: Cannot bind socket FD 40 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| ipcCreate: Failed to create child FD.

2014/11/12 10:04:41| WARNING: Cannot run ‘/usr/lib/squid3/squid_ldap_group’ process.

2014/11/12 10:04:41| commBind: Cannot bind socket FD 41 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| commBind: Cannot bind socket FD 42 to [::1]: (99) Cannot assign requested address

2014/11/12 10:04:41| ipcCreate: Failed to create child FD.

2014/11/12 10:04:41| WARNING: Cannot run ‘/usr/lib/squid3/squid_ldap_group’ process.

Вилы были в том, что squid был собран с поддержкой ipv6, и он пытался взаимодействовать со своими плагинами с помощью ipv6. Чтобы этого избежать, нужно явно указать, что необходимо использовать ipv4:

external_acl_type ldap_verify ipv4 %LOGIN /usr/lib/squid3/squid_lda…

Автор: Василий Иванов
Дата публикации: 2014-11-11T18:41:00.000-08:00