LINUX.ORG.RU
ФорумAdmin

CUPS и iptables

 ,


0

2

Всем доброе время суток! Господа, прошу помочь советом или направить в каком направлении курить гугл. Ситуация такова. Имеем Ubuntu 15, к ней по usb цепляется принтер (модель и дрова значения не имеют), система печатает все хорошо. Расшариваем принтер в cups. Заходим на второй ПК под Ubuntu (собственно, тут версия ОС уже не важна, тестил и на centos и на alt) - принтер ставится, но при попытке печати не печатает. Если ставим принтер графической оболочкой - то сразу после установки (!) исчезает из списка принтеров. В общем, я долго искал причину, но в итоге помог великий и могучий научный тык - я очистил правила iptables на принт-сервере и принт-клиенте и все запечатало. Вопрос: какие порты открыть чтобы печать работала? Кто сталкивался с подобным на Ubunt'e, ибо мне кажется это именно ее косяк - правилами открыты порты 631, 632, 5353, но... Centos и Alt в схожей ситуации печатает.

/etc/cups/cupsd.conf
LogLevel warn
PageLogFormat
MaxLogSize 0
# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
DefaultEncryption Required
ServerCertificate /etc/cups/ssl/server.crt
ServerAlias *
# Administrator user group...
SystemGroup sys root admin
# Share local printers on the local network.
Browsing On
BrowseLocalProtocols dnssd
DefaultAuthType Basic
WebInterface Yes
DefaultLanguage ru
<Location />
  # Allow shared printing...
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin>

Ниже логи и конфиги. Меня смущают каждый раз разные порты cups при печати... Это сие есть?

D [16/Nov/2016:16:34:47 +0300] [Client 1] Accepted from localhost:59323 (IPv6) ...
D [16/Nov/2016:16:34:47 +0300] [Client 2] Accepted from localhost:59324 (IPv6) ...
D [16/Nov/2016:16:34:47 +0300] [Client 3] Accepted from localhost:59325 (IPv6)
D [16/Nov/2016:16:34:47 +0300] [Client 3] Waiting for request.
D [16/Nov/2016:16:34:47 +0300] [Client 4] Accepted from localhost:59326 (IPv6)
D [16/Nov/2016:16:34:47 +0300] [Client 4] Waiting for request.
D [16/Nov/2016:16:34:47 +0300] [Client 3] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)
D [16/Nov/2016:16:34:47 +0300] [Client 3] Closing connection.
========
D [16/Nov/2016:16:49:36 +0300] [Client 3] Accepted from localhost:42234 (IPv6)
========
D [16/Nov/2016:16:55:30 +0300] [Client 5] Accepted from localhost:55067 (IPv6)
D [16/Nov/2016:16:55:30 +0300] [Client 5] Waiting for request.
D [16/Nov/2016:16:55:30 +0300] [Client 4] HTTP_STATE_WAITING Closing for error 32 (Broken pipe)

Всем заранее спасибо и удачной пятницы!

какие порты открыть чтобы печать работала?

sudo ss -lnpAinet | grep cups


Меня смущают каждый раз разные порты cups при печати.

Для исходящих портов это нормально.

ArcFi ()
Ответ на: комментарий от ArcFi

Имеем это:

sudo ss -lnpAinet | grep cups
udp    UNCONN     0      0                      *:631                   *:*      users:(("cups-browsed",pid=1235,fd=8))
tcp    LISTEN     0      5                      *:631                   *:*      users:(("cupsd",pid=1400,fd=10))
tcp    LISTEN     0      5                     :::631                  :::*      users:(("cupsd",pid=1400,fd=11))
Вот правила:
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 631 -j ACCEPT
iptables -A INPUT -p udp --dport 631 -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT
iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
iptables -A INPUT -p tcp --dport 5902 -j ACCEPT
iptables -A INPUT -p tcp --dport 5903 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

 iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere             state INVALID
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ipp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ipp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5900
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5901
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5902
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:5903
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Итог: все равно не печатает. Ошибка при отправке на печать «printer may be not connected». Если выполнить iptables -F на сервере и клиенте - сразу пойдет на печать из очереди...

Ved_mak ()
Ответ на: комментарий от Ved_mak

Как принтер добавлен на другой системе? Тот же telnet может на 631 порт зацепиться? Что в логах самого CUPS?

Radjah ★★★★★ ()
Ответ на: комментарий от Ved_mak

Если выполнить iptables -F на сервере и клиенте - сразу пойдет на печать из очереди...

Рабочий шаблон правил из firewalld:

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
...
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
...
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

Если сравнить с вашим, то явно видно, что части правил не хватает и порядок иной.

ArcFi ()
Ответ на: комментарий от Radjah

Как принтер добавлен на другой системе?

В других ОС что я тестил? Полностью аналогичным образом - черз веб cups'а. Т.е. на первой машине как локальный (+ расшаренный), на второй по http с полным указанием адреса и имени машины (например так: <i>10.0.0.167:631/ptinters/Samsung_SCX4650</i>), дрова выбираем те же. Я думаю само подключение правильное, ибо начинает печатать сразу как «выключаешь» iptables... Обращаю ваше внимание - эта проблема только на Ubuntu проявляется. При тесте на двух centos проблемы нет.

Тот же telnet может на 631 порт зацепиться?

Вроде цепляется...

root@080027770df3:~# telnet 10.0.0.167 631
Trying 10.0.0.167...
Connected to 10.0.0.167.

Лог на одну печать сюда не влазит... http://rgho.st/67TZRtwxr

Ved_mak ()
Ответ на: комментарий от Ved_mak

Ничего не понимаю.

Ты говоришь, что печатаешь с удалённой машины, а в логе сплошные локалхосты.

Radjah ★★★★★ ()
Ответ на: комментарий от Ved_mak

начинает печатать сразу как «выключаешь» iptables... Обращаю ваше внимание - эта проблема только на Ubuntu проявляется. При тесте на двух centos проблемы нет.

В чём проблема привести правила iptables в Ubuntu к тому же виду, что и в CentOS?

ArcFi ()
Ответ на: комментарий от ArcFi

У топикстартера эти правила взяты с дефолта iptables шестого центоса. Во внутренних серверах никогда проблем с ними не было: их и достаточно, они и нормально открываю/закрывают доступ.

PIKNIK ()
Ответ на: комментарий от PIKNIK

Тогда нужно добавить логирование перед терминированием каждой цепочки и будет видно, что именно не проходит.

ArcFi ()
Ответ на: комментарий от ArcFi

В общем с правилами все же все впорядке. Надо было открыть порт 5353 udp:

_Reject:IN=eth0 OUT= MAC=01:00:5e:00:00:fb:08:00:27:fd:5b:2a:08:00 SRC=10.0.0.167 DST=224.0.0.251 LEN=126 TOS=0x00 PREC=0x00 TTL=255 ID=34753 DF PROTO=UDP SPT=5353 DPT=5353 LEN=106

Всех благодарю за помощь и наводящие вопросы!

Ved_mak ()
Ответ на: комментарий от Ved_mak

mDNS с мультикастами в нормальной локалке лучше не использовать.
Мусорный трафик, лишние сервисы и порты, сомнительная надёжность.

ArcFi ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.