WindowsからopenSUSE共有のプリンタを使う

 Linux上で共有されているプリンタをWindowsから使います。
 Windowsに慣れた身の上の人としては、ただ家庭内でプリンタを共有するだけなのに大掛かりなことはしたくありません。
 ワン・ツー・スリーが理想です。

 とはいえ中身というか、仕組みを意識しなくてはならないのもLinuxの宿命です。
 単に一台のプリンタを共有したいだけなら、Windows側で共有かけたほうが早いです。
 印刷するのに二台を立ち上げる手間もありますので、そもそもプリンタは共有をかけるより、初めから安いプリントサーバを一つ買ってきたほうが早いと思います。
 とはいえ、LinuxをメインPCにローカルで印刷しつつ(あるいはスキャナなどを使い)、たまにWindows側から印刷するという環境の人もいるかもしれません。
 そうですね、近頃複合プリンタも普及してきて、プリントサーバだけでは解決できない事情もあります。
 考え直して、やはりLinuxでプリンタを共有する方法を考えます。

 ローカルでプリンタが使えるようにしてから共有するという手順に違いはありません。
 どういう方式でWindowsへ公開するか、という点がポイントになります。

 A.LPDを使用して共有する。(WindowsからはStandardTCP/IPポートを使用してLPRで印刷します)
 B.samba共有を利用して共有する(Windowsからプリンタ共有を経由する)
 C.IPPを使用して共有する(WindowsからHTTPを経由して印刷する)

 やはり3パターン考えられます。どれをチョイスするのが正解でしょうか。

 それぞれ長所短所があるので、どれがよいとは一概には言えませんが、とりあえずいまどきは全てCUPSを使用して印刷します。
 CUPS(CommonUnixPrintingSystem)はその名の通り、OSがプリンタへデータを送り込む仕組みで、まさに印刷機能となります。
 Windowsなどから送り込まれてきた印刷データをプロトコル(LPRやSambaやIPPなど)で受け取り、CUPSを通してUSBに接続されたプリンタへとデータを送ります。

A.LPDを使用してプリンタを共有する
 とりあえずLPRを使用した印刷は、現在では古いものとされています。
 実際は量販されているプリントサーバはほとんどLPRで動作しているので、今なおWindowsから使用することが多いので現役感がありますが。
 なのでLPRクライアントとして動作することは結構あっても、LPDのサーバとして動作することはいまどき少ないです。
 出来るということだけ覚えておきましょう。

B.samba共有を利用して共有する
 とりあえずこれがもっとも簡単で早いです。
 プリンタの公開は、フォルダの公開と同じ手順です。別項の「WindowsからopenSUSEのファイル共有へアクセスする」を参照してください。
 というより、プリンタをつなぐと標準で「全てのプリンタを共有」にチェック入っています。
 

 つまりSambaが入ってる段階でプリンタは共有されています。
 実際にWindows側から利用する場合も、Windowsの共有プリンタとほぼ同じ手順です。
 共有プリンタを設定する前に、プリンタのドライバをインストールしておきましょう。

 コントロールパネルのプリンタの追加を選択します。
 

 ネットワークプリンタを選択します。
 
 ※よく勘違いされる方が見えますが、ネットワークプリンタとは共有プリンタのこと、TCP/IP経由のプリントサーバなどはローカルプリンタになります。
  これはマイクロソフトの「プリンタの定義」によるもの(プリンタとプリンタデバイスの違い)です。


 「指定したプリンタに接続する」でプリンタ名と共有名を入力します。書式は¥¥にホスト名、もしくはIPアドレス¥プリンタ共有名です。
 

 ここで脅迫めいたエラーが出ますが、とりあえず承諾しないと先にすすまないので。
 

 Linux側にWindows用の配布ドライバが配置されていない場合はこうなります。正常な動作です。
 

 そしていつものようにWindows用のドライバを選択しましょう。
 


C.IPPを利用して共有する
 Samba印刷は、suse側にsambaをインストールしなくてはなりません。
 ですがIPPを経由したCUPS印刷は、初めからインストールされていて、あとは利用可能に設定するだけです。
 そういう意味では、suseで標準で設定されて(?)いるのは、CUPSのIPPということになります。

 ですが、印刷に至るまでが面倒です。IPPはその名の通り、インターネット経由での印刷をサポートしているため、セキュリティ設定があります。
 つまり印刷可能なアドレスやユーザを指定しないと印刷できません。
 使いようによっては会社から自宅のプリンタへ印刷〜なんてことも可能ですが、IT技術によくある「出来るとヤルは別問題」というパターンです。

 とりあえずopenSUSEのローカルでプリンタを利用可能にした状態からスタートします。
 最初にCUPSサービスのIPP上でプリンタを公開します。
 スタートメニューから「印刷を管理」を選択します。
 

 CUPSのメニューがブラウザで開きます。
 

 「プリンタの追加」をクリックします。
 

 「新しいプリンタの追加」でプリンタの公開名と場所や説明を入力します。
 とくに「名前」の部分は今後プリンタ共有で指定する部分なので、短く正確なものを選択しましょう。
 

 デバイスの指定でプリンタの接続デバイスを選択します。ここではUSB接続のCanonMP500を選択します。
 

 ドライバの選択で、正しいドライバを選択します。
 

 追加のメッセージが表示されます。
 

 プリンタタブをクリックすると、公開中のプリンタが表示されます。テスト印刷などもしておきましょう。
 

 ちなみに「プリンタの管理」からプリンタを追加すると、プリンタの公開名がSUSE指定のものになってしまうので、ちょっと不便です。

 次にWindows側からLinuxのプリンタを利用します。先にWindowsへプリンタのドライバをインストールしておきましょう。
 コントロールパネルのプリンタの追加を選択します。
 

 ネットワークプリンタを選択します。
 

 「インターネット上または自宅/会社のネットワーク上のプリンタに接続する」を選択します。
 URL欄に「http://IPアドレス:631/printers/指定したプリンタの公開名」を入力します。
 

 プリンタへ接続できましたか?
 いいえ、出来ませんね。
 

 慌てないでください。そして諦めないでください。Linuxへ接続しようとするWindowsの対応がそっけないのだとしても、これは正常な動作なのです。Windowsが悪いわけではないのです。
 では誰が悪いのでしょう?
 答えはCUPSです。CUPSは先ほどの設定でプリンタを公開しておきながら、まだ誰もプリンタへ接続することを許可していないのです。
 インターネットを経由して印刷することを想定しているIPPは、初期状態では誰にも印刷させないように設定されているのです。これはセキュアという思想なのです。
 というわけで、Suse上でCUPSのアクセス権を変更しなくてはなりません。
 YaSTを起動し、ハードウェア項目から「プリンタ」を選択します。
 

 プリンタの環境設定から「その他」をクリックし、CUPSエキスパートを選択します。
 

 CUPSサーバの設定を選択します。
 

 アクセス権で「/printers」を選択し、パーミッションの変更をクリックします。
 

 許可リストの「追加」をクリックします。
 

 家庭内のLANからは全て許可するとして、許可アドレスに「192.168.1.*」を指定します。もし家庭内のアドレスが異なれば、随時設定してください。
 

 許可アドレスが追加されました。
 

 「ファイアウォールでポートを開く」にチェックを入れます。
 
 全ての作業を完了します。

 追補1
  Printersに許可アドレスを設定せず、ファイアウォールのポートのみを開くと、プリンタの利用時にユーザ名とパスワードを求められます。
  外部の不特定の場所からプリンタを利用する場合などに、用います。

 追補2
 なお、ファイアウォールを開放すると、誰でも管理画面へアクセスできて、ジョブなどを確認できます。プリンタの構成変更にはパスワードが必要です。
 管理画面へのアクセスを制御する場合は、「/printers」同様、「/(root)」のパーミッションを設定します。



 これでようやくCUPS側の設定が終わりました。あらためてWindwos側からプリンタを追加します。
 URL欄に「http://IPアドレス:631/printers/指定したプリンタの公開名」を入力します。
 
 HTTPと記述していますが、実際にHTTPを利用するわけではありません。
 それとポート631の記述を忘れないように気をつけてください。
 接続が成功すると、ドライバのインストールウィンドウが現われます。

 Windowsにプリンタが追加されました。
 

prev.gif