FreeBSD 4.11 + howlでBonjour(Rendezvous)プリンタ
はじめに
mdnsd は、他のマシンからのマルチキャストDNSパケットに応答するだけだったような感じでした。
ので、howl を動かしてみました。
インストール
前回の mdnsd を止めて、自動起動(/usr/local/etc/rc.d/mdnsd.sh)もさせないように変更します。
eden# /usr/local/etc/rc.d/mdnsd.sh stop
eden# cd /usr/local/etc/rc.d/
eden# ls -la mdnsd.sh
-r-xr-xr-x 1 root wheel 369 Apr 5 21:42 mdnsd.sh
eden# chmod 444 mdnsd.sh
eden# ls -la mdnsd.sh
-r--r--r-- 1 root wheel 369 Apr 5 21:42 mdnsd.sh
eden#
FreeBSD 4.11 に howl をインストールするのは、Ports からインストールするのが簡単です。
eden# pwd
/usr/ports/net/howl
eden# ls
Makefile distinfo files pkg-descr pkg-plist
eden# make install clean
インストール先は、こんな感じ。
eden# rehash
eden# which mDNSResponder
/usr/local/bin/mDNSResponder
eden#
eden#
eden# pwd
/usr/local/etc/rc.d
eden# ls mdnsresponder.sh
mdnsresponder.sh
eden#
mdnsresponder.sh は、起動スクリプトです。vi などで開くと、以下のようになっていますので、
mdnsresponder_enable=${mdnsresponder_enable-"NO"}
mdnsresponder_flags=${mdnsresponder_flags-""}
/etc/rc.conf に以下のように書くか、
mdnsresponder.sh を以下のように変更してください。
mdnsresponder_enable="YES"
mdnsresponder_flags=""
flags は後から追加しますけど、今のところなし。
起動させます。
eden# /usr/local/etc/rc.d/mdnsresponder.sh start
Starting mDNSResponder.
eden#
eden# ps -ax | grep mDNSResponder
14923 ?? Ss 0:00.02 /usr/local/bin/mDNSResponder
eden#
この状態で、前回のmdnsd と同じように、MacOSXから ホスト名.local で名前が引けます。
ここで一度止めておきましょう。
eden# /usr/local/etc/rc.d/mdnsresponder.sh stop
Stopping mDNSResponder.
eden#
止まらない時は、kill -9 プロセスID で止めてください。
動作確認
以下のようなネットワーク環境で動作を確認します。
+-----------------------------------------------+
| Linksys WRT54G 802.11g + Router + DHCP Server |
+-----------------------------------------------+
|有線 |有線 :無線
+-------------+ +------------+ +-------------+
|mimi | |eden | |ibg4 |
|Windows2000 | |FreeBSD4.11R| |MacOSX10.3 |
|192.168.0.100| |192.168.0.8 | |192.168.0.101|
+-------------+ +------------+ +-------------+
mDNSResponder のオプションを確認します。
eden# /usr/local/bin/mDNSResponder -h
usage: /usr/local/bin/mDNSResponder [options]
Options:
-h this help
-v display version
-d run in debug mode
-i ifname run only on interface ifname
-a addr run only on interface whose address is addr
-f config_file load config_file
eden#
では、 /usr/local/etc/mdnsresponder.conf を作成して、
「このマシンは http サービスしてるんだよ。」という意味の設定を書きます。path は、ドキュメントルートです。
eden# pwd
/usr/local/etc
eden#
eden# cat mdnsresponder.conf
eden _http._tcp local. 80 path=/
eden#
では、デバッグモードと、設定ファイルを読込み指定で起動します。
eden# /usr/local/bin/mDNSResponder -d -f /usr/local/etc/mdnsresponder.conf
mDNSResponder starting up...
[howl] registered interface 192.168.0.8 (15110)
[howl] starting up... (15110)
Windows2000に Rendezvous for Windows Technology Preview 4 をインストールしたPCの InternetExplorer から、
このマシンが検出されます。
- ツールバーのRendezvous(ランデブー)アイコンをクリックすると、左にツリーが表示される。
- ツリー上に、eden と検出される。
- ダブルクリックすると、こんな感じ。
FreeBSD が起動した時に、mDNSResponder がこの設定ファイルを読むようにするには、以下のように /usr/local/etc/rc.d/mdnsresponder.sh を変更します。
#mdnsresponder_flags=${mdnsresponder_flags-""}
mdnsresponder_flags="-f /usr/local/etc/mdnsresponder.conf"
Bonjour(Rendezvous)プリンタを作る
freebsd + howl っていうと、iTunes サーバ のネタが広まっていますが、
私はこれがやりたかったよ。
参考Web
FreeBSD 上で、CUPSが動いている時に、プリンタをBonjour(Rendezvous)プリンタとしてクライアントに公開してみます。
通常、CUPSはippだけサポートしていますので、
lpr と JetDirect(RAW) をサポートさせるには、以下のように /etc/inet.conf に書いて、inetd を再起動させる必要があります。
cups-lpd , lpr のパスは間違わないように。lpr は BSD-LPR と間違わないように。
printer stream tcp nowait root /usr/local/libexec/cups/daemon/cups-lpd cups-lpd
jetdirect stream tcp nowait root /usr/local/bin/lpr lpr
尚、上記のJetDirectの場合、lprが指すプリンタはデフォルトプリンタとなります。プリンタを指定する場合は、-P オプションをつけてプリンタ名を指定してください。(例 -Phogehoge)
mdnsresponder.conf に以下のように書きます。公開するプリンタは、IEEE1284接続の EPSON PM-760C で、プリンタ名は pm760c です。lpr の場合はキュー(Queue)名となりますので、
rp で名前を設定する必要があります。ipp の場合もこんな感じ。
eden# cat /usr/local/etc/mdnsresponder.conf
eden _http._tcp local. 80 path=/
edenlpr _printer._tcp local. 515 rp=pm760c
edenipp _ipp._tcp local. 631 rp=printers/pm760c
edenraw _pdl-datastream._tcp local. 9100
eden#
mDNSResponder を再起動させるため、一旦 Ctrl+C で停止させて再度起動します。
eden# /usr/local/bin/mDNSResponder -d -f /usr/local/etc/mdnsresponder.conf
mDNSResponder starting up...
[howl] registered interface 192.168.0.8 (15171)
[howl] starting up... (15171)
^CmDNSResponder shutting down...
[howl] shutting down... (15171)
[howl] deregistered interface 192.168.0.8 (15171)
eden# /usr/local/bin/mDNSResponder -d -f /usr/local/etc/mdnsresponder.conf
mDNSResponder starting up...
[howl] registered interface 192.168.0.8 (15281)
[howl] starting up... (15281)
Windows2000に Rendezvous for Windows Technology Preview 4 をインストールすると Rendezvous Printer Wizard(プリンタウィザード)が追加されますので、起動します。
以下のようにプリンタが見えるはずです。
EPSON PM-760C なので、「Epson Stylus COLOR ESC/P 2」を選択して ipp,raw,lpr のプリンタを追加します。正式なプリンタは、後日確認します。
尚、lpr のポートモニタは、Standerd TCP/IP Port が使用されますが、
初期設定では「バイトカウント」が「無し」になっていますので、「有り」にする必要があります。
Windowsのテスト印刷ができました。
MacOSX もこんな感じにプリンタが検出されて、テキストエディタの mi から印刷できました。
でも多分、CUPSなので AirMac Extreme の時のように、プリンタとの双方向通信は期待できないと思います。
いろいろ見てみる
AirMac Extreme にUSBプリンタを接続した時、MacOSXに追加したプリンタのDeviceURIは、あたかもUSBがローカルにあるような感じでした。
今度はどうなんだろーと見てみたら、今度こそ、DeviceURI に mdns backend が設定されていました。
ibg4:~ kenz$ sudo cat /etc/cups/printers.conf
# Printer configuration file for CUPS v1.1.20rc1
# Written by cupsd on Wed Apr 6 00:07:34 2005
<Printer Canon_iP_4100>
Info Canon iP_4100
Location Base Station
DeviceURI file:///dev/null
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer edenipp>
Info edenipp
Location local.
DeviceURI mdns://edenipp._ipp._tcp.local.
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer edenlpr>
Info edenlpr
Location local.
DeviceURI mdns://edenlpr._printer._tcp.local.
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer edenraw>
Info edenraw
Location local.
DeviceURI mdns://edenraw._pdl-datastream._tcp.local./?bidi
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer EPSON_PM-760C>
Info EPSON PM-760C
Location Base Station
DeviceURI usb://EPSON/PM-760C
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<DefaultPrinter iP_4100>
Info iP_4100
Location ibg4
DeviceURI file:///dev/null
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer PM-760C>
Info PM-760C
Location ibg4
DeviceURI usb://EPSON/PM-760C?serial=B880331583166BJ700
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
<Printer pm760c>
Info pm760c
DeviceURI http://eden.local:631/printers/pm760c
State Idle
Accepting Yes
JobSheets none none
QuotaPeriod 0
PageLimit 0
KLimit 0
</Printer>
ibg4:~ kenz$
印刷時に使われるTCPポートも IPP,LPR,RAW はそれなりに 631,515,9100 が使われています。
また、10000/tcp も開いていませんでした。プリンタをUSB接続にしても同じでした。
戻る
|