- Принт-сервер на linux с интеграцией в AD
- Часть 1. Тонкости настроек
- Исходные данные
- Синхронизация времени
- Winbind
- Samba
- Kerberos
- Часть 2. Установка драйверов
- Удаление принтеров из AD.
- Установка драйверов в Windows 7/8/10.
- Что не удалось пока решить
- Настройка принтера этикеток XPrinter на Linux в VMware Workstation
Принт-сервер на linux с интеграцией в AD
В данной статье я хотел поселиться опытом по созданию принт-сервера на базе linux с интеграцией в AD. Под интеграцией понимается ввод linux сервера в домен Windows и расшаривание Cups принтеров через Samba, включая драйвера принтеров. Возможно коряво выразился, но если проще, то это выглядит так — для того, чтобы установить принтер пользователю Windows, достаточно нажать«установить новый принтер», вывести список принтеров в AD и клацнуть на нужный принтер — принтер установится автоматически с установкой всех необходимых драйверов. При этом, все права на управление, доступ, печать подтянутся из AD.
Часть 1. Тонкости настроек
Исходные данные
- Домен контроллер — Windows Server 2008 R2 (AD, DNS, DHCP) IP — 10.10.15.31
- Имя домена — INITIAL
- Принт сервер — ОС linux (я использую OpenSUSE 13.2 x64, kernel 3.16.7-42-default) IP — 10.10.15.11
- kerberos 1.12.2-24.1
- winbind 4.2.4-40.1
- LDAP 2.4.39-8.9.1
- Samba 4.2.4-40.1
- CUPS 1.5.4-21.9.1
Предположим, что ОС linux уже установлена и установлены все необходимые пакеты.
На вводе linux в домен Winodws не буду заострять много внимания, тем более, что статей на эту тему предостаточно. Приведу ссылку на довольно неплохую статью — https://habrahabr.ru/post/143190/
Остановлюсь лишь на важных моментах. Так же, ниже выложу все свои рабочие конфиги вышеуказанных сервисов. Настраивал по разным статьям и мануалам.
Синхронизация времени
Время на linux сервере должно быть идентичным с домен контроллером, иначе в домен не вогнать.
Для этого есть несколько вариантов: на домен контроллере и нашем принт сервере указать одни и те же ntp сервера синхронизации времени или на принт сервере указать IP домен контроллера в качестве ntp сервера. Я настроил по второму варианту.
Проверить синхронизацию можно так:
Winbind
Многие утверждают, что данные настройки вообще не нужны для samba, как и kerberos и LDAP, но я люблю все по феншую ))). Ранее я настраивал samba в качестве PDC (Primary Domain Controller) без kerberos и LDAP и все это работало с WinXP клиентами, подтверждаю.
Samba
Данные настройки не рекомендуются самой samba, начиная с каких то версий 3.Х, но во многих статьях они указываются. Если указать данные параметры в новых версиях самбы, то testparm выдаст:
параметр realm — имя домена должно быть указано заглавными буквами!
Kerberos
Секция realms — имя домена должно быть указано заглавными буквами!
Иначе, можно получить такую ошибку при проверке kerberos
Предположим, что вы настроили необходимые сервисы и успешно ввели linux машину в домен Windows. Перейдем к настройкам CUPS.
BrowseOrder allow,deny — порядок рассмотрения системой разрешающих и запрещающих директив: все что не разрешено — запрещено.
BrowseAllow all — отображения всех доступных принтеров локальной сети
BrowseAddress — указываем все подсети, из которых нужен доступ к принтерам
DefaultAuthType — тип аутентификации. По умолчанию — Basic.
На счет последнего. Заметил в логох следующее:
Рекомендации на эту тему нашел две:
— отключить шаринг принтеров в самбе полностью (очень полезно, особенно для сервера печати)
— заменить Basic на None везде, где есть данная опция в cupsd.conf (не почувствовал разницы)
На cups.org вычитал, что значений данной опции может быть 2 — Basic и Negotiate, последняя для аутентификации с использованием kerberos.
В любом случае, данная ошибка никак не влияет на работу cups’a.
Я указал доступ для всех локальных подсетей. В принципе в директиве Allow можно указать разные подсети, так же, как я делал это в BrowseAddress.
Далее настраиваем доступ к административной панели и конфигурационным файлам. Здесь можно так же прописать директиву Allow (в каждую секцию) с указанием подсетей или отдельного IP адреса, с которого/которых можно будет администрировать принтеры. Если не добавлять эту директиву — админить можно будет с любой подсети локалки — равнозначно Allow all.
На этом настройка cups закончена. Рестартим его. В OpenSUSE это делается через systemctl
Теперь можно приступить к настройке принтеров через web интерфейс cups’a. Есть небольшая тонкость — для изменения, добавления, удаления принтеров необходимо заходить в web интерфейс cups по ssl (https), т.е. в веб браузере открываем
Иначе получим такую ошибку:
Добавлять принтеры в cups через web интерфейс задача — довольно тривиальная, поэтому описывать не буду. Единственное, рекомендую на вкладе «Администрирование» проверить включены ли опции:
— Разрешить совместный доступ к принтерам, подключенным к этой системе
— Разрешить печать из Интернета
И при установке принтера, не забывать включать опцию «Разрешить совместный доступ к этому принтеру».
Кто не хочет заморачиваться с samba, в cups есть возможность печати посредством протокола ipp (Internet Printing Protocol). В Windows принтер устанавливается так: панель управления → принтеры → установка принтера → сетевой принтер → подключиться к принтеру в интернете («выбрать общий принтер по имени» для Win7/8/10) в качестве url указываем полный путь:
Полный путь до принтера можно скопировать из адресной строки браузера в web интерфейсе cups.
Единственное, при данном способе система запросит драйвер принтера. Его нужно будет предварительно скачать и скормить ей при установке.
ГРАБЛЯ_№1: в WinXP протокол ipp включен по дефолту в сервис пак начиная с SP2, в Windows7/8/10 компонент «Интернет печать» может быть не включен.
Устанавливается через панель управления → программы и компоненты — включение и отключение компонентов Windows. В серверных Windows, данный протокол точно отключен по дефолту. Включаем через диспетчер сервера → компоненты → добавить компоненты → клиент печати через Интернет.
Я промучался с этой проблемой 2 дня. При попытке установки принтера данным способом вылезала ошибка — «Windows не удается подключиться к принтеру». При этом в логах cups и samba — ничего криминального нет. Это был мегатреш. Я дошел до разбора всего потока сетевого интерфейса с помощью tcpdump и wireshark, но ларчик то просто открывался. Проблема была на стороне винды.
Часть 2. Установка драйверов
Предположим, что принтеры в cups установлены, теперь приступим к копированию и регистрированию драйверов принтеров для Windows.
Можно вручную скопировать установленные драйверы в Windows — %WINDIR%\system32\spool\drivers\W32X86 и \x64 в папку с шарой для драйверов samba — /var/lib/samba/drivers/W32X86 и ./x64 и потом регистрировать их с помощью консольной утилиты rpcclient, но это нереальный квест и занятие не для слабонервных.
Мы пойдем более простым путем. Логинимся на виндовой машине с учеткой Domain Admin в наш домен. Буду показывать на примере WinXP (далее расскажу как действовать с Win7). Открываем проводник, в адресной строке вбиваем адрес принт сервера по IP или имени: \\Print-01\ или \\10.10.15.11\, переходим в папку Принтеры и факсы.
Клацаем правой кнопкой мыши на принтере → свойства.
На предложение установить драйвер, говорим Нет.
Идем во вкладку «дополнительно» → сменить.
Установить с диска и указываем папку с драйвером. Выбираем принтер в списке и нажимаем ОК.
ВАЖНО — в начале необходимо указать папу с 32-битными драйверами, даже, если система у вас 64-битная! 64-битные дрова установить можно будет после.
Идет копирование драйверов в расшаренную папку samba.
Переходим во вкладку «доступ» → отмечаем галочку «Внести в Active Diectory» → применить. Если нужны 64-битные драйвера, нажимаем Дополнительные драйвера»
И отмечаем галочку х64 → ОК. Система запросит папку с драйверами — аналогично скармливаем ей ее.
При желании, на вкладке «Общие», можно переименовать сетевой принтер. Эти названия будут отображаться при переходе в проводнике на принтсервер \\Print-01\ или \\10.10.15.11\.
В AD имена принтеров будут теми же, как вы называли их в cups.
Удаление принтеров из AD.
Диспетчер сервера → Доменные службы Active Directory → Active Directory пользователи и компьютеры → выбираем домен правой кнопкой мыши → найти → выбираем группу из ниспадающего списка «принтеры» → найти.
Находим в списке принтер, который хотим удалить → правой кнопкой мыши «удалить»
Установка драйверов в Windows 7/8/10.
В Windows 7/8/10 установить драйвера на принт-сервер можно из оснастки printmanagement.msc. Пуск → выполнить → printmanagement.msc
ПРИМЕЧАНИЕ В Home и Home Premium этой тулзы нет. Запускать эту оснастку нужно из под учетки Domain Admin. Сначала нужно добавить наш сервер печати по IP или имени.
Далее, здесь можно управлять принтерами сервера печати по аналогии c вышеуказанной инструкцией.
Так же здесь удобно управлять драйверами сервера печати — удалять/добавлять.
Что не удалось пока решить
В Windows Server 2012 R2 ну никак не хотят устанавливаться расшаренные принтеры. Ошибок в логах cups и samba нет. Принер начинает устанавливаться, драйвера копируются, но на этапе «завершение установки» выскакивает вышеуказанная ошибка «Windows не удается подключиться к принтеру». Думаю это какой-то косяк винды и скорее всего протокола ipp, хотя компонент «Клиент интернет печати» установлен.
В заключении, поделюсь секретом установки принтера Panasonic KX-FLB883RU в CUPS. Для данного принтера нет драйверов для linux, но чудесным образом подошел ljet2p.ppd (Panasonic KX-P4410 Foomatic/ljet2p), входящий в стандартный пакет OpenPrintingPPDs. Настройка принтера в CUPS через socket://IP_address/. Все работает без глюков. Надеюсь, кому-то пригодится.
Следующая моя статья будет посвящена удаленной автоматизированной системе установки принтеров пользователям домена. Или как то так)
Источник
Настройка принтера этикеток XPrinter на Linux в VMware Workstation
Пример для настройки в CentOS без графической оболочки, по аналогии можно настроить на любой ОС Linux.
Решаю специфичную задачу, из php нужно печатать этикетки с произвольным текстом по шаблону. Поскольку на мероприятии нельзя рассчитывать на стабильный интернет, а большая часть задач по автоматизации пересекается с веб-сайтом, приняли решение работать с виртуальной машиной на VMware.
XPrinter подойдут и для задач маркировки, под windows устанавливаются значительно проще. Остановился на модели XP-460B с шириной этикетки до 108 мм.
Поскольку настройкой Linux и подключением устройств к нему занимаюсь крайне редко, искал готовые мануалы по настройке, понял что самый простой способ подключить принтер через cups. У меня не получилось подключить принтер по USB, не помогли никакие манипуляции по советам в мануалах, только сломал виртуальную машину несколько раз.
- Скачиваем драйвера с сайта производителя xprintertech.com, они идут одним архивом для Windows, Mac и Linux
Драйвера размещены на сайте для серии устройств, в моём случае 4 inch Label Printer Drivers. Как оказалась, XP-460B уже снят с производства, понял к какой серии он относится по хлебным крошкам похожей модели XP-470B.
Устанавливаем принтер в windows, включаем общий доступ
Для Linux в архиве 1 файл 4BARCODE. Это «2 в 1» файл, bash сценарий с tar архивом, который сам себя распаковывает и копирует драйвера в cups. В моём случае для распаковки нужен bzip2 (для серии 80 мм используется другой архиватор)
Далее нужно открыть localhost:631 в браузере, для удобства делаю настройку, чтобы открыть из браузера в windows. Редактируем /etc/cups/cupsd.conf:
Добавляем 631 порт в firewall (или в iptables):
Открываем ссылку в браузере по IP виртуальной машины, в моём случае 192.168.1.5:631/admin
Добавляем принтер (нужно ввести root и пароль)
Есть 2 варианта, которые мне удалось настроить, по протоколу LPD и через samba.
- Для подключения по протоколу LPD, нужно включить службу в windows (Включение или отключение компонентов Windows), перезагрузить компьютер.
В настройках cups вводим lpd://192.168.1.52/Xprinter_XP-460B, где 192.168.1.52 — IP компьютера, на котором установлен принтер, Xprinter_XP-460B — название принтера в настройках общего доступа windows
Выбираем драйвер 4BARCODE => 4B-3064TA
В параметрах ничего не выбираем и не сохраняем! Я пробовал настроить размер этикетки, но тогда принтер по какой-то причине не работает. Размер этикетки можно задать в задании на печать.
Пробуем распечатать пробную страницу — готово!
Когда всё получилось и принтер распечатал пробную страницу, задания можно отправлять через консоль:
В данном примере этикетка имеет размеры 100х100 мм, 2 мм подобраны экспериментально. Расстояние между этикетками 3 мм, но если выставить высоту 103 мм, происходит сдвиг ленты, неудобно отрывать этикетку. Недостаток протокола LPD — задания отправляются как на обычный принтер, формат ESC/P0S не отправляется на печать, сенсор не калибрует этикетки.
Дальше можно работать с принтером через php. Есть библиотеки для работы с cups, мне проще отправить команду в консоль через exec();
Поскольку ESC/P0S не работает, я решил сделать шаблоны в pdf через библиотеку tFPDF
Источник