Почему я получаю 400 Bad Request на сервере ubuntu 9.10 cups?

10237
aaron

У меня есть сервер чашек, работающий на Ubuntu 9.10 в моей домашней сети. Прямо сейчас я могу получить к нему доступ 192.168.1.101:631, но когда я пытаюсь получить к нему доступ myservername.local:631, я получаю 400 Bad Request. Вот соответствующий раздел из моего текущего cupsd.conf:

ServerName 192.168.1.101  # Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock  # any of the below 'Listen' directives all yield the same result Listen 192.168.1.101:631 #Listen *:631 #Listen myservername.local:631  # Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS dnssd BrowseAddress 192.168.1.255  # Default authentication type, when authentication is required... DefaultAuthType Basic  # Restrict access to the server... <Location /> Order deny,allow Deny from All Allow from 127.0.0.1 Allow from 192.168.1.* </Location>  # Restrict access to the admin pages... <Location /admin> Order deny,allow Deny from All #Allow from 127.0.0.1 #Allow from 192.168.1.* </Location>  # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order deny,allow Deny from All #Allow from 127.0.0.1 #Allow from 192.168.1.* </Location> 

Я получаю следующее в /var/log/cups/error_log:

E [03 / Jan / 2010: 18: 33: 41 -0600] Запрос от «192.168.1.100» с использованием недопустимого поля Host: myservername.local: 631

Что мне нужно сделать, чтобы получить доступ к серверу чашек на обоих 192.168.1.101:631и myservername.local:631?

1
Ну, это старый пост, я надеюсь, что вы научились правильно использовать столицы и "я" с тех пор. peterh 8 лет назад 0

5 ответов на вопрос

3
Adam Luchjenbroers

Начиная с Кубка 1.3.10, сервер не пытается искать свое имя хоста при запуске. Старое поведение можно восстановить, добавив

HostNameLookups on 

В ваш файл cupsd.conf. Дополнительная информация доступна в этом отчете об ошибках Gentoo, а также в примечаниях к выпуску CUPS 1.3.10 .

Вы также можете посмотреть директивы ServerNameи ServerAliasconfig. См. Man-страницу ( man cupsd.confили доступна онлайн здесь ) для получения дополнительной информации.

нет, я пробовал установить параметр Listen to *: 631 и несколько других настроек, но ни один не помог aaron 14 лет назад 0
Если вы выполните команду ping myservername.local, сможет ли он разрешить IP-адрес? Adam Luchjenbroers 14 лет назад 0
да, он пингует myservername.local, и я знаю, что сервер cups получает запрос, так как он отображается в журнале (см. сообщение об ошибке, которое я добавил к вопросу выше) aaron 14 лет назад 0
Ага, с Кубка 1.3.10 он больше не пытается искать локальное имя хоста по умолчанию, добавьте `HostNameLookups On` в ваш файл конфигурации, чтобы восстановить старое поведение. (Http://bugs.gentoo.org/show_bug.cgi?id=266678) Adam Luchjenbroers 14 лет назад 0
к сожалению, это тоже не работает. Интересно, что когда я добавляю `HostNameLookups On` с помощью` Listen *: 631`, сервер даже не отвечает, однако у меня может быть `HostNameLookups On` с` Listen myservername.local: 631`, и он ведет себя как прежде aaron 14 лет назад 0
Похоже, мне просто нужно было читать дальше по той ссылке, которую вы разместили, мне просто нужно было добавить `ServerAlias ​​*`, спасибо за помощь! aaron 14 лет назад 0
2
Kurt Pfeifle

Исходя из вашего первоначального вопроса, вы, возможно, попробовали (среди прочего) cupsd.confвариант, содержащий следующие утверждения:

ServerName 192.168.1.101  # Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock  # any of the below 'Listen' directives all yield the same result #Listen 192.168.1.101:631 Listen *:631 #Listen myservername.local:631 

Это, безусловно, не сработало, и, вероятно, предотвратило cupsdзапуск демона. Потому что Listen localhost:631оператор связывает его с 127.0.0.1:631сокетом. Через несколько миллисекунд после запуска Listen *:631оператор запросил бы привязку ко всем доступным сокетам на порту 631: то есть, в вашем случае, по крайней мере 127.0.0.1:631(снова) и 192.168.1.101:631. При попытке связать второй раз, чтобы 127.0.0.1:631, cupsdнайдет гнездо занимаемое уже регистрирует ошибку и выход.

Урок: если вы используете несколько Listen: ...директив cupsd.conf, убедитесь, что у вас нет перекрытия.

1

Включение печати с использованием CUPS с Mac - Как мой Mac теперь печатает на принтере, подключенном к машине с Ubuntu 9.10!

После МНОГО ошибок, я выполнил эти шаги, и принтер, наконец, начал работать, используя CUPS и настройки выше. Как относительный нуб к Ubuntu и Linux, я не знаю, какие из этих шагов были волшебными, которые работали. Вполне вероятно, что некоторые из этих шагов можно изменить или пропустить, но они сработали для меня и, надеюсь, также для вас.

Принтер, подключенный к параллельному порту на компьютере с Linux, был установлен, запущен и настроен для совместного использования по локальной сети из CUPS ( http: // localhost: 631, введенный в адресную строку firefox).

На машине Linux я запустил ifconfig из приложения терминала. узнать локальный IP-адрес (начинается с 192.168.xx.x) (у вашего xx.x будут разные номера).

В строке местоположения программы Mac Safari я перешел по URL-адресу CUPS-порта Linux-машины 631 (192.168.xx.x: 631), где xx.x - это числа для локального адреса, обнаруженного с помощью ifconfig выше.

Это подняло систему CUPS на машине Linux (которая отображалась на экране машины Mac).

Затем я перешел на вкладку принтеры на компьютере с Linux (через Safari на Mac) и скопировал местоположение принтера в буфер обмена ( http: //192.168.xx.x: 631 / printers / Hewlett-Packard-HP-LaserJet -1100 ).

Затем я открыл порт 631 на компьютере Mac ( http: // localhost: 631 ), который вызывает систему CUPS на Mac. (Если он не запускает систему Mac CUPS, посмотрите в другом месте, чтобы выяснить это).

Я пошел, чтобы добавить принтер в системе Mac CUPS.

На Mac я дал добавленному принтеру имя HP_LaserJet_1100 и «вырезал и вставил местоположение в поля местоположения и описания.

Для устройства я использовал IPP или протокол интернет-печати (http).

Для Device URI я снова вставил местоположение, скопированное с машины Linux.

Я выбрал подходящую марку и модель для водителя на следующем экране.

Работал! Надеюсь, это сэкономит кому-то еще час или два, которые понадобились мне, чтобы заправить иглу.

1
user30553

это преднамеренное поведение, когда CUPS отклоняет запросы, адресованные полному доменному имени хоста при получении через локальный интерфейс обратной связи.

Решение: не разрешайте полное доменное имя хоста разрешать до 127.0.0.1, а вместо этого используйте правильный внешний IP-адрес для этого полного доменного имени.

Это не правильно. Что вам действительно нужно делать ***, так это избегать множества операторов Listen ... с перекрывающимися *** сокетами. То, что является полностью «законным» с CUPS, это наличие 2 (или более) отдельных операторов «Listen ...», одно с «Listen 127.0.0.1: 631», другое с «Listen 192.168.1.101: 631». Они *** не *** перекрываются. *** *** всегда перекрывается с тем, чтобы использовать подстановочные операторы, такие как `Listen *: 631`, а также добавлять специальные операторы, такие как` Listen 192.168.1.101: 631`. Kurt Pfeifle 14 лет назад 0
0
aaron

Следующие настройки файла cupsd.conf позволили мне печатать, используя либо IP, либо имя хоста сервера cups:

ServerName myservername ServerAlias *  # Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock Listen myservername.local:631  # Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS dnssd BrowseAddress 192.168.1.255  # Default authentication type, when authentication is required... DefaultAuthType Basic  # Restrict access to the server... <Location /> Order deny,allow Deny from All Allow from 127.0.0.1 Allow from 192.168.1.* </Location>  # Restrict access to the admin pages... <Location /admin> Order deny,allow Deny from All #Allow from 127.0.0.1 #Allow from 192.168.1.* </Location>  # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order deny,allow Deny from All #Allow from 127.0.0.1 #Allow from 192.168.1.* </Location> 

видимо я скучал по ServerAlias *линии