ARNS(A Remote Network Server for AppleTalk)

CAPやNetatalkにAppleShareIPが実装された今となってはARNSはほとんど利用価値が無くなってしまったのですが、それでもAppleTalkのブロードキャストが届かないとマトモに動いてくれない、トホホなアプリケーション(例えば全国津々浦々の大学図書館で困っているらしい、Chemical Abstracts
のCAonCDなんかですが-:)をTCP/IPのみが通るようなルータで仕切られた(普通そうだよね)サブネットを越えて使いたい時なんかはARNSが一番安上がりな方法です。
なおarnsだけでは相手にarns側のAppleTalk情報を伝えることが出来ません。arns側にAppleTalkシードルータが必要です。
従ってCAonCDの場合(なぜか全国津々浦々(とまではいかないが)の大学図書館から聞かれるもんで(^^;))、例えば次のような構成が考えられます。
- AppleTalkルータになるWindows NTサーバ(Win/Macのクロスライセンスにした場合はこのマシンがCAonCDサーバになります)
- arnsサーバになるLinuxマシン (RedHat 6.xベース、TurboLinux 6.0やLaserLinux 6.0で動作確認済み、多分kondaraでも大丈夫でしょう。もちろん本家 RedHat 6.xも...)
- HASPサーバになるMacintosh
もちろんシェアウェア版のUARを入れてAppleTalkルータとarnsサーバを1台のLinuxマシンにさせることも出来ますが、恐らく多くのところではWinユーザ向けCAonCDサービスのためにWinNTサーバを導入しているのではないでしょうか?
なお宇都宮大の場合は、WinNTサーバにPentium IIクラス、Linux arnsサーバに情報処理センターから貸与していただいた無印Pentium 166MHzを積んだマシン1、HASPサーバにMac Quadra 840AVと、なかなかシブい(しぶちんという話も(^^;;;))構成で運用しています。欲を言えばLinux arnsサーバもPentium IIぐらいあると良いかもしれません。
- ARNSのインストール
基本的にはmake一発でOKです(Solaris1.x、2.x、Ultrixの場合、その他は試していないので..)。
また、最近のLinux 2.2.X(全てを試したわけではありませんが、RedHat 6ベース(LaserLinux 6.1)やTurboLinux 6.x等)では、makeだけでは、
$ make
cc -c arns.c -o arns.o
cc -c pf.c -o pf.o
cc -c ddp.c -o ddp.o
cc -c aarp.c -o aarp.o
cc -o arns arns.o pf.o ddp.o aarp.o
arns.o: In function `passChk':
arns.o(.text+0x1cf9): undefined reference to `crypt'
collect2: ld returned 1 exit status
make: *** [arns] Error 1
とエラーになってしまいます。ここで、cryptがなんちゃら、と言っているので、Makefileの一部分を以下のように書き換えます。
CFLAGS=
LFLAGS=
LIBS=-lcrypt
すると、あーら不思議(^^)、
$ make
cc -c arns.c -o arns.o
cc -c pf.c -o pf.o
cc -c ddp.c -o ddp.o
cc -c aarp.c -o aarp.o
cc -o arns arns.o pf.o ddp.o aarp.o -lcrypt
cc -c arnsrd.c -o arnsrd.o
cc -o arnsrd arnsrd.o -lcrypt
と何ごともなかったかのようにmake出来ちゃいます。一方FreeBSD 2.xではなかなかうまくmakeできないようです。
- ARNSを立ち上げる
以後の作業はroot権限で行う必要があります。またここではmakeした実行ファイルのうち、arnsを/usr/local/capに、arnsdを/usr/local/etcにそれぞれ移動したものとします。<
次のような手順で立ち上げます
- /etc/inetd.confに次の行を加えます。
arns stream tcp nowait root /usr/local/etc/arnsrd arnsrd
- /etc/servicesに次の行を加えます。
arns 384/udp # AppleTalk Network Server
arns 384/tcp # AppleTalk Network Server
- inetdを再起動します。BSD系だったらkill -HUP inetdのRUN No.で再起動になります。RedHat系のLinuxでは、
/etc/rc.d/init.d/inet restart
を入力してinetdを再起動させます。
- arnsのアクセス制御ファイルを作ります。例えば/usr/local/cap/arnsfilterとすると、
# everyone on ABC net
* 123.45.255.255
# nobody else
- 255.255.255.255
# anybody on XYZ-net, they need a password
+ 100.100.255.255
となります。ここで*は指定したネットワークアドレスに属するMacはパスワード無しで
ARNSサーバ経由でAppleTalkに入れる、-は接続を拒否、+は後で指定するパスワードを
使ってARNSサーバ経由でAppleTalkに入れる、ということを意味します。
- ARNSサーバを起動します。例えば次のようなオプションをつけて動かします。
/usr/local/etc/arns -l /var/spool/mqueue/aufs.log -p password -f /usr/local/cap/arnsfilter -i ln0 -2 -z "hoge"
-l file:接続のlogをfileに記録する
-p password:UNIXのユーザー名/パスワードを使って接続許可をする、このかわりに-P hogehogeとするとパスワードとしてhogehogeを入力すればARNSサーバを使えます。
-f file:アクセス制御ファイルを指定する。
-i interface:ARNSを動かすインターフェースを指定します。
-2:Phase 2、ちなみに-1だとPhase1ですが今どきこんな指定はしないでしょう。
-z "hoge":hogeゾーンの情報をARNSクライアントへ送ります。
- クライアント側のMacの準備
クライアントのMacではMacTCPを使っているか、OpenTransportを使っているかによって必要なソフトが異なります。
- MacTCPの場合はIP Remote A/Talk1.01を使います。設定方法はメルボルン大学のIPremote user doc.を見て下さい。
- OpenTransportの場合はIP Remote A/Talk2.0b4を使います。これはbetaバージョンなのですが、一応最新のMacOS9.1(MacOS Xのclassic環境では、どうなんでしょうねぇ..。いっそUNIX版のARNSをコンパイルする、という手もあるかもしれません)でも動きます。これをシステムフォルダへドラッグ&ドロップしますと機能拡張フォルダへインストールされます。その後コントロールパネルの「AppleTalk」を起動すると「経由先」として「IPRemote」が表示されますので、これを選びます。
- するとARNSサーバのIPアドレスとuser名、passwardの入力を促されますのでそれぞれ入力します。後はセレクタからARNS経由で入ったAppleTalkが見えるはずです。
- OpenTransportのAppleTalkでIPremote接続時にエラーが生じた場合の対策について
- WWW上のドキュメント

- このマシンの調達及びLinux、arnsのインストールに関しては情報処理センター 日下部 慎 技官の献身的なご協力を頂きました。
AppleTalk on UNIXのページへ
このホームページに関するお問い合わせは
satoma@cc.utsunomiya-u.ac.jp
化工研のホームページへ戻る
宇都宮大学のホームページ