このチュートリアルでは、Ubuntuコンピューターに接続されているプリンターを同じネットワーク上の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:UbuntuにCUPSをインストールして構成する
Ubuntuデスクトップ版にはCUPSがプリインストールされています。 Ubuntu Server Editionを使用している場合は、次のコマンドを実行して、デフォルトのUbuntuリポジトリからCUPSをインストールする必要があります。
sudo apt install cups
次に、CUPSを開始します。
sudo systemctl start cups
起動時に自動起動を有効にします。
sudo systemctl enable cups
ステータスを確認してください:
systemctl status cups
サンプル出力:
次に、Nanoなどのコマンドラインテキストエディタを使用して、CUPSのメイン構成ファイルを編集します。
sudo nano /etc/cups/cupsd.conf
まず、ローカルネットワーク上の共有プリンターを表示する必要があります。次の行を見つけます。
Browsing Off
に変更
Browsing On
そのため、同じネットワーク内の他のコンピューターは、Ubuntuコンピューターに接続されているプリンターを見ることができます。
デフォルトでは、CUPSWebインターフェースはlocalhost:631
でのみ使用できます。 。 Ubuntu Server Editionを実行している場合は、利用可能なすべてのネットワークインターフェイスでCUPSをリッスンさせて、他のコンピューターからCUPSWebインターフェイスにアクセスできるようにすることもできます。次の行を見つけます。
Listen localhost:631
に変更
Port 631
したがって、CUPSはすべてのネットワークインターフェイスでリッスンします。次に、次の行を見つけます。
<Location /> Order allow,deny </Location>
上記の設定では、ローカルホストからのみCUPSWebインターフェイスにアクセスできます。同じネットワーク内の他のコンピューターからのアクセスを許可するには、Allow @LOCAL
を追加します 以下のような構成に。
<Location /> Order allow,deny Allow @LOCAL </Location>
/admin
にも追加します ローカルネットワークからのリモート管理を可能にするディレクトリ。
<Location /admin> Order allow,deny Allow @LOCAL </Location>
次のように特定のIPアドレスを許可することもできます:
<Location /> Order allow,deny Allow 192.168.0.101 </Location>
ファイルを保存して閉じます。次に、変更を有効にするためにCUPSを再起動します。
sudo systemctl restart cups
UbuntuでUFWファイアウォールを有効にしている場合は、同じネットワーク内のクライアントがUbuntuボックスのポート631にアクセスできるようにする必要があることに注意してください。たとえば、プライベートネットワークは192.168.0.0〜192.168.0.255のネットワーク範囲を使用しているため、次のコマンドを実行します。
sudo ufw allow in from 192.168.0.0/24 to any port 631
CUPS Webインターフェースは、https://IP-address-of-Ubuntu-box:631
で入手できます。 。この記事ではウェブインターフェースを使用する必要はありませんが、ウェブインターフェースを使用する場合は、ユーザーアカウントをlpadmin
に追加する必要があります。 CUPSWebインターフェースを変更するためにグループ化します。
sudo adduser your_username lpadmin
ステップ2:Ubuntuにプリンター用のドライバーをインストールする
Ubuntuにドライバーをインストールして、プリンターを認識して使用できるようにする必要があります。 HPプリンターをお持ちの場合は、次のコマンドでドライバーを簡単にインストールできます。
sudo apt install hplip
printer-driver-gutenprint
もインストールすることをお勧めします パッケージ。Canon、Epson、HP、および互換性のあるプリンター用のCUPSドライバーを提供します。
sudo apt install printer-driver-gutenprint
他のプリンターがある場合は、openprinting.orgでドライバーを見つけることができます。
ドライバーをインストールした後、UbuntuコンピューターのUSBポートにプリンターを再接続する必要がある場合があります。ドライバーが正しく機能しているかどうかをテストするには、Ubuntuでテキストファイルを作成します。
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 apt install avahi-daemon
avahi-daemonを起動します。
sudo systemctl start avahi-daemon
起動時に自動起動を有効にします。
sudo systemctl enable avahi-daemon
AvahiデーモンはUDPポート5353でリッスンします。ファイアウォールで開きます。
sudo ufw allow 5353/udp
IPPドライバーレス印刷
Bonjourは、ローカルネットワーク上でプリンターをアドバタイズするために使用されます。クライアントとCUPSサーバーが相互に通信できるようにするには、IPP(インターネット印刷プロトコル)が必要です。 IPPの利点は、クライアントが自分のデバイスにドライバーをインストールしなくても共有プリンターを使用できることです。 CUPSはそのままIPPをサポートしているため、IPPを介してCUPSプリンターを共有するために他に何もする必要はありません。
ステップ4:クライアントコンピューターにプリンターを追加する
macOSおよびLinuxクライアント
macOSおよびほとんどのLinuxデスクトップディストリビューションにはデフォルトの印刷システムとしてCUPSがインストールされているため、Ubuntuボックスで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クライアントと共有するために使用されます。
UbuntuにSambaをインストールするには、ターミナルで次のコマンドを実行するだけです。
sudo apt install samba samba-common-bin
Sambaサービスが実行されているかどうかを確認するには、次のコマンドを発行します。
systemctl status smbd systemctl status nmbd
これら2つのサービスを開始するには、次のコマンドを発行します。
sudo systemctl start smbd sudo systemctl start nmbd
次に、メインの構成ファイルを編集します。
sudo nano /etc/samba/smb.conf
spoolssd
を有効にすることをお勧めします プリンタを共有するときのサービス。これにより、印刷ジョブが多い場合にSambaがより効率的になります。 [global]
に次の2行を追加するだけです spoolssd
を有効にするセクション サービス。
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
次に、ファイルの最後に移動すると、[printers]
が表示されます。 セクション。 Nanoテキストエディタでは、Ctrl+W
を押すと、ファイルの最後にジャンプできます。 、次にCtrl+V
を押します 。次の2行を見つけます。
browseable = no guest ok = no
それらを
に変更しますbrowseable = yes guest ok = yes
ファイルを保存して閉じます。次に、Sambaを再起動します。
sudo systemctl restart smbd nmbd
WindowsでのSamba共有プリンターの追加。
ファイルエクスプローラーを開き、\\192.168.0.110
のようなアドレスバーにUbuntuコンピューターのIPアドレスを入力します 。これで、プリンタが一覧表示されます。
プリンタをダブルクリックして、Windowsシステムに追加します。次に、[OK]ボタンをクリックして、インストールするドライバーを選択します。ドライバをインストールすると、プリンタがWindowsシステムに追加されます。
ステップ6:AirPrintを介してCUPSプリンターをiOSクライアントと共有する
AirPrintを使用すると、iPhone、iPad、およびmacOSクライアントは、クライアントデバイスにドライバーソフトウェアをインストールしなくても、Wi-Fi経由で印刷できます。 CUPSはAirPrintをサポートしていますが、avahi-daemon
デフォルトでは、ローカルネットワークでAirPrintサービスをアナウンスしません。 .service
を作成する必要があります /etc/avahi/services/
内のファイル 次のコマンドを使用したPythonスクリプトを使用したプリンタのディレクトリ。私のプリンタのモデルはDeskJet2130シリーズです。自分のモデル名に置き換えてください。
sudo nano /etc/avahi/services/AirPrint-DeskJet-2130-series.service
ファイルに次の行を追加します。
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE service-group SYSTEM "avahi-service.dtd"> <service-group> <name replace-wildcards="yes">AirPrint DeskJet-2130-series @ %h</name> <service> <type>_ipp._tcp</type> <subtype>_universal._sub._ipp._tcp</subtype> <port>631</port> <txt-record>txtvers=1</txt-record> <txt-record>qtotal=1</txt-record> <txt-record>Transparent=T</txt-record> <txt-record>URF=none</txt-record> <txt-record>rp=printers/DeskJet-2130-series</txt-record> <txt-record>note=HP DeskJet 2130 series</txt-record> <txt-record>product=(GPL Ghostscript)</txt-record> <txt-record>printer-state=3</txt-record> <txt-record>printer-type=0x2900c</txt-record> <txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-pdf</txt-record> </service> </service-group>
ファイルを保存して閉じます。 Avahiデーモンを再起動します。
sudo systemctl restart avahi-daemon
これで、同じネットワーク内のiOSクライアントとmacOSクライアントがプリンターを使用できるようになります。次のスクリーンショットは、iPhoneがAirPrintプリンターを正常に検出したことを示しています。