このチュートリアルでは、CentOS 8 / RHEL 8コンピューターに接続されているプリンターを同じネットワーク上のWindows、macOS、およびiOSクライアントと共有する方法を示します。 CUPS(Common Unix Printing System)は、Linux、FreeBSD、およびmacOSのデフォルトの印刷システムです。 Linuxデスクトップ環境には専用のプリンター構成ユーティリティがある場合がありますが、それらはすべて内部でCUPSを使用します。 CUPSプリンターは、次のようないくつかのプロトコルを使用してネットワーク上で共有できます。
- Bonjour + IPP :Bonjourは、mDNS / DNS-SD(マルチキャストDNS / DNSサービス検出)とも呼ばれ、コンピューターがローカルネットワーク上のサービスを検索できるようにします。 IPP(インターネット印刷プロトコル)はトランスポートプロトコルです。
- SMB :別名Samba、主にWindowsクライアントとファイルやプリンターを共有するために使用されます。
- AirPrint :iPhone、iPad、およびmacOSクライアントがWi-Fi経由で印刷できるようにします。
各プロトコルには長所と短所があります。まず、CUPSをインストールして構成する方法を説明します。次に、上記の3つのプロトコルを介してCUPSプリンターを共有する方法を学習します。 3つの方法すべてを使用してプリンタを共有することをお勧めします。そうすれば、ユーザーは最小限の労力でローカルネットワーク上で利用可能なプリンタを見つけることができます。
ステップ1:CentOS 8 /RHEL8にCUPSをインストールして構成する
CentOS 8 /RHEL8デスクトップエディションにはCUPSがプリインストールされています。 CentOS 8 / RHEL 8サーバーエディションを使用している場合は、次のコマンドを実行して、デフォルトのCentOS 8 /RHEL8リポジトリからCUPSをインストールする必要があります。
sudo dnf install cups
次に、CUPSを開始します。
sudo systemctl start cups
起動時に自動起動を有効にします。
sudo systemctl enable cups
ステータスを確認してください:
systemctl status cups
サンプル出力:
次に、Nanoなどのコマンドラインテキストエディタを使用して、CUPSのメイン構成ファイルを編集します。
sudo nano /etc/cups/cupsd.conf
デフォルトでは、CUPSWebインターフェースはlocalhost:631
でのみ使用できます。 。 CentOS 8 / RHEL 8サーバーエディションを実行している場合は、利用可能なすべてのネットワークインターフェイスでCUPSをリッスンさせて、他のコンピューターからCUPSWebインターフェイスにアクセスできるようにすることができます。次の行を見つけます。
Listen localhost:631
次のように変更すると、CUPSはすべてのネットワークインターフェイスでリッスンします。
Port 631
次の行では、CUPSにローカルネットワーク上の共有プリンターが表示されるため、同じネットワーク内の他のコンピューターは、CentOS 8 /RHEL8コンピューターに接続されているプリンターを見ることができます。
Browsing On
次に、次の行を見つけます。
<Location /> Order allow,deny </Location>
上記の構成では、ローカルホストからのCUPSWebインターフェイスへのアクセスのみが許可されます。同じネットワーク内の他のコンピューターからのアクセスを許可するには、Allow @LOCAL
を追加します 以下のような構成に。
<Location /> Order allow,deny Allow @LOCAL </Location>
ローカルネットワークからのリモート管理を許可する場合は、/admin
にも追加します ディレクトリ。
<Location /admin> Order allow,deny Allow @LOCAL </Location>
ファイルを保存して閉じます。次に、変更を有効にするためにCUPSを再起動します。
sudo systemctl restart cups
同じネットワーク内のクライアントがCentOS8/RHEL8コンピューターのポート631にアクセスできるようにする必要があります。
sudo firewall-cmd --permanent --add-port=631/tcp
変更を有効にするには、ファイアウォールをリロードします。
sudo systemctl reload firewalld
メインのcups.service
に加えて 、cups-browsed.service
もあります 、ローカルネットワークからプリンタをスキャンして追加するために使用されます。 CentOS 8 / RHEL 8コンピューターでローカルネットワーク上の他のプリンターを使用できるようにする場合は、このサービスを開始します。
sudo systemctl start cups-browsed
また、起動時に自動起動を有効にします。
sudo systemctl enable cups-browsed
ステップ2:CentOS 8 /RHEL8にプリンター用のドライバーをインストールする
CentOS 8 / RHEL 8にドライバーをインストールして、プリンターを認識して使用できるようにする必要があります。 HPプリンターをお持ちの場合は、次のコマンドでドライバーを簡単にインストールできます。
sudo dnf install hplip
gutenprint-cups
もインストールすることをお勧めします パッケージ。Canon、Epson、HP、および互換性のあるプリンター用のCUPSドライバーを提供します。
sudo dnf install gutenprint-cups
他のプリンターがある場合は、openprinting.orgでドライバーを見つけることができます。
ドライバーをインストールした後、プリンターをCentOS 8 /RHEL8コンピューターのUSBポートに再接続する必要がある場合があります。ドライバーが正しく機能しているかどうかをテストするには、CentOS 8 /RHEL8でテキストファイルを作成します。
echo "LinuxBabe is awesome!" > file.txt
次に、次のコマンドを実行して、コマンドラインからこのテキストファイルを印刷します。
lp file.txt
これは非常に基本的な方法なので、今は印刷品質について心配する必要はありません。
ステップ3:Bonjour/IPPプロトコルを介してCUPSプリンターを共有する
Avahiデーモンのインストール
CUPSは、mDNS(マルチキャストDNS)およびDNS-SD(DNSサービスディスカバリ)プロトコル(Bonjourとも呼ばれます)を介して、ネットワーク上での存在をアナウンスできます。そのためには、avahi-daemon
をインストールして実行する必要があります 、これはApple Bonjourサービスに類似したサービスであり、コンピュータがローカルネットワーク上の共有デバイスとサービスを自動的に検出できるようにします。
sudo dnf install avahi
nss-mdns
もインストールする必要があります クライアントが.local
を解決するために必要なEPELリポジトリからのパッケージ ネットワーク上のドメイン。
sudo dnf install epel-release sudo dnf install nss-mdns
avahi-daemonを起動します。
sudo systemctl start avahi-daemon
起動時に自動起動を有効にします。
sudo systemctl enable avahi-daemon
AvahiデーモンはUDPポート5353でリッスンします。ファイアウォールで開きます。
sudo firewall-cmd --permanent --add-port=5353/udp
変更を有効にするには、ファイアウォールをリロードします。
sudo systemctl reload firewalld
IPPドライバーレス印刷
Bonjourは、ローカルネットワーク上でプリンターをアドバタイズするために使用されます。クライアントとCUPSサーバーが相互に通信できるようにするには、IPP(インターネット印刷プロトコル)が必要です。 IPPの利点は、クライアントが自分のデバイスにドライバーをインストールしなくても共有プリンターを使用できることです。 CUPSはそのままIPPをサポートしているため、IPPを介してCUPSプリンターを共有するために他に何もする必要はありません。
ステップ4:クライアントコンピューターにプリンターを追加する
macOSおよびLinuxクライアント
macOSおよびほとんどのLinuxデスクトップディストリビューションにはデフォルトの印刷システムとしてCUPSがインストールされているため、CentOS 8 /RHEL8ボックスでBonjour/IPPを介したプリンター共有を有効にすると、同じネットワーク内のmacOSおよびLinuxユーザーがプリンターを自動的に使用できます。アプリケーション(ワードプロセッサ、電子メールリーダー、フォトエディタ、およびWebブラウザ)で印刷オプションをクリックすると、プリンタが自動的に使用可能になります。プリンタを明示的に追加する必要はありません。魔法です。
Linuxコンピュータがプリンタを見つけられない場合は、システムにippfind
がない可能性があります。 指図。次のコマンドを実行して、DebianベースのLinuxディストリビューションにインストールします。
sudo apt install cups-ipp-utils
CentOS 8では、次のコマンドを実行します。
sudo dnf install cups-ipptool
次に、クライアントコンピューターでCUPSを再起動します。
sudo systemctl restart cups
ウィンドウ
Windows10にはIPPクライアントが付属しています。 プリンタと入力します 左下の検索バーでプリンタとスキャナーを開きます 。次に、プリンタまたはスキャナーを追加をクリックします ボタン。ローカルネットワーク上で利用可能なプリンタをスキャンします。
ご覧のとおり、HPDeskjetプリンターが見つかりました。見つかったプリンタを選択し、デバイスの追加をクリックします 。すぐにプリンタリストに追加されます。
この方法でプリンタを追加できない別のバージョンのWindowsを使用している場合は、BonjourPrintサービスをインストールできます。インストールしたら、Bonjourプリンターウィザードを起動します。ローカルネットワーク上で利用可能なプリンターを自動的にスキャンします。スクリーンショットからわかるように、HPプリンターが見つかりました。
[次へ]をクリックしてから、このプリンターのドライバーを選択する必要があります。デフォルトでシステムにインストールされているMicrosoftIPPクラスドライバを選択できます。
[次へ]をクリックすると、プリンタがWindowsシステムに追加されます。
Linuxでのプリンタの手動追加
何らかの理由でプリンタが表示されない場合は、手動で追加できます。デスクトップLinuxにBonjour共有プリンターを追加するには、システム設定またはアプリケーションメニューでプリンター構成ユーティリティを検索します。 追加をクリックします ボタンをクリックして新しいプリンタを追加します。
次に、[ネットワークプリンター]をクリックすると、ローカルネットワークで利用可能なプリンターが自動的にスキャンされます。ご覧のとおり、HPDeskjetプリンターが見つかりました。 転送をクリックします ボタン。
次に、プリンタに名前と説明を付けることができます。私は単にデフォルト値を受け入れます。 適用をクリックします これで完了です。
macOSに手動でプリンタを追加する
macOSにBonjour共有プリンターを追加するには、システム環境設定に移動します ->プリンターとスキャナー 。プラス(+)ボタンをクリックして、プリンタを追加します。
ローカルネットワーク上で利用可能なプリンタを自動的にスキャンします。ご覧のとおり、HPDeskjetプリンターが見つかりました。
追加をクリックします ボタンをクリックすると、プリンタリストに表示されます。
ステップ5:Sambaを介してCUPSプリンターを共有する
Sambaは、UnixおよびLinux用の無料のオープンソースSMB / CIFSプロトコル実装であり、ローカルエリアネットワーク内のUnix/LinuxマシンとWindowsマシン間でファイルおよび印刷を共有できます。これは主に、ファイルとプリンタをWindowsクライアントと共有するために使用されます。
CentOS 8 / RHEL 8にSambaをインストールするには、次のコマンドを実行します。
sudo dnf install samba
次に、次のコマンドを発行してsmbd
を開始します およびnmbd
サービス。
sudo systemctl start smb nmb
起動時に自動起動を有効にします。
sudo systemctl enable smb nmb
Sambaサービスが実行されているかどうかを確認するには、次のコマンドを発行します。
systemctl status smb nmb
開始すると、smb
デーモンはTCPポート139および445でリッスンします。nmbd
UDPポート137および138でリッスンします。次のコマンドを実行して、ファイアウォールでこれらのポートを開きます。
sudo firewall-cmd --permanent --add-service=samba
変更を有効にするためにファイアウォールデーモンをリロードします。
sudo systemctl reload firewalld
次に、メインの構成ファイルを編集します。
sudo nano /etc/samba/smb.conf
[printers]
を探す セクション。デフォルトでは、次のようになります。
[printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No
browseable
の値を変更する必要があります yes
に 、したがって、同じネットワーク内のクライアントがプリンタを見つけて、guest ok = yes
を追加できるようにします。 ネットワーク内の誰もがプリンタを使用できるようにします。
[printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = yes guest ok = yes
spoolssd
を有効にすることをお勧めします プリンタを共有するときのサービス。これにより、印刷ジョブが多い場合にSambaがより効率的になります。 [global]
に次の2行を追加するだけです spoolssd
を有効にするセクション サービス。
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
ファイルを保存して閉じます。次に、Sambaを再起動します。
sudo systemctl restart smb nmb
WindowsでのSamba共有プリンターの追加。
ファイルエクスプローラーを開き、\\192.168.0.110
のようなアドレスバーにCentOS8/RHEL8コンピューターのIPアドレスを入力します 。これで、プリンタが一覧表示されます。
プリンタをダブルクリックして、Windowsシステムに追加します。次に、[OK]ボタンをクリックして、インストールするドライバーを選択します。ドライバをインストールすると、プリンタがWindowsシステムに追加されます。
ステップ6:AirPrintを介してCUPSプリンターをiOSクライアントと共有する
AirPrintを使用すると、iPhone、iPad、およびmacOSクライアントは、クライアントデバイスにドライバーソフトウェアをインストールしなくても、Wi-Fi経由で印刷できます。 CUPSはAirprintをサポートしていますが、avahi-daemon
デフォルトでは、ローカルネットワークでAirPrintサービスをアナウンスしません。 .service
を作成する必要があります /etc/avahi/services/
内のファイル Pythonスクリプトを使用したプリンタのディレクトリ。次のコマンドを実行して、CentOS 8 /RHEL8にスクリプトをダウンロードします。
wget https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
実行権限を追加します。
chmod +x airprint-generate.py
このPythonスクリプトはPython2用に作成されています。 CentOS 8 /RHEL8はデフォルトでPython3を使用します。 Python2をインストールする必要があります。
sudo dnf install python2
このファイルを編集します。
nano airprint-generate.py
変更
#!/usr/bin/env python
に
#!/usr/bin/env python2
ファイルを保存して閉じます。次に、依存関係をインストールします。
sudo dnf install gcc python2-devel cups-devel redhat-rpm-config
カップモジュールを取り付けます。
sudo pip2 install cups pycups
次に、このスクリプトを実行します。
sudo ./airprint-generate.py -d /etc/avahi/services/
ここで、.service
が必要です。 /etc/avahi/services/
の下のファイル プリンタのディレクトリ。
ls /etc/avahi/services/
サンプル出力:
AirPrint-DeskJet-2130-series.service
Avahiデーモンを再起動します。
sudo systemctl restart avahi-daemon
これで、同じネットワーク内のiOSクライアントとmacOSクライアントがプリンターを使用できるようになります。次のスクリーンショットは、iPhoneがAirPrintプリンターを正常に検出したことを示しています。