ちなみに、ルータを介した通信は、特にルータに設定がない場合、TCP/IP だけが利用出来ます。ルータを自前で用意して設定しているような場合には、 そのルータに Netatalk のうちの atalkd を入れておけば、AppleTalk の中継が可能となります。つまり、 ルータ越にファイルサーバ機能を使う場合には、次の組合せがあります。
クライアントとサーバ が通信するプロトコル | ルータに必要な機能 |
---|---|
純粋 Appletalk | + atalkd |
AppleTalk over TCP | TCP/IP only |
話がそれますが、AppleTalk (だけ)をしゃべるプリンタを、AirMac を通じて使いたい、という時には AirMac のブリッジ機能を有効 にすれば可能になります (ただしブリッジは、二つのネットワークを一つに見えるように つないでしまう ものですから、単純に有効にすると、問題が起きてしまう場合 もあります)。
ttyp6:makoto@st4200 10:14:24/050219(...powerpc/All)> pkg_info | grep netatalk netatalk-2.0.2 Netatalk appletalk file and print servicesnetatalk はいくつかの部品から構成されています。
構成部品 | 機能 | 備考 |
---|---|---|
atalkd | AppleTalk デーモン | Native AppleTalk の場合には必須 |
afpd | ファイルサーバ | AppleTalk over TCP であれば、これだけ動かすのも可 |
papd | プリントサーバ | |
timelord | 時刻サーバ |
/etc/rc.d/atalkd (m=0755) /etc/rc.d/afpd (m=0755) /etc/rc.d/papd (m=0755) /etc/rc.d/timelord (m=0755)これらの見本が /usr/pkg/share/examples/rc.d にありますので、例えば、次のように します。
atalkd=YES afpd=YES papd=YES timelord=YESこの中で atalkd は必須ですが、他は必要に応じて設定します。 また、それぞれの設定は次のところに行ないます。
/usr/pkg/etc/netatalk/AppleVolumes.default /usr/pkg/etc/netatalk/AppleVolumes.system /usr/pkg/etc/netatalk/afpd.conf /usr/pkg/etc/netatalk/atalkd.conf (初期値は実質、空。通常、自動的に設定される) /usr/pkg/etc/netatalk/netatalk.conf /usr/pkg/etc/netatalk/papd.conf設定例は /usr/pkg/share/examples/netatalk にありますが、これを上のところに写して使います。 設置時にこれらが存在しない時には、設定例が写されます。
譜名 | 機能(どういう時に読まれるか) | |
---|---|---|
1 | /usr/pkg/etc/netatalk/AppleVolumes.system | 常に有効 |
2 | /usr/pkg/etc/netatalk/AppleVolumes.default | 利用者の設定がない時に有効 |
3 | ~/AppleVolumes | 利用者の設定 |
4 | ~/.AppleVolumes | 利用者の設定 (先頭にピリオドが付いている) |
良く行なわれる例としては、共通なものは 1 に書いておき、追加の設定を 4 に書いてもらいます。 また、もし 4 がない人のために 2 を用意しておきます。 便利な設定としては、良く使う path を
path nameの形式で書いておくことです。これで画面には name が表示され、それを選ぶと、 path への読書き等が利用出来るようになります。
/etc/rc.d/atalkd onestartまたは
sudo env atalkd=YES /etc/rc.d/atalkd startこれは通常、結構時間がかかります。 次のようになることもあります。
> sudo env atalkd=YES /etc/rc.d/atalkd start Starting atalkd. Setting AppleTalk info with nbprgstr. nbp_rgstr: Can't assign requested address Can't register harry:Workstation@*この時でも atalkd は起動している場合も多いです。 その場合には、次のように afpd を起動できます。
> sudo env afpd=YES /etc/rc.d/afpd start Starting afpd. ttyp1:makoto@harry 19:47:03/050218(...net/netatalk)> !ps ps ax | grep atalk 11739 ? S 0:00.02 /usr/pkg/libexec/netatalk/atalkd 28818 ? S 0:00.03 /usr/pkg/libexec/netatalk/afpd ttyp1:makoto@harry 19:47:23/050218(...net/netatalk)>
# -uamlist <a,b,c> Comma-separated list of UAMs.
# (default: uams_guest.so,uams_clrtxt.so,uams_dhx.so)
#
# some commonly available UAMs:
# uams_guest.so: Allow guest logins
#
# uams_clrtxt.so: (uams_pam.so or uams_passwd.so)
# Allow logins with passwords
# transmitted in the clear.
#
# uams_randnum.so: Allow Random Number and Two-Way
# Random Number exchange for
# authentication.
#
# uams_dhx.so: (uams_dhx_pam.so or uams_dhx_passwd.so)
# Allow Diffie-Hellman eXchange
# (DHX) for authentication.
ここに書いてあることを整理すると、次のようになります。
-uamlist の引数 | 機能 |
---|---|
uams_dhx_passwd.so | Diffie-Hellman eXchange (DHX) を使ったログイン |
uams_dhx.so | |
uams_guest.so | ゲストログイン |
uams_passwd.so | 平文パスワードによるログインを許可する (vipw で設定) |
uams_clrtxt.so | |
uams_randnum.so | 乱数と双方向乱数通信による認証 (/etc/netatalk/afppaswd に設定) |
# - -transall -uamlist uams_clrtxt.so,uams_dhx.so -nosavepassword
参考
http://www.linux.or.jp/JM/html/netatalk/man5/afpd.conf.5.html
password の設定は適切に行なっているはずなのに、 「パスワードが合っていない」と言われる時があります。 /var/log/messages を見れば書いてあるかも知れませんが、その ID に設定されている shell が /etc/shells に入っていない時にもそうなります。
..のような画面になります。
そこで、afp://server.example.com
のように入力します。
Nov 29 08:16:38 u afpd[16432]: cnid_open: dbenv->open of /home/username/hoge/.AppleDB failed: DB_VERSION_MISMATCH: Database environment version mismatchというような字を見ることがあります。これは
/usr/pkg/etc/netatalk/afp_ldap.confがないためかと思います。重要ではないのですが、重要ではないと判断するのに時間がかかる気がするので、 書いておきます。
modena@makoto 14:24:06/120417(..net/netatalk)% \ sudo ktrace -t n /usr/pkg/libexec/netatalk/afpd -d -P /var/run/afpd.pid fopen: No such file or directory