事の経緯
PCを買い替えてOSをWindows 11にしたら、ubuntuでSamba共有されているプリンタに出力できなくなりました。
なので、Sambaは諦めて他のプロトコルでプリンタを共有しようとしたのですが、プリントサーバー構築の際に最短でSamba共有しかしていなかったので、他のプリンターの環境を全く整備していませんでした。
そこで、プリントサーバのubuntuにUnix系OSで標準的なlpdサービスを稼働させて、CUPS経由で印刷するように設定していきます。
CUPSのLPDデーモンの起動確認
netstatでLPDサービスが起動していて515ポートで待ち受けているか確認します。
$ sudo netstat -tuln | grep 515
tcp6 0 0 :::515 :::* LISTEN
のように出てくれば待ち受けていますので、次の章は読み飛ばしてよいです。
冒頭で書いた通り、私の環境ではプリントサーバー構築の際に最短でSamba共有しかしていなかったのでLPDサービスの設定を一切行っていませんでしたので、コマンドの実行結果には何も表示されませんでした。
LPDサービスの有効化と設定
cups-bsdのインストール
cups-bsdは、CUPS (Common UNIX Printing System) の一部で、特にBSD(バークレー)形式のコマンドラインユーティリティ(lpr, lpq, lprmなど)を提供するパッケージで、LPDサービスも統合されています。
以下のコマンドでcups-bsdをインストールします。
$ sudo apt update
$ sudo apt install cups-bsd
サーバの外部からCUPSに接続できるように設定
/etc/cups/cupsd.conf ファイルを編集し、CUPSに外部からのLPR(ポート515)やHTTP(ポート631)接続できるように設定します。
$ sudo vi /etc/cups/cupsd.conf
Listen と書いてある行に移動します。( /^Listen で移動できます )
Listen /run/cups/cups.sock
という行のみなので、その下に Listen 0.0.0.0:631 の行を追加します。
Listen /run/cups/cups.sock
Listen 0.0.0.0:631
ファイルを書き込みしてviを終了します。( :wq )
CUPSを再起動します。
$ sudo systemctl restart cups
LPDデーモンのパスを確認
下記コマンドでパスを確認します。
$ find /usr/lib/cups -name "cups-lpd"
/usr/lib/cups/daemon/cups-lpd
LPDサービスの設定ファイル作成
LPDサービスの設定ファイルを /etc/systemd/system に作成します。
cups-lpd.socket
$ sudo vi /etc/systemd/system/cups-lpd.socket
ファイルの内容は以下の通り。
[Unit]
Description=CUPS LPD Server Socket
[Socket]
ListenStream=515
Accept=yes
BindIPv6Only=both
[Install]
WantedBy=sockets.target
cups-lpd@.service
$ sudo vi /etc/systemd/system/cups-lpd@.service
ファイルの内容は以下の通り。
[Unit]
Description=CUPS LPD Service
[Service]
ExecStart=/usr/lib/cups/daemon/cups-lpd -o log-error -o exit-timeout=60
User=lp
Group=sys
StandardInput=socket
ここで、ExecStartのパスは LPDデーモンのパスを確認 で確認したLPD デーモンの実際のパスに修正してください。
LPDサービスを有効化して起動
下記コマンドで systemd に新しいソケットサービスを認識させ、有効化し、起動します。
$ sudo systemctl daemon-reload
$ sudo systemctl enable cups-lpd.socket
$ sudo systemctl start cups-lpd.socket
LPRプロトコルの待ち受け確認
LPRプロトコルのポート 515 が待ち受けているか確認します。
$ sudo netstat -tuln | grep 515
tcp6 0 0 :::515 :::* LISTEN
上記のように LISTENと出れば、LPRプロトコルのポート 515 を待ち受けています。
UFWでLPDポートの再開放
以下コマンドでLPRポート(515)にTCP/UDP接続、CUPS管理ポートにTCP接続を許可します。
LPRポート(515)
$ sudo ufw allow 515/tcp
$ sudo ufw allow 515/udp
CUPS管理ポート(631)
$ sudo ufw allow 631/tcp
ファイアウォールをリロード
$ sudo ufw reload
Windows 11からの疎通確認
Windows 11から疎通確認します。
スタートメニュー右クリックから「ターミナル」を選択してWindows PowerShellを開き、telnetを起動します。
(telnetはWindows 11ではデフォルト無効になっているので、有効にしてください)
PS C:\Users\username> telnet 192.168.1.30 515
192.168.1.30 の部分はLPDサービスを起動したサーバのIPアドレスを指定してください。
エラーにならずに画面がクリアされて入力待ちになれば、疎通OKです。
Windows側プリンタの追加
LPRポートの有効化
Windows 11ではデフォルトでLPD印刷用のポートがオフになっているため、有効にします。
- [スタート] メニューを開き、「Windows の機能の有効化または無効化」と入力して開きます。
- 「Windows機能」が開くので「印刷とドキュメント サービス」を探し、左側の「+」を展開します。
- 「LPR ポート モニター」にチェックを入れ、[OK] をクリックします。
- 注意: 必要に応じて「LPD 印刷サービス」も有効にしますが、通常、クライアントとして印刷するだけなら「LPR ポート モニター」のみで十分です。
- 指示に従ってPCを再起動します。
プリンタの追加
Windows 11でプリンタの追加を行います。
- ローカル プリンターまたはネットワーク プリンターを手動設定で追加するスタートメニュー から「設定」を開く
- Bluetoothとデバイス → プリンタとスキャナー
- 「デバイスの追加」を押下
- 「プリンタが一覧にない場合」の表示を待ち、「新しいデバイスの追加」を押下
⇒ 「プリンタが一覧にない場合」が表示される前に、CUPSの共有設定を検知してプリンタが表示されるかもしれませんが、それをインストールすると標準的なドライバのインストールとなり、プリンタの詳細な設定ができません - 「IPアドレスまたはホスト名を使ってプリンタを追加する」を選択して「次へ」を押下
- 「新しいポートの作成」を選択し、ポートの種類から「LPR Port」を選び 「次へ」 を押下
- 表示されたダイアログに以下の情報を入力する
- LPD を提供しているサーバーの名前またはアドレス
⇒ 例: 192.168.1.30 - そのサーバー上のプリンターまたはプリント キューの名前
⇒ 例: Canon_iP2700_series
- LPD を提供しているサーバーの名前またはアドレス
- 適切なプリンタードライバーを選択し、画面の指示に従ってインストールを完了させる
設定後の確認
追加後、テスト ページの印刷 を行い、正しく出力されるか確認してください。

コメント