- 이 글도 역시, 이글루스에 있던 글을 옮겨왔다.
- 더불어, 글 작성에 도움을 받은 문서들을 표기했다.
- 22.11 이런 저런 사항들을 추가했다.
Ubuntu Documentation : CUPS – Print Server
Arch : CUPS/Printer sharing
Arch : Avahi
Cups 가 설치될 프린터 서버는 Armbian 을 OS 로 한 Single Board Computer 이다.
Cups 설치
$ sudo apt install cups printer-driver-splix
드라이버는 삼성과 제록스 용이다. 삼성은 프린터 사업을 접었기에 따로 드라이버가 필요하고, HP 등 유명 제조사는 드라이버가 제공된다. 만약, 내 프린터가 여기에 해당하지 않는다면.. 손 품(?)을 팔아서 방법을 찾아야 한다.
2019년 7월 현재, Cups 는 2.2.1 이 설치된다. 2년 전에도 2.2 대 였는데, 별로 변한게 없다.
2022년 11월 현재, 우분투 Jammy 에선 2.4.1 이 제공되고 있다.
프린터 공유를 위한 첫걸음: cupsd.conf 수정(서버)
프린터를 공유할 수 있는 방법은 여러가지다. ArchLinux 문서에선 네가지로 정리해놨다.
- Discovery (DNS-SD/mDNS)
- Internet Printing Protocol
- SMB Shared Printer
- Line Printer Daemon protocol
이 글에서는 상단 두가지, 즉 Discovery 와 IPP 만 정리한다.
Discovery (DNS-SD/mDNS, 또는 Bonjour)
이 기능을 사용하려면, 서버/클라이언트 모두 Avahi 가 필수다. 데비안/우분투 계열에는 자동으로 설치돼 있는 듯 하고, ArchLinux 에선 따로 설치해줘야 한다.
이걸 설정해놓으면, 리눅스 계열에선 Avahi 가 켜 있다면 프린터가 자동으로 찾아진다. macOS/iOS 에는 Bonjour 가 기본 탑재돼 있으므로 달리 신경쓸 게 없다. 애초에 CUPS 가 Apple 작품이므로..
/etc/cups/cupsd.conf
에서 Browsing On
으로 설정한다.
/etc/cups/cupsd.conf ... Browsing On BrowseLocalProtocols dnssd ...
ArchLinux 문서에는 Browsing On 만 있는데, 내 설정 파일엔 BrowseLocalProtocols dnssd
항목도 있어서, 확인할 겸 같이 써놨다.
이렇게 설정하고, cups.service
를 재시동하면, Avahi/Bonjour 가 떠 있는 다른 기기에서 이 프린터를 아무런 걸림돌 없이 사용할 수 있다.
IPP
이 방식을 사용하면, DNS-SD 만큼 손쉽게 공유를 할 수는 없다. 그래도 Avahi 를 쓸 일이 ‘프린터 공유’밖에 없다면 이게 더 나은 선택일 수도 있다.
설정에선 다음 두가지 사항을 신경쓰면 된다.
- Local Machine(CUPS 가 설치된 기계. 즉 라즈베리파이)에서만 연결이 가능하게 된 것을 Local Network 으로 바꿔준다.
- 서버(location /)에 접근 가능 / CUPS 관리자(location /admin)에 접근 가능 / 설정 파일(location /admin/conf)에 접근 가능 하게끔 설정을 바꾼다.
# Only listen for connections from the local machine. #Listen localhost:631 Listen /var/run/cups/cups.sock # 아래 둘 중 하나를 택한다. # Listen IP:631 # ex. 192.168.0.11:631 Port 631 # Restrict access to the server... <Location /> Order allow,deny Allow @Local </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow @Local </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow @Local </Location>
Port 631 과 Listen IP:Port
에 무슨 차이가 있는지는.. 정확하게 이해는 안된다. Port 631 이라고만 하면 좀 더 광역이 되므로, 아마도 외부에서(인터넷)도 접근이 될 수도 있다고 생각한다. (물론, 현재는 공유기에 가로막혀 있으니 이런 일은 없지만)
** 다만, IP:631 로 했을 때 다른 PC 에서 이 프린터를 인식하지 못하는 현상이 간혹 나타난다. 둘 다 해보고 되는 쪽으로 택하는 편이 좋겠다.
나머지, Location 항목에서 Allow @Local 부분만 수정/추가해주면 된다.
** socket activation?
ArchLinux 문서 하단에 drop-in snippet 을 만들어야 한다는 내용이 나오는데.. 이건 잘 모르는 내용이라 그냥 넘긴다.
데비안/우분투 서버엔 이 파일(/etc/systemd/system/cups.socket.d/override.conf)은 없으나 작동엔 이상이 없다.
서버 : 사용자를 프린터 관리자 그룹에 추가.
현재 로그인한 Armbian 의 사용자, 즉 서버의 사용자를 프린터 관리자 그룹의 일원으로 만들어줘야 모든 설정이 그 사용자로 가능하게 된다.
$ sudo usermod -aG lpadmin <사용자명>
설정이 끝났으면 다음과 같이 CUPS 를 재시동 한다.
$ sudo systemctl restart cups.service
CUPS 서버 설정
이제 서버가 아닌 PC(물론 로컬 네트웍)에서 서버 IP 주소를 가지고 접속(웹)하여 Cups 를 설정할 차례다. 포트 번호는 위에서 지정한 631 이다.
http://192.168.0.15:631
이런 식으로 웹브라우저 주소창에 입력하고 접속하면 된다.
- 먼저 프린터를 연결하고, 전원을 켠다.
- Cups 접속 후에 Administration – Printers – Add Printer 를 누르면 ID/PW 를 묻는 화면이 뜬다. 아까 lpadmin 그룹에 추가한 사용자 ID(서버)/PW를 입력한다.
- Local Printers 중에서, USB 에 연결된 프린터를 선택하고, 삼성 드라이버도 같이 설치해줬으므로, 드라이버를 적절히 택한다. 여기서, ‘Share This Printer’ 항목은 반드시 택해줘야 한다. 안해주면 다른 PC 에서 이 프린터를 찾지 못한다.
- 마지막으로 Administration – Server 에서 다음이 설정되어 있는지 확인한다.

서버 설정은 끝.
클라이언트 설정
우분투/데비안 계열
최근 배포판이라면 Avahi 가 설치돼 있으므로 프린터를 자동으로 찾아준다.
만약, 우분투 클라이언트에서 이 프린터를 자동으로 찾아내지 못한다면, avahi-daemon 이 작동하고 있는지 확인한다. 또, 서버 설정도 살펴본다.
아예 설치되지 않았다면, 다음 명령을 실행한다.
sudo apt install avahi-daemon libnss-mdns
이에 관한 자세한 사항은 How to Geek 문서를 참고하기 바라고..
** 아래 내용은 cups 설정과는 관련이 없다. IPTime AP/공유기 문제.
여기서 한가지, 요상한 일을 겪은 경험을 적어본다.
서버에 Avahi 가 없길래 설치하고, 실행했다.
처음엔 ‘Failed to start Avahi mDNS/DNS-SD Stack.’ 라는 오류가 발생했다. (systemd status 에서)
그 땐 libnss-mdns 가 설치되지 않았을 때라 그것을 마저 설치해줬는데..
그 이후였는지, 그 전이었는지 아무튼 무선 AP 가 기절해버리는 사고가 자꾸 일어났다. 특히 클라이언트에서 서버에 있는 프린터를 찾거나, 설정하려할 때.
뭔가 서버(Armbian)에 문제가 있는 듯 하여 언제 날잡아 새로 OS 를 설치해야겠다는 생각을 하던 차..
몇가지를 시험해봤는데, 그게 주효한 모양이다. 더 이상 오류는 없고, 프린터도 설정도 전혀 문제가 없다. 인쇄는 물론 잘되고.
건드린 설정은 다음과 같다. (과연 관계가 있었을지는..)
위에도 언급한, /etc/cups/cupsd.conf 에서 포트를 서버한정(192.168.0.15:631 등)으로 바꿨다./etc/nsswitch.conf 을 살짝 수정했다. hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname 에서, myhosname 을 지웠다.
ArchLinux
Discovery 방식
Avahi 를 먼저 설치해주고, 프린터 설정에서 서버 프린터가 나오는지 확인한다.
IPP 방식
아래, IPP 클라이언트 항목을 참고한다.
OpenSuse Gnome 계열
바로 프린터가 찾아졌던 KDE 와는 달리, (OpenSuse) Gnome 에선 자동 찾기가 되지 않았다. 이 문제도 Avahi 때문으로 보인다. Avahi 를 설치하든가, 아니면 IPP 로.
IPP 클라이언트
Avahi 가 설치되지 않았다면, IPP 방식으로 설치하면 된다. 방법은 아래 MS 윈도우와 비슷한데..
먼저 서버 프린터의 정확한 이름을 알아야 한다.
서버의 Cups 페이지(ip:631)로 접속한 후, 상단 메뉴에서 Printers 를 선택한 뒤, Queue Name 에 나와있는 프린터를 우클릭한 뒤, 링크 주소를 복사한다.
다음, 사용하고 있는 GUI 프린터 설정(KDE, Gnome 등등)을 열거나, 아니면 웹브라우저에 localhost:631
을 입력하여 클라이언트의 Cups 설정으로 진입한다.
여기에서, ‘Administration – Printers – Add Printer‘ 로 이동한 뒤, ‘Other Network Printers – Internet Printing Protocol (ipp)‘를 택한다. 여기서 ipp 로 하든, http 로 하든, 모두 성공했다. 따라서 어떤 것을 선택하는게 맞는지는 잘 모르겠다.
아무튼 선택 후에, 주소(위에서 복사한 링크)를 이런 식으로 넣는다.
ipp://192.168.0.15:631/printers/Samsung_AA-1234
링크 복사한 주소는 http 일테지만, 아무튼 여기선 ipp 로 바꿔줬다.
이후 Name/Description 등등을 제대로 넣어주면 1부는 끝.
** 이후 설정에서 Driver 문제가 있을 수도 있다.
마지막으로, Driver(항목은 Make 라고 표시됨)를 선택해야 하는데.. 여기를 잘 모르겠다. 이 부분을 자세하게 설명한 문서도 찾지 못했다.
일단은 서버 프린터와 같은 드라이버를 선택하고 진행해본다. 그리고 인쇄에 성공하면 그대로 끝. 하지만 만약 오류가 발생한다면..
** 오래된 내 삼성 프린터에선.."SpliX Cannot open job"
이라는 오류가 발생했었다.
오류는 서버 CUPS 페이지로 접속하여 ‘Jobs’ 항목을 보면 정확하게 알 수 있다. 여기에서 뭔가 ‘드라이버’ 오류가 발생했다면, 위 설정에서 프린터 드라이버를 설정할 때 ‘Generic – Generic IPP Everywhere Printer‘ 를 선택한다.
MS 윈도우 클라이언트 설정.
윈도우10 기준으로, ‘설정’ – ‘장치’ – ‘프린터 및 스캐너 추가’ 에서 ‘프린터 또는 스캐너 추가’를 선택한다. 검색을 시작하는데, 검색은 안되므로~ ‘원하는 프린터가 목록에 없습니다.’를 선택한다.

위와 같은 화면에서, ‘이름으로 공유 프린터 선택’에, Cups 프린터 IP 주소를 넣어주면 된다. 이것을 쉽게 하려면, 웹브라우저로 Cups 서버에 접속한 다음, 상위 메뉴에서 Printers 로 간 뒤, Queue Name 에 떠 있는 프린터를 우클릭하고 ‘링크 주소 복사’를 선택하면 된다.
그리고 이 주소(예를 들면 http://192.168.0.15:631/printers/Samsung_AA-1234
)를 위 창에 넣어준다. 설정 끝.
OSX 클라이언트 설정.
‘설정 – 프린터 및 스캐너’ 를 열고 추가(+)를 누르면, 위의 프린터가 바로 보인다. 여기서 추가해주면 된다. 역시 끝.
Android 클라이언트 설정.
* 반드시 프린터를 켜놓아야 자동으로 찾아진다.
기종마다 조금 다르지만, 설정에서 프린터 관련 메뉴로 이동하면 자동으로 찾아진다.
만약 자동으로 찾아지지 않는다면, MS 윈도우와 같은 방식으로 추가해준다.
안드로이드 ‘기본 인쇄 서비스’ 에서도, ‘삼성 프린트 서비스 플러그인’ 에서도 Cups 사용에 아무 무리가 없다.
iOS 클라이언트 설정.
설정이랄 것도 없이, AirPrint 가 지원되는 프로그램에서 ‘인쇄’를 선택하면, 바로 프린터가 보인다. (역시 프린터가 켜져 있어야 한다.)