レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る
Linux Amateur Radio AX.25 HOWTO

Jeff Tranter, VE3ICH

tranter@pobox.com

JF Project - (日本語訳)

v2.0, 19 September 2001

世界中のアマチュア無線家が使っている AX.25 パケット無線プロトコルをネイ
ティブかつ標準でサポートすることを誇るオペレーティングシステムなんて、
世界広しといえど Linux くらいなもんでしょう。この文書では AX.25 機能の
インストールおよび設定の方法について説明します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents
1. はじめに
   
    1.1. 以前のバージョンからの変更点
    1.2. この文書の最新版はどこで手に入れられますか?
    1.3. その他の関連する文書
   
2. パケット無線のプロトコル群と Linux
   
    2.1. どういった仕組みになっているの?
   
3. AX.25/NET/ROM/ROSE ソフトウェア
   
    3.1. カーネルやツールやユーティリティ集をさがす
   
4. AX.25/NET/ROM/ROSE ソフトウェアのインストール
   
    4.1. カーネルのコンパイル
    4.2. AX.25 用ライブラリー、ツール、アプリケーション
   
5. 動かす前に:コールサインとかアドレスとかについて
   
    5.1. T1, T2, N2 とかって何ですか?
    5.2. 実行時に設定可能なパラメーター
   
6. AX.25 ポートの設定
   
    6.1. AX.25 ネットワークデバイスを作る
    6.2. /etc/ax25/axports ファイルを作る
    6.3. AX.25 ルーティングの設定
   
7. AX.25 インターフェイスを TCP/IP 用に設定する
8. NET/ROM ポートの設定
   
    8.1. /etc/ax25/nrportsを編集
    8.2. /etc/ax25/nrbroadcast の設定
    8.3. NET/ROM ネットワークデバイスを作る
    8.4. NET/ROM デーモンの起動
    8.5. NET/ROM ルーティングの設定
   
9. NET/ROM インターフェイスの TCP/IP 用設定
10. ROSE ポートの設定
   
    10.1. /etc/ax25/rsports の設定
    10.2. ROSE ネットワークデバイスを作る
    10.3. ROSE ルーティングの設定
   
11. AX.25/NET/ROM/ROSE の呼出
12. パケットの接続要求を受付けるように設定
   
    12.1. /etc/ax25/ax25d.conf ファイルを作る
    12.2. ax25d.conf ファイルの簡単な例
    12.3. ax25d を起動する
   
13. node の設定
   
    13.1. /etc/ax25/node.conf ファイルを作る
    13.2. /etc/ax25/node.perms ファイルを作る
    13.3. node を ax25d から起動する
    13.4. node を inetd から起動する
   
14. axspawn の設定
   
    14.1. /etc/ax25/axspawn.conf ファイルを作る
   
15. pms の設定
   
    15.1. /etc/ax25/pms.motd ファイルを作る
    15.2. /etc/ax25/pms.info ファイルを作る
    15.3. AX.25 コールサインをシステムのユーザー名に関連づける
    15.4. /etc/ax25/ax25d.conf ファイルに PMS の設定を追加する
    15.5. PMS をテストする
   
16. user_call プログラムの設定
17. ROSE アップリンク・ダウンリンクコマンドの設定
   
    17.1. ROSE ダウンリンクの設定
    17.2. ROSE アップリンクの設定
   
18. AX.25 のコールサインをユーザー名に関連づける
19. APRS の設定
20. /proc/ ファイルシステムの各項目
21. AX.25, NET/ROM, ROSE ネットワークプログラミング
   
    21.1. アドレスファミリー
    21.2. ヘッダファイル
    21.3. コールサインの変換とその例題
   
22. 設定のサンプル
   
    22.1. Linux を無線 LAN へのルーターとする小規模イーサネット LAN
    22.2. IPIP カプセル化ゲートウェイの設定
    22.3. AXIP カプセル化ゲートウェイの設定
    22.4. NOS と Linux のパイプデバイスによる接続
   
23. AX.25 機能に関する Linux コマンドのまとめ
24. もっと詳しい情報はどこに行けば得られるの?
   
    24.1. パケット無線について
    24.2. プロトコルについての文書
    24.3. ハードウェアについての文書
    24.4. Linux のアマチュア無線関連のソフトウェア
   
25. アマチュア無線と Linux に関する話題
26. 謝辞
27. フィードバック
28. 配布条件
29. 日本語訳について

1. はじめに

アマチュア無線家は、各国の監督機関から免許を取得し、割り当てを受けた周
波数帯を使うことで、個人的な通信や公共サービス、技術的実験といった非商
用・非営利の活動を行っています。パケット無線とは、デジタルモードでの通
信方法であり、ネットワークプロトコルを使ってコンピュータ間で通信ができ
るようにしたものです。

この文書は元々 HAM-HOWTO の付録でしたが、付録としておくには大きくなりす
ぎて別個の文書となりました。この文書では AX.25 や NET/ROM、ROSE といっ
た Linux におけるネイティブな機能のインストールおよび設定の方法について
説明します。設定作業の出発点として使えるような代表的な設定例もいくつか
掲載しています。

アマチュア無線プロトコルの Linux における実装はとても柔軟性に富んだもの
です。 Linux オペレーティングシステムにあまり馴染みのない方にとって、設
定のやり方は複雑で難しいものに思えるかも知れません。全体がどういう仕組
みになっているか理解するためには少々時間がかかることでしょう。それに
Linux についてもっと一般的なことを知っておかないと設定がとてつもなく難
しく思われることでしょう。他の環境から Linux に乗り換えようとしているな
ら、Linux そのものについても学んでください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1.1. 以前のバージョンからの変更点

 ・ 文書の担当者が新しくなりました。
   
 ・ DocBook SGML フォーマットに変換しました。タブ形式の表の多くをテーブ
    ルを使うように変更しました。
   
 ・ GNU FDL でリリースするようにしました。
   
 ・ Baycom, YAM, 6PACK, ユーザーモード soundmodem といった新しいドライ
    バーの情報を追加しました。
   
 ・ APRS の章を追加しました。
   
 ・ この文書が最後に更新された 1997 年以降の様々な変化を反映するように
    しました。でもまだ多くの誤りや賞味期限切れの情報が残っていることで
    しょう。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1.2. この文書の最新版はどこで手に入れられますか?

この文書の最新版を手に入れるのにもっとも適した場所は Linux
Documentation Project のアーカイブです。 Linux Documentation Projectで
はウェブサーバーを運営しており、この文書も『AX25-HOWTO』 として掲載されています。また 
Linux Documentation Project  以下のリンクから
様々な形式でこの文書を取り出すことも可能です。

私自身に連絡をとっていただいても構いませんが、私は最新版を LDP の HOWTO
担当者に渡すようにしています。なので LDP に新しいバージョンがなければ、
私がまだそれを書き上げていないということだと思います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

1.3. その他の関連する文書

多くの関連文書があります。Linux のネットワーク全般をもっと広く解説した
文書がたくさんあるので、そうした文書を読むことを強くおすすめします。実
際に役に立つだけでなく、状況に応じた設定をする上で深い洞察を与えてくれ
るでしょう。以下に列記します。

 ・ Linux Networking HOWTO 
   
 ・ Linux Ethernet HOWTO 
   
 ・ Linux Firewall and Proxy Server HOWTO 
   
 ・ Linux 2.4 Advanced Routing HOWTO 
   
 ・ Netrom-Node mini-Howto 
   
    Note: (訳注) 上記文書の日本語訳については JF Project  のサイトをご覧ください。
   
ひょっとしたら Linux HAM HOWTO のことが頭に浮かんだかも知れませんね。こ
の文書はもう廃版となっており、その役目を Hamsoft Linux Ham Radio
Applications and Utilities Database  に譲り
ました。 Linux についてのもっと一般的な情報は他の HOWTO 文書 を参照するとよいでしょう
。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. パケット無線のプロトコル群と Linux

AX.25 プロトコルはコネクション型および非コネクション型の通信モードを持
っており、それ自体でポイント−ポイント間の通信に使われたり、また TCP/IP
や NET/ROM といった他のプロトコルを通すために使われたりします。

構造としては X.25 level 2 に似ていますが、アマチュア無線により適するよ
ういくつか拡張がなされています。

NET/ROM プロトコルはフル規格のネットワークプロトコルを作ろうという試み
です。AX.25 を下位層のデータリンク層プロトコルとして使います。 AX.25 に
適合した形式でネットワーク層を提供し、動的ルーティングやノードエイリア
スといった機能を備えています。

ROSE プロトコルは Tom Moulton W2VY によって考案され実装されました。
X.25 パケット層プロトコルの実装であり、AX.25 をデータリンク層プロトコル
として使うよう設計されています。このプロトコルもネットワーク層を提供し
ています。 ROSE アドレスは 10 桁の数字からなりますが、最初の 4 桁は
Data Network Identification Code (DNIC) と呼ばれ、CCITT 勧告 X.121 の
Appendix B から採用されています。 ROSE プロトコルのさらなる情報は RATS
Web server  から得られるでしょう。

Alan Cox は Linux における初期のカーネルまわりの AX.25 機能を開発しまし
た。 Jonathon Naylor  はその後の開発を
引き継いで NET/ROM や ROSE のサポートを追加しました。現在は AX.25 に関
するカーネルコードの開発者です。 DAMA サポートは Joerg  DL1BKE によって開発されました。 Baycom, Soundmodem
のサポートは Thomas Sailer  が追加しまし
た。 AX.25 機能のソフトウェア集は現在 SourceForge  の小さなチーム (small team) によって保守されていま
す。(訳注:small teamとはメインテナーの名前Smallとかけた洒落、実質のメ
インテナーが彼一人という皮肉もちょっとあるように思う)

Linux のコードは TNC (Terminal Node Controller) を使う KISS や 6PACK、
また generic SCC ドライバーにより Ottawa PI カード、Gracilis PacketTwin
カード、その他の Z8530 SCC を用いたカードを、またパラレルポートやシリア
ルポート用の何種類かの Baycom モデムとシリアルポート用の YAM モデムをサ
ポートしています。 Thomas Sailer のカーネル版 soundmodem ドライバーは
SoundBlaster や Crystal のチップセットを使ったサウンドカードをサポート
しています。また彼の新しいユーザーモード版 soundmodem はカーネル標準の
サウンドドライバーを使っており、Linux がサポートするどのサウンドカード
でも動作するはずです。

ユーザー領域のプログラム集には簡単な PMS (Personal Message System) (訳
注:簡易版 RBBS のようなもの) やビーコン機能、ラインモードの connect プ
ログラム、listen (どのようにして raw レベルで全ての AX.25 フレームを取
り込むかの例)、NET/ROM プロトコルを設定するためのプログラムなどが含まれ
ています。 AX.25 の接続要求を受付けて処理するようなサーバー型のプログラ
ムや NET/ROM 機能の大変な部分をほとんどまかなう NET/ROM デーモンなども
含まれています。

APRS をサポートするユーティリティープログラムもあります。これにはデジピ
ート機能やインターネットとのゲートウェイ機能も含まれています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2.1. どういった仕組みになっているの?

Linux の AX.25 機能は全く新しい実装です。 NOS やら BPQ やらといった他の
AX.25 の実装にいろんな点で似ているように見えるかも知れませんが、これら
の仲間ではありませんし、またこれらと同一なものというわけでもありません
。 Linux の AX.25 機能は他の AX.25 の実装と同一な振舞をするよう設定でき
ますが、設定のやり方はかなり異なっています。

設定時には何をどう考えるべきかという理解を手助けするため、この章では
AX.25 の実装の構造的特徴について少し触れて、それが Linux 全体の枠組の中
でどのように組み込まれているか説明します。

プロトコル層の簡単な図
┌──────────────────────────────────┐
│ _____________________________________________                      │
│|         |           |             |         |                     │
│| AF_AX25 | AF_NETROM |  AF_INET    | AF_ROSE |                     │
│|=========|===========|=============|=========|                     │
│|         |           |             |         |                     │
│|         |           |    TCP/IP   |         |                     │
│|         |           |________     |         |                     │
│|         |   NET/ROM          |    | ROSE    |                     │
│|         |____________________|____|_________|                     │
│|            AX.25                            |                     │
│|_____________________________________________|                     │
└──────────────────────────────────┘

この図が示しているのは、NET/ROM や ROSE や TCP/IP が直接 AX.25 の上で動
作するようになっており、各プロトコルは別々のプログラムインターフェイス
で扱われるということです。 `_'のついた名前は、これらのプロトコルの 
Address Family につけらる名前であり、プログラムを書く際にはこの名前を使
います。ここでの重要なポイントは、AX.25 のデバイスを設定してからでない
と、 NET/ROM や ROSE や TCP/IP の各デバイスを設定できないという暗黙の依
存関係です。

Linux におけるネットワーク実装の各ソフトウェアモジュールの関係
┌───────────────────────────────────────┐
│ ___________________________________________________________________________  │
│|         |           |                       ||          |                 | │
│| User    | Programs  |   call        node    ||  Daemons | ax25d  mheardd  | │
│|         |           |   pms         mheard  ||          | inetd  netromd  | │
│|_________|___________|_______________________||__________|_________________| │
│|         | Sockets   |open(), close(), listen(), read(), write(), connect()| │
│|         |           |_____________________________________________________| │
│|         |           |   AF_AX25   |  AF_NETROM  |   AF_ROSE   |  AF_INET  | │
│|         |___________|_____________|_____________|_____________|___________| │
│|Kernel   | Protocols |   AX.25     |   NetRom    |     ROSE    | IP/TCP/UDP| │
│|         |___________|_____________|_____________|_____________|___________| │
│|         | Devices   |   ax0,ax1   |  nr0,nr1    | rose0,rose1 | eth0,ppp0 | │
│|         |___________|_____________|_____________|_____________|___________| │
│|         | Drivers   | Kiss   PI2   PacketTwin   SCC   BPQ     | slip ppp  | │
│|         |           |     Soundmodem      Baycom              | ethernet  | │
│|_________|___________|_________________________________________|___________| │
│|Hardware | PI2 Card, PacketTwin Card, SCC card, Serial port, Ethernet Card | │
│|_________|_________________________________________________________________| │
└───────────────────────────────────────┘
 

この図は先のものよりやや一般的なものです。この図ではユーザーアプリケー
ションやカーネル、ハードウェアの関係を表しています。またソケットインタ
ーフェイスや実際のプロトコルモジュール、カーネルネットワークデバイスと
デバイスドライバの関係も表しています。上にあるものは下にあるものに依存
しており、一般に設定はこの図で下から上へという順番で行う必要があります
。ですから例えば call というプログラムを動かしたいなら、まずハードウェ
アについて設定し、次にカーネルに正しいデバイスドライバーが組み込まれて
おり、さらに正しいネットワークデバイスが作成されていて、そして call が
使うプログラムインターフェースを提供するプロトコルがカーネルに組み込ま
れていなければなりません。この文書でもだいたいこんな順番で説明していこ
うと思っています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. AX.25/NET/ROM/ROSE ソフトウェア

AX.25 のソフトウェアは三つの部分から成っています。すなわち、カーネルソ
ース、ネットワークの設定ツール、ユーティリティプログラムの三つです。

Linux カーネルの AX.25 機能はカーネル 2.2 シリーズ以降たいへん安定した
ものとなっています。この文書では最新のカーネル (執筆の時点で 2.4.9) を
使っているものとします。

    Note: この文書に記載されるソフトウェアのバージョンは、執筆の時点で
    の最新バージョンでしかなく、適宜更新される予定です。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.1. カーネルやツールやユーティリティ集をさがす

3.1.1. カーネルのソースは?

カーネルのソースは www.kernel.org や ftp.kernel.org にあります。バージ
ョン 2.4.9 のカーネルなら ftp://ftp.kernel.org/pub/linux/kernel/v2.4/
linux-2.4.9.tar.gz といった具合にダウンロードできます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.1.2. ネットワークツールは?

標準の Linux ネットワークツールの最新リリースは AX.25 および NET/ROM を
サポートします。 http://www.tazenda.demon.co.uk/phil/net-tools にありま
す。

最新の ipchains パッケージは http://netfilter.filewatcher.org/ipchains
 にあります。

    Note: 最近の Linux ディストリビューションなら大抵これらのツールは含
    まれているはずなので、いちいちダウンロードしてインストールする必要
    はないです。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.1.3. AX.25 ユーティリティは?

バージョン 2.0 や 2.1 のカーネルで使われていた昔の ax25-utils はもはや
使われません。 SourceForge  の http://
sourceforge.net/projects/hams にある新しいパッケージに置き換えられてい
ます。

このソフトウェアは AX.25 ライブラリー、ツール、アプリケーションという三
つのパッケージで配布されています。執筆の時点で最新のバージョンは以下の
通りです。

 ・ ftp://hams.sourceforge.net/pub/hams/ax25/libax25-0.0.7.tar.gz
   
 ・ ftp://hams.sourceforge.net/pub/hams/ax25/ax25-tools-0.0.6.tar.gz
   
 ・ ftp://hams.sourceforge.net/pub/hams/ax25/ax25-apps-0.0.4.tar.gz
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.1.4. APRS ユーティリティは?

APRS を使うなら aprsd  と 
aprsdigi  をダウンロードし
ましょう。

 ・ http://prdownloads.sourceforge.net/aprsd/aprsd-2.1.4.tar.gz
   
 ・ http://www.users.cloud9.net/~alan/ham/aprs/aprsdigi-2.0-pre3.tar.gz
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. AX.25/NET/ROM/ROSE ソフトウェアのインストール

AX.25 機能のインストールを成功するためには、まず適切にカーネルを設定し
、その上で AX.25 ユーティリティをインストールする必要があります。

    Tip: ソースからコンパイルしなおしてインストールするより、あらかじめ
    コンパイルされたバイナリーのパッケージをシステムにインストールする
    方がお好みかも知れませんね。Debian や RPM 形式のパッケージは http:/
    /www.debian.org や http://rpmfind.net をはじめとする様々なアーカイ
    ブサイトで手に入れられます。「AX.25」というキーワードを頼りに探して
    みてください。ところで Debian Linux は多くの人から「アマチュア無線
    向き」なディストリビューションであると見られています。アマチュア無
    線用のアプリケーションもたくさん Debian パッケージの形で提供されて
    います (このプロジェクトの創始者の一人がハムなのです)。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.1. カーネルのコンパイル

Linux カーネルのコンパイルの手順についてよく知っているなら、この章は読
み飛ばしていただいて結構です。カーネルのコンパイルの際には適切なオプシ
ョンを選ぶことだけ気をつけてください。もしよく分からなければ、このまま
読みましょう。Linux Kernel HOWTO  (訳注:日本語訳 ) も読むと参考になると思います。

通常カーネルソースを展開するための場所は /usr/src で linux というサブデ
ィレクトリに展開されます。この作業のために root としてログインして以下
のコマンドを順番に実行していきます。

┌──────────────────────────────────┐
│# cd /usr/src                                                       │
│# mv linux linux.old                                                │
│# tar xzvf linux-2.4.9.tar.gz                                       │
│# cd linux                                                          │
└──────────────────────────────────┘

カーネルソースを展開したなら、つぎに設定用のスクリプトを実行して、あな
たのお持ちのハードウェア環境に適切なオプションや、カーネルに組み込みた
いと思っている機能のオプションを選択する必要があります。以下のコマンド
により行います。

┌──────────────────────────────────┐
│# make menuconfig                                                   │
└──────────────────────────────────┘

X を使っているなら以下のコマンドでグラフィックインターフェイスが使える
でしょう。

┌──────────────────────────────────┐
│# make xconfig                                                      │
└──────────────────────────────────┘

あるいは以下の方法もあります。

┌──────────────────────────────────┐
│# make config                                                       │
└──────────────────────────────────┘

以降の説明ではフルスクリーン (menuconfig) の方法を使うことにします。こ
れの方が各オプションの項目を動きまわりやすいと思うので。ですが、あなた
がもっとも使いやすいと感じる方法を選んでもらえば結構です。

どの方法でも「Y」とか「N」とか答えるオプションの一覧が表示されるでしょ
う。(モジュールを使うなら「M」と答えます。ただし説明を簡単にするために
ここでは触れません。必要に応じて読み換えてください。)

AX.25 の設定に関係するオプションは以下の通りです:

┌────────────────────────────────────────┐
│Code maturity level options  --->                                               │
│    [*] Prompt for development and/or incomplete code/drivers                   │
│    ...                                                                         │
│General setup  --->                                                             │
│    ...                                                                         │
│    [*] Networking support                                                      │
│    ...                                                                         │
│Networking options  --->                                                        │
│    <*> UNIX domain sockets                                                     │
│    ...                                                                         │
│    [*] TCP/IP networking                                                       │
│    ...                                                                         │
│    [?] IP: tunneling                                                           │
│    ...                                                                         │
│Amateur Radio Support --->                                                      │
│    --- Packet Radio protocols                                                  │
│    [*]   Amateur Radio AX.25 Level 2 protocol                                  │
│    [?]     AX.25 DAMA Slave support                                            │
│    [?]     Amateur Radio NET/ROM protocol                                      │
│    [?]     Amateur Radio X.25 PLP (Rose)                                       │
│    AX.25 network device drivers  --->                                          │
│     Serial port KISS driver                                                    │
│     Serial port 6PACK driver                                                   │
│     BPQ Ethernet driver                                                        │
│     High-speed (DMA) SCC driver for AX.25                                      │
│     Z8530 SCC driver                                                           │
│     BAYCOM ser12 fullduplex driver for AX.25                                   │
│     BAYCOM ser12 halfduplex driver for AX.25                                   │
│     BAYCOM picpar and par96 driver for AX.25                                   │
│     BAYCOM epp driver for AX.25                                                │
│     Soundcard modem driver                                                     │
│    [?]   soundmodem support for Soundblaster and compatible cards              │
│    [?]   soundmodem support for WSS and Crystal cards                          │
│    [?]   soundmodem support for 1200 baud AFSK modulation                      │
│    [?]   soundmodem support for 2400 baud AFSK modulation (7.3728MHz crystal)  │
│    [?]   soundmodem support for 2400 baud AFSK modulation (8MHz crystal)       │
│    [?]   soundmodem support for 2666 baud AFSK modulation                      │
│    [?]   soundmodem support for 4800 baud HAPN-1 modulation                    │
│    [?]   soundmodem support for 4800 baud PSK modulation                       │
│    [?]   soundmodem support for 9600 baud FSK G3RUH modulation                 │
│     YAM driver for AX.25                                                       │
└────────────────────────────────────────┘

「*」で示したオプションは「Y」と答えなければならないものです。残りのオ
プションはあなたがお持ちのハードウェアや、他のオプションをどう組み込む
かにもよります。いくつかのオプションについては後でより詳しく説明します
ので、まだどれが必要か分からなければ先の方を読んでからこの箇所に戻って
きてください。

カーネルの設定がおわれば新しいカーネルを問題なくコンパイルできることで
しょう。

┌──────────────────────────────────┐
│# make dep                                                          │
│# make clean                                                        │
│# make zImage                                                       │
└──────────────────────────────────┘

arch/i386/boot/zImage を必要な場所に移動し、次回ブート時にこのカーネル
が立ち上がるよう /etc/lilo.conf を変更してから lilo を実行します。

    Note: (訳注) カーネルのコンパイルの仕方については各ディストリビュー
    ションの推奨する方法に従ってください。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.1.1. カーネルモジュールについてちょっとだけ

AX.25 はたまに使うだけだからシステムリソースの消費量を減らすためにもオ
ンデマンドでロードしたりアンロードしたりしたい、というのならドライバー
をモジュールとしてコンパイルするのが便利でしょう。ただし、設定はより複
雑になりますから、モジュール化したドライバーが動作しないといった問題の
起こることもあります。ドライバーをモジュールとしてコンパイルするよう指
定した場合、各モジュールを適切な場所にインストールするために以下のコマ
ンドも実行する必要があるでしょう。

┌──────────────────────────────────┐
│# make modules                                                      │
│# make modules_install                                              │
└──────────────────────────────────┘

プログラム kerneld がカーネルモジュールを見つけられるように /etc/
modules.conf にいくつか項目を追加する必要があります。以下のように追加ま
たは変更してください。

┌───────────────────────────────────┐
│alias net-pf-3     ax25                                               │
│alias net-pf-6     netrom                                             │
│alias net-pf-11    rose                                               │
│alias tty-ldisc-1  slip                                               │
│alias tty-ldisc-3  ppp                                                │
│alias tty-ldisc-5  mkiss                                              │
│alias bc0          baycom                                             │
│alias nr0          netrom                                             │
│alias pi0a         pi2                                                │
│alias pt0a         pt                                                 │
│alias scc0         optoscc    (または、その他の SCC ドライバーを一つ) │
│alias sm0          soundmodem                                         │
│alias tunl0        newtunnel                                          │
│alias char-major-4 serial                                             │
│alias char-major-5 serial                                             │
│alias char-major-6 lp                                                 │
└───────────────────────────────────┘

    Tip: Debian 系の Linux システムではこのエントリーを /etc/modutils/
    aliases に書き込んでから /sbin/update-mpodules を実行します。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4.2. AX.25 用ライブラリー、ツール、アプリケーション

新しいカーネルのコンパイルと起動がうまくいったら次は ax25 用のライブラ
リー、ツール、アプリケーションの各プログラムをコンパイルしてインストー
ルします。

libax25 をコンパイルしてインストールするには以下のコマンドを順番に実行
してください。

┌────────────────────────────────────┐
│# cd /usr/src                                                           │
│# tar xzvf libax25-0.0.7.tar.gz                                         │
│# cd libax25-0.0.7                                                      │
│# ./configure --exec_prefix=/usr --sysconfdir=/etc --localstatedir=/var │
│# make                                                                  │
│# make install                                                          │
└────────────────────────────────────┘

    Tip: configure コマンドの引数は各ファイルが /usr 以下の bin, sbin,
    etc, man といった「標準」の場所にインストールされるよう指定するもの
    です。 configure をオプションをつけずに起動すると全てのファイルを /
    usr/local 以下の各サブディレクトリに置くようになります。こうすると
    設定ファイルが /usr と /usr/local にバラバラに置かれるということが
    起きたりします。そうならないようにしたければ、インストール作業の最
    初の段階で /usr/local/etc/ax25 が /etc/ax25 へのシンボリックリンク
    になるようにしておくことです。そうすれば設定ファイルがどこへいって
    しまったか、などと悩んだりすることはないでしょう。
   
このインストール作業がはじめて、つまりそのマシンに ax25 用プログラムを
今まで一度も入れたことがなければ、/etc/ax25/ 以下に設定ファイルのサンプ
ルをインストールするために以下のコマンドを実行してください。

┌──────────────────────────────────┐
│# make installconf                                                  │
└──────────────────────────────────┘

次に AX.25 ツールも同様な手順でコンパイル、そしてインストールします。

┌──────────────────────────────────┐
│# cd /usr/src                                                       │
│# tar xzvf ax25-tools-0.0.6.tar.gz                                  │
│# cd ax25-tools-0.0.6                                               │
│# ./configure --prefix=/usr  --sysconfdir=/etc --localstatedir=/var │
│# make                                                              │
│# make install                                                      │
│# make installconf (設定ファイルをインストールする場合)             │
└──────────────────────────────────┘

最後は AX.25 アプリケーションのインストールです。

┌──────────────────────────────────┐
│# cd /usr/src                                                       │
│# tar xzvf ax25-apps-0.0.4.tar.gz                                   │
│# cd ax25-apps-0.0.4                                                │
│# ./configure --prefix=/usr  --sysconfdir=/etc --localstatedir=/var │
│# make                                                              │
│# make install                                                      │
│# make installconf (設定ファイルをインストールする場合)             │
└──────────────────────────────────┘

もし次のようなメッセージが表示されたら、

┌──────────────────────────────────┐
│gcc -Wall -Wstrict-prototypes -O2 -I../lib -c call.c                │
│call.c: In function `statline':                                     │
│call.c:268: warning: implicit declaration of function `attron'      │
│call.c:268: `A_REVERSE' undeclared (first use this function)        │
│call.c:268: (Each undeclared identifier is reported only once       │
│call.c:268: for each function it appears in.)                       │
└──────────────────────────────────┘

ncurses パッケージが正しくインストールされているか確認してください。
configure スクリプトはパッケージが標準の場所にインストールされているか
を確認しますが、なかには変な場所にインストールされているため見つけられ
ないケースもあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5. 動かす前に:コールサインとかアドレスとかについて

システム上の AX.25 や NET/ROM の各ポートには SSID 付コールサイン (訳注
: Sub Station ID、つまり「-1」とか「-5」とかのアレ) が割当てられていな
ければなりません。これはこれから詳しく説明する設定ファイルにおいて設定
します。

NOS や BPQ といった AX.25 の実装の中には AX.25 や NET/ROM の各ポートに
同一の SSID 付きコールサインを割当てられるものがあります。 Linux ではち
ょっと込みいった技術的な事情で、こういうことができません。でも実際のと
ころ、それほど大きな問題ではないですけど。

つまり設定の内容を考えるときには、あらかじめ注意しておかなければならな
いことがいくつかあるということです。以下に列挙してみます。

 

 1. AX.25 と NET/ROM の各ポートは別々の SSID 付きコールサインを使うよう
    設定する。
   
 2. TCP/IP は送受信に使われる AX.25 ポートの SSID 付きコールサインを使
    う。つまり 1. において AX.25 インターフェイスに割当てたものである。
   
 3. NET/ROM は設定ファイルにある SSID 付きコールサインを使う。ただしこ
    のコールサインは他の NET/ROM ノードに接続するときにだけ使われるもの
    で、一般の AX.25 ユーザーがあなたの NET/ROM ノードに接続するときに
    使う SSID 付きコールサインとは違う。詳しくは後ほど説明。
   
 4. ROSE 用のコールサインが「rsparms」コマンドにより指定されていなけれ
    ば、ROSE はデフォルトで AX.25 ポート用の SSID 付きコールサインを使
    う。「rsparms」コマンドで SSID 付きコールサインを指定してあれば、
    ROSE は全てのポートでこの SSID 付きコールサインを使う。
   
 5. その他のプログラム、例えば「ax25d」などはどの様な SSID 付きコールサ
    インでも接続を受付ける。これは他のポートと重複していても構わない。
   
 6. ルーティングに気をつければ全てのポートに同じ IP アドレスを設定して
    も構わない。お望みであれば。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.1. T1, T2, N2 とかって何ですか?

AX.25 の実装は全部が全部 TNC2 というわけではありません。あなたが TNC を
使ったパケットしか知らないとしたら、今まで親しんできたのとはやや違った
名称を Linux は使っています。以下の表は各設定項目がどのような意味を持つ
か示しています。この文書を読んでいて知らない名称に出くわしてもそれがど
ういう意味を持つか分かると思います。

┌─────┬───────┬───────────────────┐
│Linux での│TAPR TNC での │説明                                  │
│名称      │名称          │                                      │
├─────┼───────┼───────────────────┤
│T1        │FRACK         │ACK されなかったフレームを再送信するま│
│          │              │での待ち時間                          │
├─────┼───────┼───────────────────┤
│T2        │RESPTIME      │ACK を送信するまで次の受信フレームを待│
│          │              │つ最小時間                            │
├─────┼───────┼───────────────────┤
│T3        │CHECK         │リンクが生きているかどうか確認する時間│
│          │              │間隔                                  │
├─────┼───────┼───────────────────┤
│N2        │RETRY         │接続が切れたと判断するまで繰り返す再送│
│          │              │信回数                                │
├─────┼───────┼───────────────────┤
│Idle      │              │切断までにアイドル状態にあるとみなす時│
│          │              │間間隔                                │
├─────┼───────┼───────────────────┤
│Window    │MAXFRAME      │ACK されなかった送信フレームの最大値  │
└─────┴───────┴───────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5.2. 実行時に設定可能なパラメーター

実行時には多くのカーネルパラメーターを変更することができます。 /proc/
sys/net/ 以下をよく見れば、ネットワーク設定の様々なパラメーターを書き込
まれた分かりやすい名前のファイルがたくさんあることが分かるでしょう。 /
proc/sys/net/ax25/ 以下の各ディレクトリは設定されている各 AX.25 ポート
を表しています。ディレクトリ名がポートの名前です。

/proc/sys/net/ax25/portname/ 以下にあるファイルはこんな感じです。

┌───────────┬────────┬─────────┬──┐
│ファイル名            │意味            │取り得る値        │初期│
│                      │                │                  │値  │
├───────────┼────────┼─────────┼──┤
│ip_default_mode       │IP Default Mode │0=DG 1=VC         │0   │
├───────────┼────────┼─────────┼──┤
│ax25_default_mode     │AX.25 Default   │0=Normal 1=       │0   │
│                      │Mode            │Extended          │    │
├───────────┼────────┼─────────┼──┤
│backoff_type          │Backoff         │0=Linear 1=       │1   │
│                      │                │Exponential       │    │
├───────────┼────────┼─────────┼──┤
│connect_mode          │Connected Mode  │0=No 1=Yes        │1   │
├───────────┼────────┼─────────┼──┤
│standard_window_size  │Standard Window │1 .. 7            │2   │
├───────────┼────────┼─────────┼──┤
│extended_window_size  │Extended Window │1 .. 63           │32  │
├───────────┼────────┼─────────┼──┤
│t1_timeout            │T1 Timeout      │1s .. 30s         │10s │
├───────────┼────────┼─────────┼──┤
│t2_timeout            │T2 Timeout      │1s .. 20s         │3s  │
├───────────┼────────┼─────────┼──┤
│t3_timeout            │T3 Timeout      │0s .. 3600s       │300s│
├───────────┼────────┼─────────┼──┤
│idle_timeout          │Idle Timeout    │0m 以上           │20m │
├───────────┼────────┼─────────┼──┤
│maximum_retry_count   │N2              │1 .. 31           │10  │
├───────────┼────────┼─────────┼──┤
│maximum_packet_length │AX.25 Frame     │1 .. 512          │256 │
│                      │Length          │                  │    │
└───────────┴────────┴─────────┴──┘

この表の T1, T2, T3 の単位は秒で、Idle Timeout の単位は分です。ただし
sysctl で使うときは秒に 10 をかけた内部表記で指定するので気をつけてくだ
さい。これは 1/10 秒単位の時間分解能で指定するためです。 T3 や Idle と
いった設定値にゼロを指定できるタイマーでは、ゼロという値はタイマーを使
用していないことを表します。

/proc/sys/net/netrom/ 以下のファイルはこんな感じです。

┌────────────────┬──┬─────┬───┐
│ファイル名                      │意味│取り得る値│初期値│
├────────────────┼──┼─────┼───┤
│default_path_quality            │    │          │10    │
├────────────────┼──┼─────┼───┤
│link_fails_count                │    │          │2     │
├────────────────┼──┼─────┼───┤
│network_ttl_initialiser         │    │          │16    │
├────────────────┼──┼─────┼───┤
│obsolescence_count_initialiser  │    │          │6     │
├────────────────┼──┼─────┼───┤
│routing_control                 │    │          │1     │
├────────────────┼──┼─────┼───┤
│transport_acknowledge_delay     │    │          │50    │
├────────────────┼──┼─────┼───┤
│transport_busy_delay            │    │          │1800  │
├────────────────┼──┼─────┼───┤
│transport_maximum_tries         │    │          │3     │
├────────────────┼──┼─────┼───┤
│transport_requested_window_size │    │          │4     │
├────────────────┼──┼─────┼───┤
│transport_timeout               │    │          │1200  │
└────────────────┴──┴─────┴───┘

/proc/sys/net/rose/ 以下のファイルはこんな感じです。

┌───────────────┬──┬─────┬───┐
│ファイル名                    │意味│取り得る値│初期値│
├───────────────┼──┼─────┼───┤
│acknowledge_hold_back_timeout │    │          │50    │
├───────────────┼──┼─────┼───┤
│call_request_timeout          │    │          │2000  │
├───────────────┼──┼─────┼───┤
│clear_request_timeout         │    │          │1800  │
├───────────────┼──┼─────┼───┤
│link_fail_timeout             │    │          │1200  │
├───────────────┼──┼─────┼───┤
│maximum_virtual_circuits      │    │          │50    │
├───────────────┼──┼─────┼───┤
│reset_request_timeout         │    │          │1800  │
├───────────────┼──┼─────┼───┤
│restart_request_timeout       │    │          │1800  │
├───────────────┼──┼─────┼───┤
│routing_control               │    │          │1     │
├───────────────┼──┼─────┼───┤
│window_size                   │    │          │3     │
└───────────────┴──┴─────┴───┘

パラメーターを設定するのに必要なことはファイルそのものに指定したい値を
書き込むだけです。例えば ROSE の window size の設定値を調べて新しい値を
設定するには、以下のようにします。

┌──────────────────────────────────┐
│# cat /proc/sys/net/rose/window_size                                │
│3                                                                   │
│# echo 4 >/proc/sys/net/rose/window_size                            │
│# cat /proc/sys/net/rose/window_size                                │
│4                                                                   │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6. AX.25 ポートの設定

Linux マシン上で設定されている、いろいろな AX.25 ポートのパラメーターを
取得するために AX.25 用の各アプリケーションは特定のファイルを読みだしま
す。 AX.25 ポートに関して言えば、/etc/ax25/axports がそのファイルです。
システムに作りたい各 AX.25 ポートに対応する項目を、このファイルに作らな
ければなりません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1. AX.25 ネットワークデバイスを作る

ネットワークデバイスとは ifconfig コマンドを実行したときに表示されるあ
れのことです。たいていの場合、ネットワークデバイスには物理ポートが関連
づけられていますが、物理ポートの必要ない場合もあります。ネットワークデ
バイスはデバイスドライバーに直結しています。

Linux の AX.25 コードには数々のデバイスドライバーが含まれています。多分
、もっとも一般的なものは KISS ドライバーでしょう。他には SCC ドライバー
、Baycom ドライバー、Soundmodem ドライバーなどが挙げられます。

これらの各ドライバーは起動時にそれぞれネットワークデバイスを作成します
。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.1. KISS デバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│Amateur Radio support  --->                                         │
│    [*] Amateur Radio support                                       │
│    --- Packet Radio protocols                                      │
│    <*>   Amateur Radio AX.25 Level 2 protocol                      │
│    ...                                                             │
│    AX.25 network device drivers  --->                              │
│    --- AX.25 network device drivers                                │
│    <*> Serial port KISS driver                                     │
│    ...                                                             │
└──────────────────────────────────┘
 

おそらく最も一般的な設定といえばシリアルポートにつながれた KISS TNC で
しょう。あらかじめ TNC はシリアルポートに接続して設定をしておく必要があ
ります。 TNC を KISS モードに設定するのには minicom や seyon といった通
信用プログラムが使えるでしょう。

KISS デバイスを作るには kissattach プログラムを使います。一番シンプルな
使い方としてはこんな感じです。

┌──────────────────────────────────┐
│# /usr/sbin/kissattach /dev/ttyS0 radio 44.135.96.242               │
│# kissparms -p radio -t 100 -s 100 -r 25                            │
└──────────────────────────────────┘

kissattach は KISS のネットワークデバイスを作ります。このデバイスの名前
は「ax[0-9]」です。最初に kissattach を使うと「ax0」が作られ、次に使う
と「ax1」が作られ、といった具合です。 KISS デバイスは各々シリアルポート
に関連づけられています。

kissparms コマンドは KISS デバイスの各種パラメーターの設定に使います。

上に示した例では、/etc/ax25/axports 中の「radio」というポート名の KISS
ネットワークデバイスをシリアルデバイス /dev/ttyS0 に作成しています。続
いて txdelay、slottime をそれぞれ 100 ミリ秒に、ppersistを 25 に設定し
ています。

さらに詳細な情報は man ページを参照してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.1.1. デュアルポート TNC の設定

ax25-utils パッケージに含まれる mkiss ユーティリティを使えばデュアルポ
ートTNCの両方のポートを使えるようになります。 (訳注:mkiss は
ax25-tools パッケージに含まれています) 設定は極めて簡単です。このユーテ
ィリティは、一つのシリアルデバイスに一台のマルチポート TNC が接続されて
いる構成を、複数のシリアルデバイスにそれぞれシングルポートの TNC が接続
されているように見せかけて動作します。このような仕掛けは AX.25 の設定を
行う前に行います。そして AX.25 の設定を仮想 TTY インターフェイス (/dev/
ttyq*) に対して行います。実際のシリアルデバイスに対してではありません。
仮想 TTY デバイスは TTY デバイスと通信するプログラムが、他の TTY デバイ
スと通信するプログラムに対して通信を行えるような一種のパイプを作成しま
す。それぞれのパイプにはマスター側とスレーブ側が存在します。通常、マス
ター側は「/dev/ptyq*」と呼ばれ、スレーブ側は「/dev/ttyq*」と呼ばれます
。マスター側とスレーブ側には一対一の対応関係があり、 /dev/ptyq0 がパイ
プのマスター側なら /dev/ttyq0 がスレーブ側といった具合になります。パイ
プのスレーブ側をオープンする前にマスター側をオープンしていなければなり
ません。 mkiss は一つのシリアルデバイスを複数のデバイスに分けるためにこ
の仕掛けを活用しているのです。

例:デュアルポート TNC がシリアルデバイス /dev/ttyS0 に 9600bps で接続
されているとする。

┌──────────────────────────────────┐
│# /usr/sbin/mkiss -s 9600 /dev/ttyS0 /dev/ptyq0 /dev/ptyq1          │
│# /usr/sbin/kissattach /dev/ttyq0 port1 44.135.96.242               │
│# /usr/sbin/kissattach /dev/ttyq1 port2 44.135.96.242               │
└──────────────────────────────────┘

最初のコマンドでそれぞれが普通のシングルポート TNC のように見える二つの
仮想 TTY デバイスが作られます。そして /dev/ttyq0 と /dev/ttyq1 を通常の
TNC が接続されたシリアルデバイスのごとく扱います。つまり、例において
port1、port2 と呼んでいる AX.25 ポートのそれぞれについて、前節で説明し
たように kissattach コマンドを使うのです。実際のシリアルデバイスは 
mkiss プログラムが使用しますから、kissattach を実際のシリアルデバイスに
ついて使ってはいけません。

mkiss コマンドには便利なオプションがいっぱいあります。以下にまとめてみ
ます。

-c
   
    各 KISS フレームに 1 バイトのチェックサムを付加する。この機能は大抵
    の KISS の実装ではサポートされていないが、G8BPQ KISS ROM などではサ
    ポートされる。
   
-s 
   
    シリアルポートのスピードを設定する。
   
-h
   
    シリアルポートをハードウェアハンドシェイクするようにする。デフォル
    トはオフ。大抵の KISS の実装ではサポートされていないが、これをサポ
    ートするものもある。
   
-l
   
    syslog 機能を使ってログをとるようにする。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.2. 6PACK デバイスを作成する

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│Amateur Radio support  --->                                         │
│    [*] Amateur Radio support                                       │
│    --- Packet Radio protocols                                      │
│    <*>   Amateur Radio AX.25 Level 2 protocol                      │
│    ...                                                             │
│    AX.25 network device drivers  --->                              │
│    --- AX.25 network device drivers                                │
│    ...                                                             │
│    <*> Serial port 6PACK driver                                    │
│    ...                                                             │
└──────────────────────────────────┘

6PACK はいくつかの TNC で KISS に代わるものとしてサポートされているプロ
トコルです。 KISS ドライバーと同じような使い方をしますが、 kissattach
コマンドが slattach コマンドになります。(訳注:slattach ではなく
spattach が本当です。実体は kissattach へのシンボリックリンクだと思いま
すが。)

カーネルソースに 6PACK ドライバーのちょっとした HOWTO 文書が付属してい
ます。ファイル名は /usr/src/linux/Documentation/networking/6pack.txt で
す。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.3. Baycom デバイスを作る

    Note: (訳注)この章で述べられている Baycom ドライバーの設定は翻訳の
    時点ですでに古い情報です。最新の情報についてはカーネル付属文書
    baycom.txt を参照するようにしてください。
   
カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│Amateur Radio support  --->                                         │
│    [*] Amateur Radio support                                       │
│    --- Packet Radio protocols                                      │
│    <*>   Amateur Radio AX.25 Level 2 protocol                      │
│    ...                                                             │
│    AX.25 network device drivers  --->                              │
│    --- AX.25 network device drivers                                │
│    ...                                                             │
│     BAYCOM ser12 fullduplex driver for AX.25                       │
│     BAYCOM ser12 halfduplex driver for AX.25                       │
│     BAYCOM picpar and par96 driver for AX.25                       │
│     BAYCOM epp driver for AX.25                                    │
│    ...                                                             │
└──────────────────────────────────┘

うまくは動作しないだろうという一般の予想をよそに、Thomas Sailer
 は Baycom モデムの Linux におけるサポー
トを開発しました。彼のドライバーはシリアルポート用 Ser12、パラレルポー
ト用 Par96 およびその改良版 PicPar に対応しています。モデム自体のさらに
詳しい情報は Baycom Web site  から入手できるでし
ょう。

まず最初にすべきことは Baycom モデムを接続するシリアルポートまたはパラ
レルポートの割込み (IRQ) と I/O アドレスを調べることです。そして調べた
その値を使って Baycom ドライバーを設定するのです。

Baycom ドライバーは設定時に bc0, bc1, bc2 といったネットワークデバイス
を作成します。

sethdlc ユーティリティを使えばドライバーの各種パラメーターの設定が可能
です。または Baycom モデムを一つだけ使うのであれば、Baycom モジュールを
ロードする際に insmod のコマンドラインにおいてパラメーターを指定するこ
ともできます。

簡単な設定の例を。COM1: のシリアルドライバーを停止して COM1: に接続した
シリアルポート用 Ser12 モデムの Baycom ドライバーをソフトウェア DCD オ
プションで設定するには−

┌──────────────────────────────────┐
│# setserial /dev/ttyS0 uart none                                    │
│# insmod hdlcdrv                                                    │
│# insmod baycom mode="ser12*" iobase=0x3f8 irq=4                    │
└──────────────────────────────────┘

LPT1: に接続したパラレルポート用 Par96 モデムをハードウェア DCD オプシ
ョンで設定するには−

┌──────────────────────────────────┐
│# insmod hdlcdrv                                                    │
│# insmod baycom mode="par96" iobase=0x378 irq=7 options=0           │
└──────────────────────────────────┘

ただ、この方法はあまりお薦めではありません。 sethdlc ユーティリティなら
たくさんのデバイスを設定するときも一つのデバイスを設定するのと変わりな
いくらい簡単です。

sethdlc の man ページには詳細な情報が掲載されています。しかしながら、こ
こで一つ二つ例を挙げることで設定の重要なポイントが明瞭になると思います
。以下の例では

┌──────────────────────────────────┐
│# insmod hdlcdrv                                                    │
│# insmod baycom                                                     │
└──────────────────────────────────┘

により既に Baycom モジュールをロードしてあるか、またはカーネルのコンパ
イル時に組み込んであるものとします。

デバイス bc0 を LPT1: のパラレルポート用 Baycom モデム (ソフトウェア
DCD) として設定。

┌──────────────────────────────────┐
│# sethdlc -p -i bc0 mode par96 io 0x378 irq 7                       │
└──────────────────────────────────┘

デバイス bc1 を COM1: のシリアルポート用 Baycomモデムとして設定。

┌──────────────────────────────────┐
│# sethdlc -p -i bc1 mode "ser12*" io 0x3f8 irq 4                    │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.4. AX.25 チャンネルアクセスパラメーターの設定

AX.25 チャンネルアクセスパラメーターとは KISS デバイスで言うところの
ppersist, txdelay, slottime といったパラメーターのことです。この設定に
も sethdlc ユーティリティを使います。

繰返しになりますが、sethdlc の man ページは最も充実した情報源です。ただ
以下に別な例を示すのも、害にはならないでしょう。

デバイス bc0 を TxDelay 200 ミリ秒、SlotTime 100 ミリ秒、PPersist 40、
半二重モードに設定するには

┌──────────────────────────────────┐
│# sethdlc -i bc0 -a txd 200 slot 100 ppersist 40 half               │
└──────────────────────────────────┘

時間を表す値は単位がミリ秒であることに注意。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.4.1. カーネル AX.25 機能が Baycom デバイスを使うように設定する

Baycom ドライバーはカーネルの AX.25 コードが使うことのできる標準的なネ
ットワークデバイスを作成します。設定は PI カードや PacketTwin カードの
場合とほとんど同じです。

まず最初にデバイスに AX.25 でのコールサインを設定します。これには 
ifconfig ユーティリティを使います。

┌──────────────────────────────────┐
│# /sbin/ifconfig bc0 hw ax25 VK2KTJ-15 up                           │
└──────────────────────────────────┘

上の例では Baycom デバイス bc0 に AX.25 でのコールサイン VK2KTJ-15 を割
当てています。あるいは axparms コマンドを用いてもコールサインの設定はで
きますが、デバイスを動作状態にするためにはやはり ifconfig コマンドを使
う必要があります。

┌──────────────────────────────────┐
│# ifconfig bc0 up                                                   │
│# axparms -setcall bc0 vk2ktj-15                                    │
└──────────────────────────────────┘
 

次に /etc/ax25/axports に他のデバイス用に設定したのと同様な項目を作りま
す。 axports ファイルの項目は、そのネットワークデバイスに設定したコール
サインによって関連づけられます。つまり Baycom デバイスに設定したコール
サインと同じコールサインの axports ファイルの項目が Baycom デバイスを参
照するときに使われます。

以上で他の AX.25 デバイスのときと同じように新しいデバイスを扱うことがで
きます。 TCP/IP の設定をしたり、ax25d が動くようにしたり、NET/ROM や
ROSE の設定をしたり、後はあなたのお望みのままです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5. カーネル版 Soundmodem デバイスを作る

カーネルコンパイル時のオプション:
┌────────────────────────────────────────┐
│Amateur Radio support  --->                                                     │
│    [*] Amateur Radio support                                                   │
│    --- Packet Radio protocols                                                  │
│    <*>   Amateur Radio AX.25 Level 2 protocol                                  │
│    ...                                                                         │
│    AX.25 network device drivers  --->                                          │
│    --- AX.25 network device drivers                                            │
│    ...                                                                         │
│    <*> Soundcard modem driver                                                  │
│    [?]   soundmodem support for Soundblaster and compatible cards              │
│    [?]   soundmodem support for WSS and Crystal cards                          │
│    [?]   soundmodem support for 1200 baud AFSK modulation                      │
│    [?]   soundmodem support for 2400 baud AFSK modulation (7.3728MHz crystal)  │
│    [?]   soundmodem support for 2400 baud AFSK modulation (8MHz crystal)       │
│    [?]   soundmodem support for 2666 baud AFSK modulation                      │
│    [?]   soundmodem support for 4800 baud HAPN-1 modulation                    │
│    [?]   soundmodem support for 4800 baud PSK modulation                       │
│    [?]   soundmodem support for 9600 baud FSK G3RUH modulation                 │
│    ...                                                                         │
└────────────────────────────────────────┘

Thomas Sailer がサウンドカードをモデムとして使えるようにするカーネル用
のドライバーを書きました。パケット無線を楽しむためには無線機をサウンド
カードに直接つなげるだけでいいのです!信号のデジタル処理をメインの CPU
で全て行うため、Thomas はこのソフトウェアを使うには少なくとも 486DX2/66
以上の CPU を使うように勧めています。

現在のところ、このドライバーは 1200bps AFSK, 4800bps HAPN, 9600bps FSK
(G3RUH 互換) モデムの機能を持っています。(訳注:他にも 2400bps AFSK,
2666bps AFSK, 4800bps PSK といったモードもあります。) SoundBlaster か
Windows Sound System 互換のカードだけがサポートされています。それ以外の
タイプのカードを持っているなら、この文書の後の方で説明するユーザーモー
ド版 Soundmodem を試してみるとよいでしょう。

サウンドカードから PTT スイッチをドライブするために回路を付足す必要があ
ります。これについての情報は Thomas's Soundmodem PTT circuit web page
 にあります。取得る手
段としてはそんなにあるわけではありません。サウンドカードからの音声出力
を検出するか (訳注:VOX 動作のこと)、パラレルポート、シリアルポート、
MIDI ポートのいずれかを出力として使うかです。それぞれの回路の例が
Thomas のサイトにあります。

Soundmodem ドライバーは設定時に sm0, sm1, sm2 といったネットワークデバ
イスを作成します。

    Note: Soundmodem ドライバーは Linux のサウンドドライバーと同じリソ
    ースに対して競合関係にあります。 Soundmodem ドライバーを使いたけれ
    ば必ず Linux のサウンドドライバーがインストールされていない状態にし
    なければなりません。もちろん両方をモジュールとしてコンパイルし、使
    いたいときに組込んだり取外したりということも可能です。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5.1. サウンドカードを設定

Soundmodem ドライバーはサウンドカードの初期化を行いません。 ax25-utils
パッケージには Crystal チップセットを使ったサウンドカードの初期化用に 
setcrystal というプログラムが入っています。(訳注:setcrystal は
ax25-tools パッケージに含まれます) これ以外のカードを使うなら初期化のた
めに何か他のソフトウェアを使う必要があるでしょう。 (訳注:Linux サウン
ドドライバーなど) このプログラムの使い方はかなり単純です。

┌────────────────────────────────────┐
│setcrystal [-w wssio] [-s sbio] [-f synthio] [-i irq] [-d dma] [-c dma2]│
└────────────────────────────────────┘

例えば I/O アドレス 0x388, IRQ 10, DMA 1 である SoundBlaster カードの設
定をしたいのならば

┌──────────────────────────────────┐
│# setcrystal -s 0x388 -i 10 -d 1                                    │
└──────────────────────────────────┘

I/O アドレス 0x534, IRQ 5, DMA 3 である Window Sound System カードの設
定をしたいのならば

┌──────────────────────────────────┐
│# setcrystal -w 0x534 -i 5 -d 3                                     │
└──────────────────────────────────┘

[-f synthio] ではシンセサイザーのアドレスを、 [-c dma2] では全二重モー
ドで運用するための DMA のチャンネル 2 を、それぞれ設定します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5.2. Soundmodem ドライバーの設定

サウンドカードの設定が終れば、次は Soundmodem ドライバーに対して、どこ
のリソースにサウンドカードがあって、どのようなモードのモデムとして動作
させるかを教えてやらなければなりません。

sethdlc ユーティリティを使えばドライバーの各種パラメーターの設定が可能
です。またはサウンドカードが一枚だけささっているのであれば、 Soundmodem
モジュールをロードする際に insmod のコマンドラインにおいてパラメーター
を指定することもできます。 

簡単な設定の例です。上の設定の例で示したような SoundBlaster が一枚あっ
て、それを 1200bps のモードで動作させたいならば

┌──────────────────────────────────┐
│# insmod hdlcdrv                                                    │
│# insmod soundmodem mode="sbc:afsk1200" iobase=0x388 irq=10 dma=1   │
└──────────────────────────────────┘

ただ、この方法はあまりお薦めではありません。 sethdlc ユーティリティなら
たくさんのデバイスを設定するときも一つのデバイスを設定するのと変わりな
いくらい簡単です。

sethdlc の man ページには詳細な情報が掲載されています。しかしながら、こ
こで一つ二つ例を挙げることで設定の重要なポイントが明瞭になると思います
。以下の例では

┌──────────────────────────────────┐
│# insmod hdlcdrv                                                    │
│# insmod soundmodem                                                 │
└──────────────────────────────────┘

により既に Soundmodem モジュールをロードしてあるか、またはカーネルのコ
ンパイル時に組み込んであるものとします。

上の設定例で示したような Windows Sound System カードをデバイス sm0 の
G3RUH 互換 9600bps モードで動作させて、I/O アドレス 0x378 のパラレルポ
ートを PTT スイッチとして使うように設定するには

┌───────────────────────────────────┐
│# sethdlc -p -i sm0 mode wss:fsk9600 io 0x534 irq 5 dma 3 pario 0x378 │
└───────────────────────────────────┘

上の設定例で示したような SoundBlaster カードをデバイス sm1 の 4800bps
HAPN モードで動作させて、I/O アドレス 0x2f8 のシリアルポートを PTT スイ
ッチとして使うように設定するには

┌────────────────────────────────────┐
│# sethdlc -p -i sm1 mode sbc:hapn4800 io 0x388 irq 10 dma 1 serio 0x2f8 │
└────────────────────────────────────┘

上の設定例で示したような SoundBlaster カードをデバイス sm1 の 1200bps
AFSK モードで動作させて、I/O アドレス 0x2f8 のシリアルポートを PTT スイ
ッチとして使うように設定するには

┌────────────────────────────────────┐
│# sethdlc -p -i sm1 mode sbc:afsk1200 io 0x388 irq 10 dma 1 serio 0x2f8 │
└────────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5.3. AX.25 チャンネルアクセスパラメーターの設定

AX.25 チャンネルアクセスパラメーターとは KISS デバイスで言うところの
ppersist, txdelay, slottime といったパラメーターのことです。この設定に
も sethdlc ユーティリティを使います。

繰返しになりますが、sethdlc の man ページは最も充実した情報源です。ただ
以下に別な例を示すのも、害にはならないでしょう。

デバイス sm0 を TxDelay 100 ミリ秒、SlotTime 50 ミリ秒、 PPersist 128、
全二重モードに設定するには

┌──────────────────────────────────┐
│# sethdlc -i sm0 -a txd 100 slot 50 ppersist 128 full               │
└──────────────────────────────────┘

時間を表す値は単位がミリ秒であることに注意。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5.4. オーディオレベルの設定とドライバーの調整

どんな無線用のモデムでも、動作させるためにはオーディオレベルを適切に設
定することが非常に重要です。このことは Soundmodem にも当てはまります。
Thomas はこの作業が簡単になるようユーティリティプログラムをいくつか書い
ています。 smdiag と smmixer と呼ばれるものです。

smdiag
   
    このプログラムには 2 種類の表示モードがあります。一つはオシロスコー
    プのような表示で、もう一つはアイパターンのような表示です。
   
smmixer
   
    このプログラムは送受信のオーディオレベルを調節するためのものです。
   
デバイス sm0 の Soundmodem 用に smdiag ユーティリティをアイパターンモー
ドで起動するには

┌──────────────────────────────────┐
│# smdiag -i sm0 -e                                                  │
└──────────────────────────────────┘

デバイス sm0 の Soundmodem 用に smmixer ユーティリティを起動するには

┌──────────────────────────────────┐
│# smmixer -i sm0                                                    │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.5.5. カーネル AX.25 機能が Soundmodem デバイスを使うように設定する

Soundmodem ドライバーはカーネルの AX.25 コードが使うことのできる標準的
なネットワークデバイスを作成します。設定は PI カードや PacketTwin カー
ドの場合とほとんど同じです。

まず最初にデバイスに AX.25 でのコールサインを設定します。これには 
ifconfig ユーティリティを使います。

┌──────────────────────────────────┐
│# /sbin/ifconfig sm0 hw ax25 VK2KTJ-15 up                           │
└──────────────────────────────────┘

上の例では Soundmodem デバイス sm0 に AX.25 でのコールサイン VK2KTJ-15
を割当てています。あるいは axparms コマンドを用いてもコールサインの設定
はできますが、デバイスを動作状態にするためにはやはり ifconfig コマンド
を使う必要があります。

┌──────────────────────────────────┐
│# ifconfig sm0 up                                                   │
│# axparms -setcall sm0 vk2ktj-15                                    │
└──────────────────────────────────┘

次に /etc/ax25/axports に他のデバイス用に設定したのと同様な項目を作りま
す。 axports ファイルの項目は、そのネットワークデバイスに設定したコール
サインによって関連づけられます。つまり Soundmodem デバイスに設定したコ
ールサインと同じコールサインの axports ファイルの項目が Soundmodem デバ
イスを参照するときに使われます。 

以上で他の AX.25 デバイスのときと同じように新しいデバイスを扱うことがで
きます。 TCP/IP の設定をしたり、ax25d が動くようにしたり、NET/ROM や
ROSE の設定をしたり、後はあなたのお望みのままです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.6. ユーザーモード版 Soundmodem デバイスを作る

カーネルコンパイル時のオプション: ありません 

Thomas Sailer はカーネルのサウンドドライバーを使ってユーザーモードで動
作する Soundmodem ドライバーを作りました。 Linux がサポートするサウンド
カードならどんなものでも動作するはずです。

このドライバーはユーザーモードのプログラム soundmodem というかたちで実
装されています。グラフィックインターフェイスを使った soundmodemconfig
プログラムで Soundmodem ドライバーの設定やテストができます。カーネルの
サウンド機能だけでなくカーネル AX.25 の mkiss ドライバーも必要となりま
す。

ソフトウェアとドキュメントは http://www.baycom.org/~tom/ham/soundmodem
 からダウンロードできます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.7. YAM デバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│Amateur Radio support  --->                                         │
│    [*] Amateur Radio support                                       │
│    --- Packet Radio protocols                                      │
│    <*>   Amateur Radio AX.25 Level 2 protocol                      │
│    ...                                                             │
│    AX.25 network device drivers  --->                              │
│    --- AX.25 network device drivers                                │
│    ...                                                             │
│     YAM driver for AX.25                                           │
│    ...                                                             │
└──────────────────────────────────┘

YAM とは Yet Another Modem (訳注:「またぞろモデム」とかいう意味) の略
で Nico Palermo が設計した 9600 ボーモデムです。 Linux ドライバーについ
ての情報は http://www.teaser.fr/~frible/yam.html に、このモデムについて
の一般的な情報は http://www.microlet.com/yam/ にあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.8. PI カードデバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│General setup  --->                                                 │
│    [*] Networking support                                          │
│Network device support  --->                                        │
│    [*] Network device support                                      │
│    ...                                                             │
│    [*] Radio network interfaces                                    │
│    [*] Ottawa PI and PI/2 support for AX.25                        │
└──────────────────────────────────┘
 

PI カードのデバイスドライバーは「pi[0-9][ab]」という名前のデバイスを作
成します。最初に検出された PI カードが「pi0」に、次に検出されたカードが
「pi1」に、という具合です。「a」と「b」は PI カードの二つの物理インター
フェイスに対応しています。 PI カードドライバーがカーネルに組み込んであ
り、かつカードが正しく検出されたなら、以下のコマンドでネットワークデバ
イスの設定が可能です。

┌──────────────────────────────────┐
│# /sbin/ifconfig pi0a hw ax25 VK2KTJ-15 up                          │
└──────────────────────────────────┘

この例では一番目に検出された PI カードの第一ポートにコールサイン
VK2KTJ-15 を設定し動作状態にしています。デバイスを使えるようにするには
/etc/ax25/axports に対応する SSID 付きコールサインの項目を書き込むだけ
です。

PI カードのドライバーは David Perry  によ
って書かれました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.9. PacketTwin デバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│General setup  --->                                                 │
│    [*] Networking support                                          │
│Network device support  --->                                        │
│    [*] Network device support                                      │
│    ...                                                             │
│    [*] Radio network interfaces                                    │
│    [*] Gracilis PackeTwin support for AX.25                        │
└──────────────────────────────────┘
 

PacketTwin カードのデバイスドライバーは「pt[0-9][ab]」という名前のデバ
イスを作成します。最初に検出された PacketTwin カードが「pt0」に、次に検
出されたカードが「pt1」に、という具合です。「a」と「b」は PacketTwin カ
ードの二つの物理インターフェイスに対応しています。 PacketTwin カードド
ライバーがカーネルに組み込んであり、かつカードが正しく検出されたなら、
以下のコマンドでネットワークデバイスの設定が可能です。

┌──────────────────────────────────┐
│# /sbin/ifconfig pt0a hw ax25 VK2KTJ-15 up                          │
└──────────────────────────────────┘

この例では一番目に検出された PacketTwin カードの第一ポートにコールサイ
ン VK2KTJ-15 を設定し動作状態にしています。デバイスを使えるようにするに
は /etc/ax25/axports に対応する SSID 付きコールサインの項目を書き込むだ
けです。

PacketTwin カードのドライバーは Craig Small  VK2XLZ によって書かれました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10. 汎用 SCC デバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│General setup  --->                                                 │
│    [*] Networking support                                          │
│Network device support  --->                                        │
│    [*] Network device support                                      │
│    ...                                                             │
│    [*] Radio network interfaces                                    │
│    [*] Z8530 SCC KISS emulation driver for AX.25                   │
└──────────────────────────────────┘
 

Joerg Reuter  DL1BKE は Z8530 SCC を使った
カードのサポートを開発しました。彼のドライバーはいろんなタイプのカード
をサポートしています。また KISS TNC のように見せるインターフェイスを持
っていますので、あたかも KISS TNC を扱っているかのように SCC カードを扱
うことができます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.1. 設定用ツールパッケージの入手とコンパイル

ドライバー自体は通常のカーネルの配布物に含まれていますが、Joerg は最新
バージョンのドライバーを、その設定時に必要になるツール集と一緒に配布し
ています。

この設定用ツールパッケージは Joerg's web page , ftp://db0bm.automation.fh-aachen.de/incoming/dl1bke, ftp://
insl1.etec.uni-karlsruhe.de/pub/hamradio/linux/z8530, ftp://
ftp.ucsd.edu/hamradio/packet/tcpip/linux, ftp://ftp.ucsd.edu/hamradio/
packet/tcpip/incoming などで手にいれることができます。

複数のバージョンに分かれていますが、あなたのカーネルに合った方のバージ
ョンを選んでください。 z8530drv-2.4a.dl1bke.tar.gz は 2.0.* カーネル用
で、 z8530drv-utils-3.0.tar.gz は 2.1.6 以降のカーネル用です。

以下のコマンドはカーネル 2.0.30 にパッケージをインストールする際、私が
使ったものです。

┌────────────────────────────────────┐
│# cd /usr/src                                                           │
│# gzip -dc z8530drv-2.4a.dl1bke.tar.gz | tar xvpofz -                   │
│# cd z8530drv                                                           │
│# make clean                                                            │
│# make dep                                                              │
│# make module         # ドライバーをモジュールとしてコンパイルする場合  │
│# make for_kernel     # ドライバーをカーネルに組込む場合                │
│# make install                                                          │
└────────────────────────────────────┘

以上の作業が終れば /sbin ディレクトリに三つのプログラムが新たにインスト
ールされているでしょう。 gencfg, sccinit, sccstat です。これらのプログ
ラムを用いてドライバーの設定を行うのです。

/dev にも scc0-scc7 という名前のデバイスファイルが新たに作成されている
でしょう。これが後で「KISS」デバイスとして使うことになるものです。

「ドライバーをカーネルに組込む場合」を選択したなら、カーネルを再度コン
パイルする必要があります。 z8530 ドライバーを組込むには `make config'
のところで `Z8530 SCC kiss emulation driver for AX.25' という質問に「Y
」と答えなければなりません。

「ドライバーをモジュールとしてコンパイルする場合」を選択したなら、 /lib
/modules ディレクトリ以下の適当な場所に新しいモジュール scc.o ができて
いることでしょう。カーネルを再度コンパイルする必要はありません。 (訳注
:モジュール scc.o がなければ、カーネルを再度コンパイルする必要がありま
す。`make config' のところで `Z8530 SCC kiss emulation driver for
AX.25' という質問に「M」と答えてください。) モジュールの設定を始める前
に insmod コマンドでモジュールをロードしておくのを忘れないように。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.2. ドライバーの設定

z8530 SCC ドライバーはできる限り多くの種類のカードをサポートするために
、できる限り柔軟な設計となっています。この柔軟さのために設定は多少厄介
です。

パッケージにはより広い範囲について説明された文書が付属していますので、
何か問題があったときはこの文書を読むとよいでしょう。より突っ込んだ内容
など、とくに doc/scc_eng.doc や doc/scc_ger.doc は目を通すとよいでしょ
う。私は重要なポイントを分かりやすく言い替えているだけなのですが、より
低いレベルのあれこれについては結果的に説明していない点も結構あります。

主要な設定ファイルは /etc/z8530drv.conf という名前で、sccinit プログラ
ムによって読まれます。このファイルは主に二つの部分に分かれています。ま
ずハードウェアパラメーターの設定部分、次にチャンネルの設定部分という具
合です。設定が終れば、

┌──────────────────────────────────┐
│# sccinit                                                           │
└──────────────────────────────────┘

というコマンドを、ネットワークやドライバーを初期化する rc ファイルに追
加するだけです。そうすれば設定ファイルの内容通りにドライバーは初期化さ
れるでしょう。初期化はドライバーを使う前にする必要があります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.2.1. ハードウェアパラメーターの設定

最初のハードウェアパラメータの設定部分はさらにいくつかの部分に分かれて
います。各部分はそれぞれ z8530 チップ一つに対応しており、引数を伴ったキ
ーワードのリストです。このファイルにはデフォルトで 4 個までの SCC チッ
プを指定できます。さらに多くのチップを指定したければ scc.c の #define
MAXSCC 4 というところの値を増やしてください。

指定できるキーワードと引数は以下の通りです。

chip
   
    キーワード chip は各チップを指定する部分の区切りとして使われる。引
    数には何を指定しても構わない。無視される。
   
data_a
   
    このキーワードでは z8530 のチャンネル「A」のデータポートアドレスを
    指定する。引数は 16 進数。例:0x300
   
ctrl_a
   
    このキーワードでは z8530 のチャンネル「A」のコントロールポートアド
    レスを指定する。引数は 16 進数。例:0x304
   
data_b
   
    このキーワードでは z8530 のチャンネル「B」のデータポートアドレスを
    指定する。引数は 16 進数。例:0x301
   
ctrl_b
   
    このキーワードでは z8530 のチャンネル「B」のコントロールポートアド
    レスを指定する。引数は 16 進数。例:0x305
   
irq
   
    このキーワードでは z8530 SCC が使う IRQ を指定する。引数は 10 進数
    。例:5
   
pclock
   
    このキーワードでは z8530 の PCLK ピンに与える周波数を指定する。引数
    は単位が Hz の整数値。このキーワードが指定されなかったときのデフォ
    ルト値は 4915200。
   
board
   
    z8530 SCC カードのタイプ。引数は文字列で、指定できるものは以下の通
    り。
   
    PA0HZP
       
        PA0HZP SCC カード
       
    EAGLE
       
        Eagle カード
       
    PC100
       
        DRSI PC100 SCC カード
       
    PRIMUS
       
        PRIMUS-PC (DG9BL) カード
       
    BAYCOM
       
        BayCom (U)SCC カード
       
escc
   
    このキーワードは 8580, 85180, 85280 といった拡張 SCC チップ (ESCC)
    の使用を宣言するのに使う。オプション。引数は文字列で、指定できるの
    は「yes」または「no」。デフォルトは「no」である。
   
vector
   
    このキーワードは PA0HZP カードの vector latch (別名intack port) (訳
    注:複数の SCC カードをデイジーチェーンのようにつなぐ仕組みのこと)
    のアドレスを指定するのに使う。オプション。全チップに対して vector
    latch は一つだけ存在する。デフォルトは 0。
   
special
   
    このキーワードは何種類かのカードで特殊な機能のレジスターのアドレス
    を指定するのに使う。オプション。デフォルトは 0。
   
option
   
    このキーワードはオプション。デフォルトは 0。 (訳注:先の special で
    指定したレジスターに書き込む値を指定する)
   
代表的なカードについての設定の例は以下の通り。

BayCom USCC
   
     
    ┌────────────────────────────┐
    │chip    1                                               │
    │data_a  0x300                                           │
    │ctrl_a  0x304                                           │
    │data_b  0x301                                           │
    │ctrl_b  0x305                                           │
    │irq     5                                               │
    │board   BAYCOM                                          │
    │#                                                       │
    │# SCC chip 2                                            │
    │#                                                       │
    │chip    2                                               │
    │data_a  0x302                                           │
    │ctrl_a  0x306                                           │
    │data_b  0x303                                           │
    │ctrl_b  0x307                                           │
    │board   BAYCOM                                          │
    └────────────────────────────┘
     
   
PA0HZP SCC card
   
     
    ┌────────────────────────────┐
    │chip 1                                                  │
    │data_a 0x153                                            │
    │data_b 0x151                                            │
    │ctrl_a 0x152                                            │
    │ctrl_b 0x150                                            │
    │irq 9                                                   │
    │pclock 4915200                                          │
    │board PA0HZP                                            │
    │vector 0x168                                            │
    │escc no                                                 │
    │#                                                       │
    │#                                                       │
    │#                                                       │
    │chip 2                                                  │
    │data_a 0x157                                            │
    │data_b 0x155                                            │
    │ctrl_a 0x156                                            │
    │ctrl_b 0x154                                            │
    │irq 9                                                   │
    │pclock 4915200                                          │
    │board PA0HZP                                            │
    │vector 0x168                                            │
    │escc no                                                 │
    └────────────────────────────┘
     
   
DRSI SCC card
   
     
    ┌────────────────────────────┐
    │chip 1                                                  │
    │data_a 0x303                                            │
    │data_b 0x301                                            │
    │ctrl_a 0x302                                            │
    │ctrl_b 0x300                                            │
    │irq 7                                                   │
    │pclock 4915200                                          │
    │board DRSI                                              │
    │escc no                                                 │
    └────────────────────────────┘
     
   
PE1CHL の NOS で既にうまく動いている設定ファイルがあれば、 gencfg コマ
ンドで NOS ドライバーのコマンドを z8530 ドライバーの設定ファイルに変換
することができます。

gencfg の使い方は NET/NOS のドライバーを起動する際のパラメーターと同じ
パラメーターで gencfg を起動するだけです。例えば、

┌──────────────────────────────────┐
│# gencfg 2 0x150 4 2 0 1 0x168 9 4915200                            │
└──────────────────────────────────┘

この例では OptoSCC カード (訳注:PA0HZP) 用の設定ファイルの雛型が作られ
ます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.3. チャンネルの設定

チャンネルの設定部分では設定しているポートに関する全てのパラメーターを
指定します。この設定部分もまたさらにいくつかの部分に分かれています。各
部分はそれぞれ論理ポート一つに対応しています。各 z8530 SCC は 2 ポート
をサポートしますので、ハードウェアパラメーター部分はその 2 ポートに対応
して設定部分が二つあることになります。

キーワードと引数はやはり /etc/z8530drv.conf に記述されます。この部分は
ハードウェアパラメーターの後ろに来なければなりません。

この部分ではキーワードの順番がとても重要です。もっともここで説明する順
番通りにすれば、ちゃんと動作するでしょう。キーワードと引数は以下の通り
です。

   
    Note: (訳注) 以下の記述はかなり不正確な部分があります。カーネル付属
    文書 z8530drv.txt の方を参照してください。
   
device
   
    このキーワードはポートについての定義の一番最初になければならない。
    以下の設定内容を適用するデバイスファイルの名前を指定する。例: /dev
    /scc0
   
speed
   
    このキーワードはインターフェイスのスピードをビット / 秒 (bps) の単
    位で指定する。引数は整数。例: 1200
   
clock
   
    このキーワードはデータ用のクロックをどこから供給するか指定する。指
    定できる値は、
   
    dpll
       
        通常の半二重通信
       
    external
       
        モデムが自分で送受信クロックを供給する
       
    divider
       
        全二重通信用ディバイダーを使う (ただし搭載されているとき)
       
mode
   
    このキーワードは使用するデータコーディングを指定する。指定できる値
    は「nrzi」または「nrz」。
   
rxbuffers
   
    このキーワードは受信バッファーに割当てるメモリーの大きさを指定する
    。引数は整数。例: 8 (訳注:カーネル 2.2 以降のバージョンではこのキ
    ーワードは廃止されている)
   
txbuffers
   
    このキーワードは送信バッファーに割当てるメモリーの大きさを指定する
    。引数は整数。例: 8 (訳注:カーネル2.2以降のバージョンではこのキー
    ワードは廃止されている)
   
bufsize
   
    このキーワードは送受信バッファーのサイズを指定する。引数はバイト単
    位でフレームの全長に対応する。したがって AX.25 ヘッダーの長さも考慮
    にいれること。データフィールドの長さだけではない。このキーワードは
    オプションでデフォルト値は 384。
   
txdelay
   
    仮想 KISS デバイスの txdelay タイマーの値。引数は整数で単位はミリ秒
    。(訳注:正しくは 10 ミリ秒)
   
persist
   
    仮想 KISS デバイスの persist の値。引数は整数。
   
slot
   
    仮想 KISS デバイスの slottime タイマーの値。引数は整数で単位はミリ
    秒。(訳注:正しくは 10 ミリ秒)
   
tail
   
    仮想 KISS デバイスの txtail タイマーの値。引数は整数で単位はミリ秒
    。(訳注:正しくは 10 ミリ秒)
   
fulldup
   
    仮想 KISS デバイスの全二重/半二重切替え用フラッグ。引数は整数で、1
    のとき全二重、0 のとき半二重。
   
wait
   
    仮想 KISS デバイスの waittime タイマーの値。引数は整数で単位はミリ
    秒。(訳注:正しくは 10 ミリ秒)
   
min
   
    仮想 KISS デバイスの mintime タイマーの値。引数は整数で単位は秒。
   
maxkey
   
    仮想 KISS デバイスの maxkeyup タイマーの値。引数は整数で単位は秒。
   
idle
   
    仮想 KISS デバイスの idletime タイマーの値。引数は整数で単位は秒。
   
maxdef
   
    仮想 KISS デバイスの maxdefer タイマーの値。引数は整数。 (訳注:単
    位は秒)
   
group
   
    仮想 KISS デバイスのグループを指定。引数は整数。
   
txoff
   
    仮想 KISS デバイスの txoff フラッグ。引数は整数で単位はミリ秒。 (訳
    注:フラッグなので単位はない)
   
softdcd
   
    仮想 KISS デバイスの softdcd フラッグ。引数は整数。
   
slip
   
    仮想 KISS デバイスの slip フラッグ。引数は整数。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.4. ドライバーの使用方法

ドライバーを使うにはデバイス /dev/scc* を KISS TNC のつながったシリアル
tty デバイスのように扱えばよいだけです。例えば SCC カードを使った Linux
カーネルのネットワークを設定するには、こんな感じです。

┌──────────────────────────────────┐
│# kissattach -s 4800 /dev/scc0 VK2KTJ                               │
└──────────────────────────────────┘

まったく同様に NOS を使ってアタッチすることもできます。例えば JNOS から
なら、こんな感じです。

┌──────────────────────────────────┐
│attach asy scc0 0 ax25 scc0 256 256 4800                            │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.10.5. sccstat と sccparam

トラブル診断は sccstat が手助けになります。このプログラムは SCC デバイ
スの現在の設定状況を表示します。使い方は、

┌──────────────────────────────────┐
│# sccstat /dev/scc0                                                 │
└──────────────────────────────────┘

とすると、SCC ポート /dev/scc0 の設定と健康状態にかんする膨大な情報が表
示されます。

sccparam コマンドを使えば起動後に設定を変更したりできます。使い方は NOS
の param コマンドにとてもよく似ていて、例えばデバイスの txtail の設定を
100 ミリ秒にしたいなら、こんな感じです。

┌──────────────────────────────────┐
│# sccparam /dev/scc0 txtail 0x8                                     │
└──────────────────────────────────┘

    Note: (訳注) sccparam コマンドはパラメーターに 10 進数も指定できま
    す。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.11. BPQ イーサネットデバイスを作る

カーネルコンパイル時のオプション:
┌──────────────────────────────────┐
│General setup  --->                                                 │
│    [*] Networking support                                          │
│Network device support  --->                                        │
│    [*] Network device support                                      │
│    ...                                                             │
│    [*] Radio network interfaces                                    │
│    [*] BPQ Ethernet driver for AX.25                               │
└──────────────────────────────────┘

Linux には BPQ イーサネット互換の機能があります。この機能を使えばイーサ
ネット LAN を通じて他の LAN 上の BPQ を動作させているマシンと AX.25 プ
ロトコルのやりとりができるようになります。

BPQ ネットワークデバイスは bpq[0-9] という名前になります。デバイス bpq0
はデバイス eth0 関連づけられ、デバイス bpq1 はデバイス eth1 に関連づけ
られ、といった具合です。

設定は何も厄介なことはありません。まずは通常のイーサネットデバイスの設
定をしなければなりません。つまり、あなたのイーサネットカードをサポート
するようカーネルを再構築して、さらにイーサネットがちゃんと動作している
ことを確かめてください。設定の仕方についての詳しい情報は Ethernet-HOWTO
 (訳注:日本語訳
) をご覧ください。

BPQ 機能の設定は、このイーサネットデバイスを AX.25 用のコールサインで設
定する必要があります。以下のコマンドでうまくいくでしょう。

┌──────────────────────────────────┐
│# /sbin/ifconfig bpq0 hw ax25 vk2ktj-14 up                          │
└──────────────────────────────────┘

繰り返しますが、ここで指定するコールサインは /etc/ax25/axports の中でそ
のポートに割当てようとする項目のそれと一致していなければなりません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.1.12. BPQ Node から Linux AX.25 機能に通信ができるように設定する

BPQ イーサネットは通常マルチキャストアドレスを使用しますが、Linux では
違います。 Linux での実装は代わりに通常のイーサネットブロードキャストア
ドレスを使います。そのため BPQ ODI ドライバー用の NET.CFG ファイルは以
下のように書換える必要があるでしょう。

┌────────────────────────────────────┐
│LINK SUPPORT                                                            │
│                                                                        │
│        MAX STACKS 1                                                    │
│        MAX BOARDS 1                                                    │
│                                                                        │
│LINK DRIVER E2000                    ; または使うカードに合う MLID      │
│                                                                        │
│        INT 10                       ;                                  │
│        PORT 300                     ; 使うカードに合わせて             │
│                                                                        │
│        FRAME ETHERNET_II                                               │
│                                                                        │
│        PROTOCOL BPQ 8FF ETHERNET_II ; BPQ に必要 PID は変更可          │
│                                                                        │
│BPQPARAMS                            ; オプション デフォルトのターゲッ  │
│                                     ; トアドレスを上書きしたい時のみ   │
│                                                                        │
│        ETH_ADDR  FF:FF:FF:FF:FF:FF  ; ターゲットアドレス               │
└────────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.2. /etc/ax25/axports ファイルを作る

/etc/ax25/axports はテキストエディターなんかで簡単に書けるファイルです
。この /etc/ax25/axports ファイルの書式は以下のようになります。

┌──────────────────────────────────┐
│ポート名  コールサイン  ボーレート  パケット長  ウィンドウ  備考    │
└──────────────────────────────────┘

ここで、

ポート名
   
    ポートを参照するときの名前
   
コールサイン
   
    ポートに割当てる AX.25 用のコールサイン
   
ボーレート
   
    TNC と接続するスピード (訳注:無線のボーレートではない)
   
パケット長
   
    AX.25 の接続状態で使う最大のパケット長 (PACLEN)
   
ウィンドウ
   
    AX.25 のウィンドウ (K) パラメーター、 TNC で言うところの MAXFRAME
    に相当
   
備考
   
    ポートの説明を書くところ
   
という意味になります。私の場合はこんな感じです。

┌─────────────────────────────────────┐
│radio    VK2KTJ-15       4800        256     2       4800bps 144.800 MHz  │
│ether    VK2KTJ-14       10000000    256     2       BPQ/ethernet device  │
└─────────────────────────────────────┘

AX.25 の各ポートにはそれぞれ SSID 付きコールサインを重複しないよう割当
てなければなりません。使いたい AX.25 のそれぞれのデバイスについて一項目
ずつ作ります。ここで言うデバイスとは KISS, Baycom, SCC, PI, PT,
Soundmodem などです。それぞれの項目が AX.25 ネットワークデバイスを表し
ます。このファイルの各項目は SSID 付きコールサインによってネットワーク
デバイスと関連づけられます。というのが SSID 付きコールサインを重複しな
いように付ける理由なのです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

6.3. AX.25 ルーティングの設定

ある特定のホスト向けにデフォルトのデジピーターの経路を設定したいとかあ
りますよね。通常の AX.25 の接続でも IP による接続でも、そうしておくと便
利です。 axparms コマンドを使えばこれは可能です。 man ページを見てもら
えば十分な情報が載っているのですが、まぁ簡単な例を示せばこんな感じです
。

┌──────────────────────────────────┐
│# /usr/sbin/axparms -route add radio VK2XLZ VK2SUT                  │
└──────────────────────────────────┘

このコマンドは radio という名前の AX.25 ポートに VK2XLZ は VK2SUT を経
由するというデジピーター用の項目を設定します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

7. AX.25 インターフェイスを TCP/IP 用に設定する

AX.25 ポートを TCP/IP を通すように設定するのはとても簡単です。 KISS イ
ンターフェイスについては IP アドレスを設定するのに二通りの方法がありま
す。 kissattach コマンドには IP アドレスを指定するオプションがあります
。(訳注:ただしこの方法は現在ではあまりお勧めできません) ifconfig を使
う方法はもっと一般的でどんなタイプのインターフェイスでも使えます。

以前の KISS の説明で使った例を IP アドレスが 44.136.8.5、MTU が 512 と
なるように改造を加えると、

┌──────────────────────────────────┐
│# /usr/sbin/kissattach -i 44.136.8.5 -m 512 /dev/ttyS0 radio        │
│# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 ax0         │
│# /sbin/route add default ax0                                       │
└──────────────────────────────────┘

というようになります。必要に応じて他のパラメーターを設定するために 
ifconfig も使うことになります。

    Note: (訳注) 繰返しますが、kissatttach で IP アドレスを指定するのは
    お勧めできません。動作するかも知れませんが、kissattach のオプション
    i はいずれ予告なく使用不可能となるかも。
   
KISS 以外のインターフェイスを使うなら IP アドレス、ネットマスクを 
ifconfig プログラムにより設定して、そしてそのポートを経由するルーティン
グ情報を追加します。これは通常の TCP/IP インターフェイスの設定方法と全
く同じです。以下は PI カードデバイスの例ですが、他の AX.25 ネットワーク
デバイスについても同じように設定できるはずです。

┌──────────────────────────────────┐
│# /sbin/ifconfig pi0a 44.136.8.5 netmask 255.255.255.0 up           │
│# /sbin/ifconfig pi0a broadcast 44.136.8.255 mtu 512                │
│# /sbin/route add -net 44.136.8.0 netmask 255.255.255.0 pi0a        │
│# /sbin/route add default pi0a                                      │
└──────────────────────────────────┘

もしあなたが NOS やその類、あるいは TCP/IP の設定をしたことがあるなら、
上に挙げた例は慣れ親しんだ設定の典型例であることでしょう。他のネットワ
ークデバイスを設定するならデフォルトルートは必要ないかも知れないことに
ご注意。

さてテストするには、ping してみるか、ローカルネットワークのホストに
telnet してみます。

┌──────────────────────────────────┐
│# ping -i 5 44.136.8.58                                             │
└──────────────────────────────────┘

-i 5 という引数は 5 秒毎に ping を送るようにする指定です。これがなけれ
ばデフォルトの 1 秒毎になります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8. NET/ROM ポートの設定

NET/ROM プロトコルは、あなたがここまでで設定を行なってきた AX.25 ポート
を使用し、その AX.25 プロトコルの上で動作します。 AX.25 インターフェイ
スに NET/ROM ポートを設定するには二つのファイルを編集する必要があります
。一つは NET/ROM インターフェイス自身についてのファイルで、もう一つはど
の AX.25 ポートが NET/ROM を通すようにするか、についてのファイルです。
複数の NET/ROM ポートをそれぞれ別のコールサインとエイリアスで設定するこ
ともできます。それぞれについて同じような手順で設定すれば可能です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8.1. /etc/ax25/nrportsを編集

まずは /etc/ax25/nrports ファイルです。このファイルには /etc/ax25/
axports に AX.25 ポートの設定を記述したのと同じような感じで NET/ROM ポ
ートの設定を記述します。使おうとする全ての NET/ROM デバイスが /etc/ax25
/nrports ファイル中に記述されなければなりません。ですが、通常は一台の
Linux マシンには複数の AX.25 ポートを使用できるようにした NET/ROM デバ
イスを一つ設定するのが普通です。ただし BBS みたいな特別なサービスを別の
NET/ROM エイリアスにしたい、とかいった理由で複数の NET/ROM デバイスを作
成することもあるかも知れません。

ファイルの書式は以下の通りです。

┌──────────────────────────────────┐
│ポート名 コールサイン エイリアス パケット長 説明                    │
└──────────────────────────────────┘

ここで

ポート名
   
    このポートを参照するときの名称。
   
コールサイン
   
    このポートの NET/ROM トラフィックが使うコールサイン。ノードにアクセ
    スするためユーザーが接続するアドレスとは違うことに注意 (ノードにつ
    いては後ほど説明)。この SSID 付きコールサインは /etc/ax25/axports
    や /etc/ax25/nrports の他のポートで使われているものと重複してはなら
    ない。
   
エイリアス
   
    このポートに割当てる NET/ROM のエイリアス。
   
パケット長
   
    このポートが送信する NET/ROM フレームの最大長。
   
説明
   
    このポートの説明。書式は任意。
   
例を示せばこんな感じです。

┌──────────────────────────────────┐
│netrom  VK2KTJ-9        LINUX   236     Linux Switch Port           │
└──────────────────────────────────┘

この例では NET/ROM ネットワークの他のノード局に「LINUX:VK2KTJ-9」として
認識される NET/ROM ポートを作成します。

このファイルは call を初めとするプログラムによって使われます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8.2. /etc/ax25/nrbroadcast の設定

次は /etc/ax25/nrbroadcast ファイルです。このファイルには複数の項目を記
述できるのですが、通常は NET/ROM トラフィックを流したい AX.25 ポートに
ついて一つだけ項目がある状態だと思います。

このファイルの書式は以下の通りです。

┌──────────────────────────────────┐
│axport min_obs def_qual worst_qual verbose                          │
└──────────────────────────────────┘

axport
   
    /etc/ax25/axports ファイルに記述されたポート名。 /etc/ax25/axports
    の対応する項目が /etc/ax25/nrbroadcast になければ、そのポートは NET
    /ROM のルーティングを行わず、そのポートで受信された NET/ROM ブロー
    ドキャストも無視されることを意味する。
   
min_obs
   
    このポートの最小退行値 (obsolescence value)。(訳注:ルーティング情
    報をブロードキャストするときにテーブルから削除する数のこと)
   
def_qual
   
    このポートのデフォルトクオリティ。
   
worst_qual
   
    このポートのクオリティの最低値。この値以下のルーティング情報は無視
    される。
   
verbose
   
    このポートで NET/ROM の全ルーティング情報をブロードキャストするのか
    、あるいは自分のノードについてだけブロードキャストするのか、を決め
    るフラッグ。
   
例を示すとこんな感じです。

┌──────────────────────────────────┐
│radio    1       200      100         1                             │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8.3. NET/ROM ネットワークデバイスを作る

先の二つのファイルの設定が終われば、AX.25 デバイスのときと同じように
NET/ROM デバイスを作ることができます。 NET/ROM デバイスの場合は 
nrattach コマンドを使います。このコマンドは「nr[0-9]」という名前の NET/
ROM ネットワークデバイスを作るというところ以外は axattach コマンドと全
く同じ動作をします。 (訳注:axattachコマンドは現在では使われていません
。kissattachのようなものと思ってください。) 最初にnrattachコマンドを使
うとデバイス「nr0」が作られ、次に使うとデバイス「nr1」が作られ、といっ
た具合です。上の例で示した NET/ROM ポートをネットワークデバイスとして設
定するにはこんな感じです。

┌──────────────────────────────────┐
│# nrattach netrom                                                   │
└──────────────────────────────────┘

このコマンドは /etc/ax25/nrports ファイルで設定されている netrom という
名前の NET/ROM ポートを、ネットワークデバイス (nr0) として起動するもの
です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8.4. NET/ROM デーモンの起動

Linux カーネルは NET/ROM プロトコルの全体やスイッチングの仕事をしますが
、カーネルが面倒を見てくれない機能も一部あります。 NET/ROM デーモンは
NET/ROM ルーティングテーブルの管理とルーティング情報のブロードキャスト
を行います。 NET/ROM デーモンの起動は以下の通りです。

┌──────────────────────────────────┐
│# /usr/sbin/netromd -i                                              │
└──────────────────────────────────┘

すぐに /proc/net/nr_neigh ファイルが NET/ROM 隣接局の情報で埋まっていく
のが分かることでしょう。

システムの再起動時に自動的に起動するよう rc ファイルに /usr/sbin/
netromd コマンドの行を追加しておきましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

8.5. NET/ROM ルーティングの設定

特定のホストに対する NET/ROM の経路を静的に設定したいこともあるでしょう
。 nrparms コマンドを使えば可能です。くどいですが、man ページには完璧な
説明が載っています。ですが、まぁ簡単な例を示すとすればこんな感じでしょ
うか。

┌──────────────────────────────────┐
│# /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9  │
└──────────────────────────────────┘

このコマンドでは #MINTO:VK2XLZ-10 への NET/ROM の経路を「radio」という
名前の AX.25 ポートで隣接する VK2SUT-9 に設定します。

nrparms コマンドを使って新たな隣接局を手動で設定することも可能です。例
えば、

┌──────────────────────────────────┐
│# /usr/sbin/nrparms -routes radio VK2SUT-9 + 120                    │
└──────────────────────────────────┘

このコマンドでは VK2SUT-9 をクオリティ 120 の隣接局として登録します。こ
のような項目は自動的に変更されたり削除されたりすることはありません。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

9. NET/ROM インターフェイスの TCP/IP 用設定

NET/ROM インターフェイスを TCP/IP 用に設定することは AX.25 インターフェ
イスを TCP/IP 用に設定することと全く同じことです。

ここでもやはり nrattach コマンドを使って IP アドレスと MTU を指定するか
、あるいは ifconfig コマンドと route コマンドを使うか、のいずれかの方法
があります。ただしルーティングを行いたい相手ホストの情報を arp エントリ
ーに手動で追加する必要があります。これはある IP のホストに接続する際に
、どの NET/ROM アドレスを使うべきかを知るための仕組みがないためなのです
。

さて、IP アドレス 44.136.8.5 で、MTU 512、その他 /etc/ax25/nrports ファ
イルの netrom という項目で設定されている NET/ROM ポートのデバイス nr0
を作成するには、

┌──────────────────────────────────┐
│# /usr/sbin/nrattach -i 44.136.8.5 -m 512 netrom                    │
│# route add 44.136.8.5 nr0                                          │
└──────────────────────────────────┘

とするか、または以下のように手動で設定することも可能です。

┌──────────────────────────────────┐
│# /usr/sbin/nrattach netrom                                         │
│# ifconfig nr0 44.136.8.5 netmask 255.255.255.0 hw netrom VK2KTJ-9  │
│# route add 44.136.8.5 nr0                                          │
└──────────────────────────────────┘

続いて、NET/ROM 経由で接続したい各 IP ホストについてルーティング情報と
arp エントリーを設定する必要があります。 IP アドレス 44.136.80.4 である
NET/ROM アドレス BBS:VK3BBS に対して VK2SUT-0 というコールサインの NET/
ROM 隣接局を経由して接続するには以下のようにします。

┌──────────────────────────────────┐
│# route add 44.136.80.4 nr0                                         │
│# arp -t netrom -s 44.136.80.4 vk2sut-0                             │
│# nrparms -nodes vk3bbs + BBS 120 6 sl0 vk2sut-0                    │
└──────────────────────────────────┘

nrparms コマンドの「120」や「6」といった引数はそれぞれ NET/ROM のそのル
ーティングに対するクオリティや退行値を意味します。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

10. ROSE ポートの設定

ROSE パケット層プロトコルは X.25 規格の第 3 層に似ています。カーネルの
ROSE 機能は FPAC Rose 実装  を
改変したバージョンになっています。

ROSE パケット層プロトコルは、あなたがここまでで設定を行ってきた AX.25
ポートを使用し、その AX.25 プロトコルの上で動作します。 ROSE ポートを設
定するには使用したいポートについての設定ファイルを編集する必要がありま
す。必要であれば複数の ROSE ポートを設定することもできます。それぞれに
ついて同じような手順で設定すればよいのです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

10.1. /etc/ax25/rsports の設定

ROSE インターフェイスの設定を行うファイルは /etc/ax25/rsportsです。この
ファイルには AX.25 ポートについて /etc/ax25/axports ファイルに記述する
のと殆ど同じ方法で ROSE ポートについての記述を行います。

このファイルの書式は以下の通りです。

┌──────────────────────────────────┐
│ポート名 アドレス 説明                                              │
└──────────────────────────────────┘

ここで

ポート名
   
    このポートを参照するときの名称。
   
アドレス
   
    このポートに割当てる 10 桁の ROSE アドレス。
   
説明
   
    このポートについての説明。書式は任意。
   
例を示せばこんな感じです。

┌──────────────────────────────────┐
│rose  5050294760  Rose Port                                         │
└──────────────────────────────────┘

特に指定しない限り、ROSE は各 AX.25 ポートに割当てられたデフォルトの
SSID 付きコールサインを使うことに注意してください。

違う SSID 付きコールサインを ROSE で使うようにするには、次のように 
rsparms コマンドを使います。

┌──────────────────────────────────┐
│# /usr/sbin/rsparms -call VK2KTJ-10                                 │
└──────────────────────────────────┘

この例では設定されている全ての AX.25 ポートにおける ROSE の呼出に対して
Linux が VK2KTJ-10 という SSID 付きコールサインを待受けおよび使用するよ
うにしています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

10.2. ROSE ネットワークデバイスを作る

/etc/ax25/rsports ファイルの作成が終われば、AX.25 デバイスのときと同じ
ように ROSE デバイスを作ることができます。 ROSE デバイスの場合は 
rsattach コマンドを使います。このコマンドは「rose[0-5]」という名前の
ROSE ネットワークデバイスを作成します。最初に rsattach コマンドを使うと
デバイス「rose0」が作られ、次に使うとデバイス「rose1」が作られ、といっ
た具合です。例えば、

┌──────────────────────────────────┐
│# rsattach rose                                                     │
└──────────────────────────────────┘

このコマンドは /etc/ax25/rsports ファイルで設定されている rose という名
前の ROSE ポートを、ネットワークデバイス (rose0) として起動するものです
。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

10.3. ROSE ルーティングの設定

ROSE プロトコルは今のところ静的なルーティングのみサポートしています。 
rsparms ユーティリティを使えば Linux の ROSE プロトコルのルーティングテ
ーブルを設定することができます。

例えば、

┌──────────────────────────────────┐
│# rsparms -nodes add 5050295502 radio vk2xlz                        │
└──────────────────────────────────┘

このコマンドは ROSE ノード 5050295502 への経路を /etc/ax25/axports ファ
イルで「radio」という名前で指定される AX.25 ポートの VK2XLZ というコー
ルサインの隣接局に設定します。

ROSE プロトコルの複数の相手局に対するルーティング情報を一つのエントリー
に記述するためにマスク付のルーティングを指定することもできます。使い方
は以下のような感じで、

┌──────────────────────────────────┐
│# rsparms -nodes add 5050295502/4 radio vk2xlz                      │
└──────────────────────────────────┘

与えられたアドレスの最初の 4 桁にマッチする全てのアドレス (この例の場合
は 5050 で始まるアドレス) であること以外は、一つ前の例と全く同じ動作に
なります。または別の指定の仕方として、

┌──────────────────────────────────┐
│# rsparms -nodes add 5050/4 radio vk2xlz                            │
└──────────────────────────────────┘

こっちの方がちょっと分かりやすいかも知れませんね。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

11. AX.25/NET/ROM/ROSE の呼出

さぁ、ここまでで AX.25, NET/ROM, ROSE 全てのインターフェイスの設定が済
んで動くようになりました。呼出がうまくいくか試してみましょう。

AX.25 ユーティリティのパッケージには「call」というプログラムが含まれて
います。(訳注:call は ax25-apps パッケージに含まれます) このプログラム
は AX.25, NET/ROM, ROSE 用のスクリーン分割型ターミナルプログラムです。

簡単な AX.25 の呼出はこんな感じになります。

┌──────────────────────────────────┐
│/usr/bin/call radio VK2DAY via VK2SUT                               │
└──────────────────────────────────┘

SUNBBS というエイリアスのノードに対する NET/ROM の呼出はこんな感じにな
ります。

┌──────────────────────────────────┐
│/usr/bin/call netrom SUNBBS                                         │
└──────────────────────────────────┘

アドレス 5050882960 の HEARD というノードに対する ROSE の呼出はこんな感
じになります。

┌──────────────────────────────────┐
│/usr/bin/call rose HEARD 5050882960                                 │
└──────────────────────────────────┘

注意:呼出にどのポートを使うのか call に教えてやらなければなりません。
これは設定されているいずれのポートも、その相手ノードに接続させることが
できるかも知れないからです。

call プログラムは AX.25 の呼出を行うためのラインモード型のターミナルプ
ログラムです。「??」で始まる行はコマンド行と解釈します。「??.」コマンド
で接続は終了します。

より詳しい情報は /usr/man ディレクトリにある man ページを参照してくださ
い。 (訳注:マニュアルのある場所はディストリビューションによります。)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

12. パケットの接続要求を受付けるように設定

Linux はパワフルなオペレーティングシステムです。そして同時に設定におい
て多大な柔軟さを持合わせています。この柔軟さのために、あなたがしたいと
思っていることを Linux にさせるには設定に骨を折ることでしょう。 Linux
マシンが AX.25, NET/ROM, ROSE などの接続要求を受付けるように設定すると
したら、まず考えなければならないことが山のようにあります。とりわけ重要
なことは「ユーザーが接続したら、ユーザーに何をさせたいのか?」でしょう
。接続した人にサービスを提供するようなちょっとしたアプリケーションは多
くの人によって開発されています。シンプルなものの例を挙げれば、AX.25 ユ
ーティリティ集に収録されている pms プログラムがあります。ちょっと複雑な
ものの例を挙げれば node プログラムがあります。これも AX.25 ユーティリテ
ィ集に収録されています。あるいはユーザーがシェルアカウントを使えるよう
にログインプロンプトを表示させたいのかも知れません。または特殊なデータ
ベースやゲームのような、あなた自身の作ったプログラムを接続して来た人が
使えるようにしたいのかも知れません。それが何であれ、AX.25 ソフトウェア
には接続要求を受付けたときに起動すべきソフトウェアが何であるかを教えて
おかなければなりません。

ax25d プログラムは UNIX マシンへの TCP/IP 接続要求を受付けるのによく使
われている inetd プログラムに似ています。このプログラムは起動されると待
機しながら接続要求を待受けます。接続要求があるとどのプログラムを起動す
べきかを調べるために、設定ファイルを読みます。そしてそのプログラムへと
接続を渡します。このプログラムが AX.25, NET/ROM, ROSE などの接続を受付
ける標準のツールなので、これからその設定の仕方について説明しましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

12.1. /etc/ax25/ax25d.conf ファイルを作る

このファイルは AX.25, NET/ROM, ROSE などの接続要求を受付ける AX.25 デー
モン ax25d の設定ファイルです。

一見このファイルの中身は呪文のようですが、実際はとてもシンプルであるこ
とに気付くでしょう。ですが、気をつけるべきちょっとした落し穴もあります
。

ax25d.conf ファイルの一般的な書式は以下の通りです。

┌─────────────────────────────────────┐
│# この行はコメント。ax25d プログラムは無視します。                        │
│[ポート名] || <ポート名> || {ポート名}                                    │
│<ピア1>    window T1 T2 T3 idle N2 <モード><コマンド> <コマンド名> <引数> │
│<ピア2>    window T1 T2 T3 idle N2 <モード> <コマンド> <コマンド名> <引数>│
│parameters window T1 T2 T3 idle N2 <モード>                               │
│<ピア3>    window T1 T2 T3 idle N2 <モード> <コマンド> <コマンド名> <引数>│
│   ...                                                                    │
│default    window T1 T2 T3 idle N2 <モード>  <コマ                        │
│ンド> <コマンド名> <引数>                                                 │
└─────────────────────────────────────┘

ここで

#
   
    行の最初にある#はコメント。 ax25d プログラムは完全に無視する。
   
<ポート名>
   
    /etc/ax25/axports, /etc/ax25/nrports, /etc/ax25/rsports ファイルで
    それぞれ指定された AX.25, NET/ROM, ROSE 各ポートの名称。 AX.25 ポー
    トの場合、ポートの名前は [] で囲まれ、 NET/ROM ポートの場合、ポート
    の名前は <> で囲まれ、ROSE ポートの場合、ポートの名前は {} で囲まれ
    る。この項目にはまた別の書き方が存在する。それはポート名の頭に「
    SSID 付きコールサイン via」をつけるもので、これはこのインターフェイ
    スから指定した SSID 付きコールサインへの呼出を受付けることを明示す
    るものである。後の例を見ればより分かりやすいだろう。
   
<ピア>
   
    この設定が適用される相手のコールサイン。 SSID を指定しなければ全て
    の SSID にマッチする。
   
window
   
    この設定での AX.25 の window (K) パラメーター。つまり MAXFRAME パラ
    メーター。
   
T1
   
    フレームの再送信タイマー (T1)。単位は 0.5 秒。
   
T2
   
    AX.25 機能が返事を送信する前に、次のフレームの到着を待つための時間
    。単位は秒。
   
T3
   
    ここで指定された時間、何も通信がなければ、AX.25 機能は接続を切る。
    単位は秒。
   
idle
   
    アイドルタイマー。単位は秒。
   
N2
   
    一回の送信あたり連続して実行する再送信回数。この値を越えた場合、接
    続を切る。
   
<モード>
   
    モードは大まかな接続許可の形態を判別する仕掛けを提供する。それぞれ
    が許可の形態を表す文字を組合わせることで接続の可否を表す。この文字
    列は大文字または小文字のどちらかで、空白を含まない単一のブロックで
    なければならない。
   
    u/U
       
        UTMP。現在はサポートされない。
       
    v/V
       
        コールサインの正しさをチェック。現在はサポートされない。
       
    q/Q
       
        接続をログに書込まない。quiet。
       
    n/N
       
        NET/ROM 隣接ノードを調べる。現在はサポートされない。
       
    d/D
       
        デジピーターを不許可。直接の接続のみ許可する。
       
    l/L
       
        接続を許可しない。lockout。
       
    */0
       
        単なるマーカー。モードは設定されない。
       

   
    接続を受けるために起動されるプログラムのユーザー ID。
   
<コマンド>
   
    起動されるコマンドのフルパス名。引数は指定しない。
   
<コマンド名>
   
    ps コマンドなどで実行中のコマンドとして表示される名前。 (通常は<コ
    マンド>と同じはず。ただしパス情報は含まれていない。)
   
<引数>
   
    <コマンド>の起動時に渡されるコマンドライン引数。以下の変数を使えば
    引数として便利な情報を渡すことができる。
   
    %d
       
        接続要求を受信したポート名。
       
    %U
       
        接続したユーザーの SSID を含まないコールサイン。大文字。
       
    %u
       
        接続したユーザーの SSID を含まないコールサイン。小文字。
       
    %S
       
        接続したユーザーの SSID を含むコールサイン。大文字。
       
    %s
       
        接続したユーザーの SSID を含むコールサイン。小文字。
       
    %P
       
        接続要求を送ってきたリモートノードの SSID を含まないコールサイ
        ン。大文字。
       
    %p
       
        接続要求を送ってきたリモートノードの SSID を含まないコールサイ
        ン。小文字。
       
    %R
       
        接続要求を送ってきたリモートノードの SSID を含むコールサイン。
        大文字。
       
    %r
       
        接続要求を送ってきたリモートノードの SSID を含むコールサイン。
        小文字。
       
接続要求を受け付けたい AX.25, NET/ROM, ROSE それぞれのインターフェイス
について上のような書式で書込む必要があります。

上の例には特別な行が二つあります。一つは「parameters」で始まる行、もう
一つは「default」で始まる行です (え?違うのかって?違うんですよ)。この
二つの行には特別な意味があります。

「default」の行の意味は明らかでしょう。この行は呼出のあったインターフェ
イスでの特別な条件にマッチしない全ての接続要求を拾う役割をします。「
default」がなければ、特別な条件にマッチしない接続要求は全て何の警告もな
く即座に蹴られます。

「parameters」の行はやや分かりにくいです。これこそが以前に私が落し穴と
呼んだものです。ピアを定義している箇所のどの項目でも「デフォルト値を使
う」ことを宣言するために「*」を使うことができます。「parameters」行はそ
れらのデフォルト値を設定するものです。カーネル自身はあなたが「
parameters」行を使って値を指定しなかったときに使われるデフォルトの値を
持っています。ただし、そういったデフォルト値は「parameters」行より下に
ある条件にだけ適用され、上にある条件には適用されないのです。これぞ落し
穴です。各インターフェイスの定義毎に複数の「parameters」行を書いても構
いません。こうすればデフォルト設定でグループ分けすることができます。「
parameters」行では「uid」や「command」といった項目の設定はできないよう
になっているので注意してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

12.2. ax25d.conf ファイルの簡単な例

では、分かりやすい例を見てみましょう。

┌──────────────────────────────────────┐
│# ax25d.conf for VK2KTJ - 02/03/97                                          │
│# この設定ファイルはあらかじめ定義された AX.25 ポートを使用する             │
│                                                                            │
│#  Win T1  T2  T3  idl N2    []                                             │
│                                                                            │
│[VK2KTJ-0 via radio]                                                        │
│parameters 1    10  *  *  *   *   *                                         │
│VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u + │
│VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u + │
│NOCALL     *     *  *  *  *   *   L                                         │
│default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj │
│                                                                            │
│[VK2KTJ-1 via radio]                                                        │
│default    *     *    *   *   *   0    root /usr/sbin/node node             │
│                                                                            │
│                                                                            │
│parameters 1    10  *  *  *   *   *                                         │
│NOCALL     *     *  *  *  *   *   L                                         │
│default    *     *  *  *  *   *   0        root /usr/sbin/node node         │
│                                                                            │
│{VK2KTJ-0 via rose}                                                         │
│parameters 1    10  *  *  *   *   *                                         │
│VK2XLZ     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u + │
│VK2DAY     *     *  *  *  *   *   *    root  /usr/sbin/axspawn axspawn %u + │
│NOCALL     *     *  *  *  *   *   L                                         │
│default    1    10  5 100 180 5   *    root  /usr/sbin/pms pms -a -o vk2ktj │
│                                                                            │
│{VK2KTJ-1 via rose}                                                         │
│default    *     *    *   *   *   0    root /usr/sbin/node node radio       │
└──────────────────────────────────────┘

「radio」という名前の AX.25 ポートでコールサイン「VK2KTJ-0」に接続しよ
うとするユーザーは、この例では以下のような条件が適用される。

コールサインが「NOCALL」である者は接続を許可しない。モード「L」が使われ
ていることに注目。

parameters 行がカーネルのデフォルトから二つのパラメーター (Window と
T1) を変更しています。そして接続してきたユーザーに対して /usr/sbin/
axspawn プログラムを実行します。こうして起動された /usr/sbin/axspawn の
コピーは ps などで見ると分かりやすいように axspawn と表示されます。その
次の 2 行はこの実行許可を与える 2 局の定義です。

この段落の最後の行はそれ以外の者 (VK2XLZ も VK2DAY も SSID が -1 以外で
あれば含まれる) を「拾う」ための定義です。この行ではパラメーターを設定
して、pms プログラムをコマンドライン引数つきで起動します。引数の意味は
、このプログラムが AX.25 の接続されている間実行され、そのオーナーのコー
ルサインは VK2KTJ である、というものです。 (詳細は後述の「PMS の設定」
という章を参照してください)

その次にある設定は「radio」ポート経由の VK2KTJ-1 への呼出を受付けるもの
です。この行では接続したユーザー全員に対して node プログラムを実行する
ようになっています。

その次は NET/ROM の設定です。角括弧ではなく不等号記号が使われていること
に注目ください。これが NET/ROM の設定であることを表します。ここでの設定
はかなりシンプルです。「netrom」という名前の NET/ROM ポートに接続する者
にはコールサインが「NOCALL」でない限り node プログラムを実行することに
なります。コールサインが「NOCALL」であれば接続は拒否されます。

最後の二つの設定は ROSE の接続要求のための設定です。最初の段落はこの
ROSE ノードアドレスの「VK2KTJ-0」に対する呼出のための設定で、二つ目の段
落は同じく「VK2KTJ-1」に対する呼出のための設定です。この 2 行の動作はま
ったく同じものです。 ROSE ポートであることを表すために中括弧を使うこと
に注意してください。

この例は試行錯誤の結果たどり着いたものですが、設定ファイルの文法の重要
な点について分かりやすく示していると思います。設定ファイルについては
ax25d.conf の man ページに詳しく説明されています。より詳細なサンプルが
ax25-utils パッケージに含まれています。(訳注:ax25d および設定のサンプ
ルは ax25-tools パッケージに含まれています) これも参考になるでしょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

12.3. ax25d を起動する

設定ファイルの編集が終われば、ax25d を起動しましょう。

┌──────────────────────────────────┐
│# /usr/sbin/ax25d                                                   │
└──────────────────────────────────┘

このプログラムが起動していると、あなたの Linux マシンに AX.25 で接続で
きるようになるはずです。システムの再起動時に自動的に起動するよう rc に
ax25d コマンドを追加しておきましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

13. node の設定

node は Tomi Manninen  が PMS プログラム
(訳注:後の章で説明があります) を元にして開発しました。このプログラムは
簡単な設定で完璧かつ柔軟な動作のノードを作ることができます。この node
にユーザーはひとたび接続すると Telnet, NET/ROM, ROSE, AX.25 などを使っ
てさらに他のサイトへ接続を試みたり、Finger, Nodes, Heard list などの便
利な情報を得ることができます。 node にお望みのコマンドを実行させるよう
に設定することも極めて簡単です。

node プログラムは通常 ax25d から呼出されます。一方で、あなたのマシンに
telnet でアクセスしてきたユーザーが node を使えるよう TCP/IP の inetd
プログラムから起動することもできます。またコマンドラインから実行させる
こともできます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

13.1. /etc/ax25/node.conf ファイルを作る

node.conf ファイルは node プログラムについての主な設定がなされるところ
です。このファイルは単純なテキストファイルで、書式は以下の通りです。

┌────────────────────────────────────────┐
│# /etc/ax25/node.conf                                                           │
│# node(8) プログラムの設定ファイル                                              │
│#                                                                               │
│# #で始まる行はコメント、無視される                                             │
│                                                                                │
│# ホスト名                                                                      │
│# ノードマシンのホスト名を指定する                                              │
│hostname        radio.gw.vk2ktj.ampr.org                                        │
│                                                                                │
│# ローカルネットワーク                                                          │
│# nodes.perms を使う上でどのサイトをローカルと見なすか指定する                  │
│localnet        44.136.8.96/29                                                  │
│                                                                                │
│# 隠すポート                                                                    │
│# ユーザーには見せないポートを指定する ここで指定したポートは (P)orts           │
│# コマンドで表示されない                                                        │
│hiddenports     rose netrom                                                     │
│                                                                                │
│# ノードの ID                                                                   │
│# node プログラムのプロンプトに表示される                                       │
│NodeId          LINUX:VK2KTJ-9                                                  │
│                                                                                │
│# NET/ROM ポート                                                                │
│# このノードから他のノードへ向けてのNET/ROM接続に使うポートの名前               │
│NrPort          netrom                                                          │
│                                                                                │
│# ノードの Idle Timeout                                                         │
│# このノードに対する接続のタイムアウト時間 単位は秒                             │
│idletimout      1800                                                            │
│                                                                                │
│# 接続の Idle Timeout                                                           │
│# このノードを経由しての接続のタイムアウト時間 単位は秒                         │
│conntimeout     1800                                                            │
│                                                                                │
│# 再接続要求                                                                    │
│# リモートの接続が切断されたときにノードに再接続させるか、または切断す          │
│# るかを指定する                                                                │
│reconnect       on                                                              │
│                                                                                │
│# コマンドエイリアス                                                            │
│# 複雑なコマンドを簡単にする                                                    │
│alias           CONV    "telnet vk1xwt.ampr.org 3600"                           │
│alias           BBS     "connect radio vk2xsb"                                  │
│                                                                                │
│# 外部コマンドのエイリアス                                                      │
│# ノードから外部コマンドを実行する 書式は                                       │
│# extcmd <コマンド名(エイリアス)> <フラッグ> <ユーザーID> <実行されるコマンド>  │
│# フラッグは1のみ <実行されるコマンド>の書式は ax25d.confに同じ                 │
│extcmd          PMS     1       root    /usr/sbin/pms pms -u %U -o VK2KTJ       │
│                                                                                │
│# ロギング                                                                      │
│# system.log への書込みの設定 3が最も詳細 0は書込みしない                       │
│loglevel        3                                                               │
│                                                                                │
│# エスケープ文字                                                                │
│# 20はControl-Tに相当                                                           │
│EscapeChar      20                                                              │
└────────────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

13.2. /etc/ax25/node.perms ファイルを作る

node はユーザーに与えるパーミッションの設定ができます。例えば (T)elnet
や (C)onnect といったコマンドを、どのユーザーには許可し、どのユーザーに
は許可しない、というようなことが決められます。こういった情報は
node.perms ファイルに保存されます。このファイルには五つの項目があり、ど
の項目も任意の値とマッチする文字「*」が使えます。デフォルトのルールを決
めるのに便利でしょう。

user
   
    最初の項目は、このパーミッションが適用されるコールサインまたはユー
    ザー名です。 SSID は指定しても無視されますので、コールサインだけを
    書くようにしてください。
   
method
   
    プロトコルやアクセス方法もまた、それぞれにパーミッションが与えられ
    ます。例えば、AX.25 や NET/ROM 経由で接続してきたユーザーには (C)
    onnect オプションが使えるようにしたいけど、ローカル以外のノードから
    telnet などによって接続してきたユーザーには (C)onnect を使わせたく
    ない、という場合もあるでしょう。そこで、この二つ目の項目は、このパ
    ーミッションが適用されるアクセス方法を決めます。ここで指定されるア
    クセス方法は以下の通りです。
   
    ┌────┬──────────────────────────┐
    │アクセス│説明                                                │
    │方法    │                                                    │
    ├────┼──────────────────────────┤
    │ampr    │amprnet の IP アドレス (44.0.0.0) から telnet による│
    │        │接続                                                │
    ├────┼──────────────────────────┤
    │ax25    │AX.25 による接続                                    │
    ├────┼──────────────────────────┤
    │host    │その node をコマンドラインから起動したホスト自身    │
    ├────┼──────────────────────────┤
    │inet    │ローカルホストでもなく ampr の IP アドレスでもないホ│
    │        │ストからの telnet による接続                        │
    ├────┼──────────────────────────┤
    │local   │ローカルホストからの telnet による接続              │
    ├────┼──────────────────────────┤
    │netrom  │NET/ROM による接続                                  │
    ├────┼──────────────────────────┤
    │rose    │ROSE による接続                                     │
    ├────┼──────────────────────────┤
    │*       │方法によらず全ての接続                              │
    └────┴──────────────────────────┘
   
     
   
port
   
    必要であれば AX.25 経由のユーザーについてはポート毎のパーミッション
    の設定も可能です。つまり、どの AX.25 ポートから接続したかによって何
    を許可するかを決めることができるのです。この機能を使うときは、三つ
    目の項目にポート名を記入します。 AX.25 経由の接続についてのみ意味を
    持ちます。
   
password
   
    ユーザーが接続してきたときに node がパスワード入力を促すように設定
    することもできます。この機能は特別なユーザーの権限を保護するのに役
    立つことでしょう。四つ目の項目に書込んだものが受付けるべきパスワー
    ドとなります。
   
permissions
   
    各行の最後はパーミッションの項目になります。この項目はビットフィー
    ルドによる指定になります。各機能に対応するビットがあり、それがセッ
    トされると許可を表し、セットされていなければ不許可を表します。ここ
    で制御可能な機能とそのビットの意味は以下の通りです。
   
     
   
    ┌──┬────────────────────────────┐
    │値  │説明                                                    │
    ├──┼────────────────────────────┤
    │1   │ログイン許可                                            │
    ├──┼────────────────────────────┤
    │2   │AX.25 の (C)onnects を許可                              │
    ├──┼────────────────────────────┤
    │4   │NET/ROM の (C)onnects を許可                            │
    ├──┼────────────────────────────┤
    │8   │ローカルホストへの (T)elnet を許可                      │
    ├──┼────────────────────────────┤
    │16  │amprnet (44.0.0.0) のホストへの (T)elnet を許可         │
    ├──┼────────────────────────────┤
    │32  │ローカル以外のホスト、amprnet 以外のホストへの (T)elnet │
    │    │を許可                                                  │
    ├──┼────────────────────────────┤
    │64  │AX.25 の隠しポートでの (C)onnects を許可                │
    ├──┼────────────────────────────┤
    │128 │ROSE の (C)onnects を許可                               │
    └──┴────────────────────────────┘
   
    希望の条件に対応するパーミッション値を得るには、それぞれの値を足し
    算すればよいです。計算結果を五つ目の項目に記入してください。
   
nodes.perms のサンプルはこんな感じです。

┌─────────────────────────────────────┐
│# /etc/ax25/node.perms                                                    │
│#                                                                         │
│# この node の管理者は VK2KTJ, パスワード「secret」を設定して             │
│# 全ての接続に対して全ての許可を与える                                    │
│vk2ktj  *       *       secret  255                                       │
│                                                                          │
│# 以下のユーザーは接続を許可しない                                        │
│NOCALL  *       *       *       0                                         │
│PK232   *       *       *       0                                         │
│PMS     *       *       *       0                                         │
│                                                                          │
│# インターネット経由のユーザーは接続を許可しない                          │
│*       inet    *       *       0                                         │
│                                                                          │
│# AX.25, NET/ROM, ローカル, 自ホスト, AMPR のユーザーはローカルおよび     │
│# ampr のホストへの (C)onnect, (T)elnet を許可  ただしローカルおよび ampr │
│# 以外のホストへは許可しない                                              │
│*       ax25    *       *       159                                       │
│*       netrom  *       *       159                                       │
│*       local   *       *       159                                       │
│*       host    *       *       159                                       │
│*       ampr    *       *       159                                       │
└─────────────────────────────────────┘
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

13.3. node を ax25d から起動する

node は通常 ax25d から呼出されます。このようにするには /etc/ax25/
ax25d.conf ファイルに適切なルールを追加する必要があります。私が行った設
定では node に接続するか、それ以外のサービスに接続するかをユーザーに選
択できるようにしたかったのです。ポートのエイリアスを設定すれば ax25d に
このような動作を行わせることが可能です。例えば ax25d の設定が前章におい
て説明したものとして、私は VK2KTJ-1 に接続したユーザー全員が node プロ
グラムを使えるような設定にしたいのです。このため以下のような行を /etc/
ax25/ax25d.conf ファイルに追加しました。

┌──────────────────────────────────┐
│[vk2ktj-1 via radio]                                                │
│default    *     *    *   *   *   0    root /usr/sbin/node node     │
└──────────────────────────────────┘

この設定では radio という AX.25 ポートでコールサイン VK2KTJ-1 に対する
接続要求を Linux カーネルは全て受付けて node プログラムを実行することに
なります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

13.4. node を inetd から起動する

ユーザーがあなたのマシンに telnet などで接続し node にアクセスできるよ
うにするのは、とても簡単です。まずはどのポートに接続させるかを決めます
。 Tomi は node の付属文書の中でどうやって telnet デーモンの代わりに 
node を起動させるかについて詳細に説明しています。以下の例で私は適当に
3694というポートを選んでいます。

以下の二つのファイルを書換えておく必要があります。

/etc/services に以下の行を追加します。

┌──────────────────────────────────┐
│node    3694/tcp        #OH2BNS's node software                     │
└──────────────────────────────────┘

/etc/inetd.conf には以下の行を追加します。

┌──────────────────────────────────┐
│node    stream  tcp     nowait  root    /usr/sbin/node node         │
└──────────────────────────────────┘

ファイルの変更が済んで inetd プログラムを再起動したなら、あなたのマシン
のポート 3694 に接続したユーザーは全員、ログインのプロンプトが表示され
、もし設定していればパスワードが聞かれ、そして node に接続することにな
ります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

14. axspawn の設定

axspawn はあなたのマシンに接続してきた AX.25 のユーザーをログインさせる
ためのシンプルなプログラムです。先に説明した通り、node プログラムを 
ax25d から起動させるのと同じような方法で呼び出すことができます。ユーザ
ーがあなたのマシンにログインするのを許可するには、以下のような行をファ
イル /etc/ax25/ax25d.conf に追加してください。

┌──────────────────────────────────┐
│default * * * * * 1 root /usr/sbin/axspawn axspawn %u               │
└──────────────────────────────────┘

この行の最後が + 文字であれば、ユーザーは実際にログインする前にリターン
キーを一度叩く必要があります。デフォルトでは、この待ちを行いません。こ
の行が設定ファイルにあれば、接続された際に axspawn プログラムが起動する
ようになります。 axspawn は起動すると、まず与えられたコマンドライン引数
が正しいコールサインかどうかを確認し、次に SSID を除いた部分で /etc/
passwd ファイルを調べ、このユーザーがアカウントを持っているかどうかを確
認します。アカウントが存在し、パスワードが "" (パスワード無し) か + な
らばユーザーは即座にログインされます。もしパスワードに何か設定されてい
ればユーザーはパスワードを入力するよう促されます。 axspawn は /etc/
passwd ファイルにアカウントが存在しなければ自動的にアカウントを作成する
ようにも設定できます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

14.1. /etc/ax25/axspawn.conf ファイルを作る

/etc/ax25/axspawn.conf ファイルを使えば、どんな風にも axspawn の動作を
設定することができます。このファイルの書式は以下の通りです。

┌───────────────────────────────────┐
│# /etc/ax25/axspawn.conf                                              │
│#                                                                     │
│# 自動的にアカウント作成する                                          │
│create    yes                                                         │
│#                                                                     │
│# 上の設定で'no'としたか、または他の設定に全てマッチしないユーザーの  │
│# ログイン名。ゲストログインが不許可の場合は'no'とする。              │
│guest     no                                                          │
│#                                                                     │
│# 自動的に作成するアカウントのグループIDまたはグループ名              │
│group     ax25                                                        │
│#                                                                     │
│# 自動的に割り当てる最小のユーザーID                                  │
│first_uid 2001                                                        │
│#                                                                     │
│# 自動的に割り当てる最大のユーザーID                                  │
│max_uid   3000                                                        │
│#                                                                     │
│# 新規ユーザーのホームディレクトリーをどこに追加するか                │
│home      /home/ax25                                                  │
│#                                                                     │
│# ユーザーシェル                                                      │
│shell     /bin/bash                                                   │
│#                                                                     │
│# 他のホストへの接続においてユーザーIDからコールサインを決めるか      │
│associate yes                                                         │
└───────────────────────────────────┘
 

axspawn の設定すべきパラメーターは 8 個です。詳細は以下の通りです。

#
   
    コメントを表す
   
create
   
    この項目が yes の場合、axspawn は /etc/passwd ファイルにアカウント
    の無いユーザーが接続して来ると自動的にユーザーアカウントを作成する
    。
   
guest
   
    create の設定が no であるとき、アカウントを持っていない接続者に対し
    てこの項目の名前がログイン名として使われる。通常は ax25 や guest が
    使われる。
   
group
   
    /etc/passwd ファイルにアカウントの無い接続者に割当てられるグループ
    名。
   
first_uid
   
    自動的に作成されるアカウントの最初のユーザー ID。
   
max_uid
   
    新規ユーザーに割当てられる最大のユーザー ID。
   
home
   
    新規ユーザーのホームディレクトリ (ログインディレクトリ) の設定。
   
shell
   
    新規ユーザーのログインシェルの設定。
   
associate
   
    この新規ユーザーがログイン後、新たに外に向けて AX.25 で接続を行うと
    きに、そのユーザー自身のコールサインを使うか、またはあなたのコール
    サインを使うかを決める。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15. pms の設定

プログラム pms はシンプルなメッセージシステムです。元もとは Alan Cox が
プログラムを書き、そして Dave Brown  N2RJT が
開発を引継いでいます。システムオーナーにメールを出したり、限られた範囲
のシステム情報を引出すことしかできないなど、今でも非常にシンプルな機能
しか持っていませんが、より便利なものとなるよう Dave は開発作業を続けて
います。

AX.25 の設定が済めば、ユーザーが PMS に接続できるよう ax25d.conf ファイ
ルに適当な項目を追加して、またユーザーがシステムについての情報を得られ
るよう簡単なファイルをいくつか用意しておきます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15.1. /etc/ax25/pms.motd ファイルを作る

/etc/ax25/pms.motd ファイルにはユーザーが接続後によくある BBS の ID を
受取った後で表示される `message of the day' (訳注: UN*X などでログイン
したあとに表示されるアレですね) を書込んでおきます。このファイルは単純
なテキストファイルで、このファイルに書込まれているものがそのままユーザ
ーに送られます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15.2. /etc/ax25/pms.info ファイルを作る

/etc/ax25/pms.info も単純なテキストファイルで、このファイルにはあなたの
無線局やその設定などについての詳しい情報を書込んでおきます。このファイ
ルはユーザーが PMS> というプロンプトに対してコマンド Info を実行したと
きに表示されます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15.3. AX.25 コールサインをシステムのユーザー名に関連づける

接続したユーザーがある AX.25 のコールサインにメールを送ったとすると、 
pms はそのコールサインがあなたのマシンの実際のユーザーに関連づけられて
いると期待した動作をします。このことについてはまた章をあらためて説明し
ましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15.4. /etc/ax25/ax25d.conf ファイルに PMS の設定を追加する

pms の設定を ax25d.conf ファイルに追加するのはとても簡単です。でも、ち
ょっとだけ気をつけなければならないことがあります。 Dave は PMS が何種類
かの改行方法を扱えるようコマンドライン引数による設定を追加しました。慣
例によると AX.25 や NET/ROM の改行コードは CR+LF ですが、普通 UNIX で改
行コードは LF だけになります。 AX.25 ポートに対する接続要求にデフォルト
で PMS が起動するようにしたければ、例えば以下のような行を追加してくださ
い。

┌──────────────────────────────────┐
│default  1  10 5 100 5   0    root  /usr/sbin/pms pms -a -o vk2ktj  │
└──────────────────────────────────┘

この行は接続が AX.25 スタイルのものであり、PMS のオーナーが vk2ktj であ
るとして pms を起動しています。他の接続についてどのような指定をすべきか
は man ページで調べてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

15.5. PMS をテストする

PMS をテストするには以下のコマンドを使うといいでしょう。
┌──────────────────────────────────┐
│# /usr/sbin/pms -u vk2ktj -o vk2ktj                                 │
└──────────────────────────────────┘
私のコールサインの代わりにあなたのコールサインを使って PMS を起動しまし
ょう。引数は UNIX スタイルの改行を使って、ログインするユーザーが vk2ktj
であることを意味しています。外から接続したのと同じように PMS を使うこと
ができます。

次に ax25d.conf の設定が正しく動作するかどうか確認するために他のノード
からも接続をしてみましょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

16. user_call プログラムの設定

「user_call」プログラムとは実際は ax25_call プログラムと netrom_call プ
ログラムのことです。これらは ax25d から呼出されることを意図した、リモー
トホストに対するネットワーク接続自動化用のとてもシンプルなプログラムで
す。もちろん ax25d 以外のシェルスクリプトや node プログラムのようなデー
モンから呼出されることもあります。

やはりシンプルなプログラムである call と似ていますが、これらのプログラ
ムではデータの内容をいじるといったことは全くしません。したがって、改行
コードの取扱などは自分自身で面倒を見る必要があります

では、どの様に使うかの例を見ていきましょう。まず家庭内の小さなネットワ
ークを想像してください。そして 1 台の Linux マシンが他のマシンに対して
Linux 無線ゲートウェイとして働いているとします。他のマシンとは、例えば
、イーサネットで接続された BPQ ノードということにしておきましょう。

無線ユーザーが BPQ ノードに接続するためには、通常、Linux 経由でデジピー
トさせるか、または Linux マシンのノードプログラムに一旦接続してから再度
目的のノードに接続をかけることになります。 ax25_call プログラムを ax25d
プログラムから呼出すようにすれば、この手順を簡単にすることができます。

BPQ ノードのコールサインは VK2KTJ-9 で、その Linux マシンには「bpq」と
いう名前の AX.25 / イーサネットポートがあるとしましょう。またゲートウェ
イになる Linux マシンには「radio」という名前の無線ポートがあるとしまし
ょう。

/etc/ax25/ax25d.conf に以下のような行を追加すると、

┌──────────────────────────────────┐
│[VK2KTJ-1 via radio]                                                │
│default    * * * *   *   *  *                                       │
│                root /usr/sbin/ax25_call ax25_call bpq %u vk2ktj-9  │
└──────────────────────────────────┘

「VK2KTJ-1」 (その実体は ax25d デーモン) に接続したユーザーは自動的にイ
ンターフェイス「bpq」から「VK2KTJ-9」へ AX.25 の接続を行うようになりま
す。

他にも試すとよい設定は多くあります。「netrom_call」や「rose_call」ユー
ティリティは同じような使い方ができます。このユーティリティを使えばリモ
ートの BBS への接続がより簡単になります。普段、リモートの BBS に接続を
行うには長い命令を手で打ち込まなければなりませんが、ax25d にリモートへ
の接続の代理動作を行なう行を追加すれば、まるでローカルネットワークに
BBS があるかのようにすることができます。 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

17. ROSE アップリンク・ダウンリンクコマンドの設定

ROM の ROSE 実装に慣れ親しんだ方ならば、ROSE ネットワークを通して AX.25
の呼出しを行う方法もよくご存知でしょう。 VK2KTJ-5 というコールサインの
ローカル ROSE ノードのユーザーがアドレス 5050882960 のリモート ROSE ノ
ードから VK5XXX に接続したい時は、以下のようなコマンドを使います。

┌──────────────────────────────────┐
│c vk5xxx v vk2ktj-5 5050 882960                                     │
└──────────────────────────────────┘

VK5XXX はリモート ROSE ノードのコールサインでデジピートされたローカルな
AX.25 ユーザーのコールサインからの接続要求を見ることになります。

Linux の ROSE 実装はカーネル自体ではこのような機能をサポートしていませ
んが、rsuplnk と rsdwnlnk という二つのアプリケーションプログラムがこの
機能を提供しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

17.1. ROSE ダウンリンクの設定

あなたのマシンが待受けているコールサインと違うコールサインへの ROSE 接
続を受付けて、そのコールサインへの AX.25 接続を行なうためには /etc/ax25
/ax25d.conf ファイルに項目を追加する必要があります。普通、こういう動作
は ROSE 接続に対するデフォルトとして設定します。例えば、NODE-0 や
HEARD-0 に対する接続はローカルで扱い、一方、それ以外の相手に対する接続
は rsdwnlink に AX.25 ユーザーとして接続先を渡す、というようなことがで
きます。

よくある設定はこんな感じです。

┌────────────────────────────────────┐
│#                                                                       │
│{* via rose}                                                            │
│NOCALL   * * * * * *  L                                                 │
│default  * * * * * *  - root  /usr/sbin/rsdwnlnk rsdwnlnk 4800 vk2ktj-5 │
│#                                                                       │
└────────────────────────────────────┘

この設定では、あなたが特に待受けをしていない局への呼出しについては、
4800 という AX.25 ポートのデジピーター VK2KTJ-5 経由の接続に変換されま
す。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

17.2. ROSE アップリンクの設定

ROM の ROSE 実装と同じように AX.25 接続を受付けるよう Linux マシンを設
定するには以下のような行を /etc/ax25/ax25d.conf ファイルに加える必要が
あります。

┌──────────────────────────────────┐
│#                                                                   │
│[VK2KTJ-5* via 4800]                                                │
│NOCALL   * * * * * *  L                                             │
│default  * * * * * *  - root  /usr/sbin/rsuplnk rsuplnk rose        │
│#                                                                   │
└──────────────────────────────────┘

ローカルコールサインの特別な記述に注意してください。「*」の文字はこのコ
ールサインが接続のデジピーター経路の中にあったときにアプリケーションが
起動されることを意味します。

この設定があれば、この章の最初に示した例で使われている ROSE の接続が行
えるようになります。 4800 という AX.25 ポートで VK2KTJ-5 をデジピートし
て行なわれる接続は rsuplnk コマンドが取扱うことになります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

18. AX.25 のコールサインをユーザー名に関連づける

コールサインを実際の Linux でのユーザーアカウントに関連づけることが望ま
しい場面は多々あります。例えば複数のアマチュア無線局が同一の Linux マシ
ンを共有している状況で、他の局への接続に自分自身のコールサインを使いた
い、というような場合などです。他にも、あなたのマシンの PMS ユーザーが他
の特定のユーザーに話かけたいとき、などが挙げられます。

AX.25 ソフトウェアには Linux のユーザーアカウントをコールサインに関連づ
ける機能が備わっています。これについては既に PMS の章でも触れましたが、
ここで間違いのないよう詳しく説明することにしましょう。

関連づけは axparms コマンドで行います。例えば、こんな風です。

┌──────────────────────────────────┐
│# axparms -assoc vk2ktj terry                                       │
└──────────────────────────────────┘

このコマンドでは AX.25 のコールサイン vk2ktj をユーザー terry に関連づ
けています。例えば、pms で vk2ktj 宛に送られたメールは全てアカウント
terry に送られることになります。

再起動時にも、この関連づけが有効になるよう rc ファイルに記述しておきま
しょう。

root アカウントについて関連づけを行わないよう注意してください。他のプロ
グラムで問題の発生することがあります。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

19. APRS の設定

    Note: この章は未完成です。 aprsd, aprsdigi, aprsmon, xastir,
    JavAPRS とかのことを書こうと思っているんですけど。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

20. /proc/ ファイルシステムの各項目

/proc ファイルシステムには AX.25 や NET/ROM のカーネルソフトウェアに関
連する数多くのファイルがあります。このファイルは通常 AX.25 のユーティリ
ティが利用するものではありますが、特殊なフォーマットではありませんので
ファイルの中身を読んでみるのもおもしろいと思います。フォーマットもすご
く分かりやすいですから、詳しい説明は必要ないですよね。

/proc/net/arp
   
    このファイルは Address Resolution Protocol による IP アドレスの MAC
    層プロトコルアドレスへのマッピング情報が書かれている。 MAC 層プロト
    コルとは AX.25 やイーサネット、あるいはまた別の MAC 層プロトコルの
    ことである。
   
/proc/net/ax25
   
    このファイルにはオープンされている AX.25 ソケットのリストが書かれて
    いる。接続を待受けているもの (listen 状態) やアクティブな接続のもの
    が含まれる。
   
/proc/net/ax25_bpqether
   
    このファイルは BPQ スタイルの AX.25 オーバーイーサネットでのコール
    サインのマッピングが書かれている。
   
/proc/net/ax25_calls
   
    このファイルは axparms -assoc コマンドで設定されるユーザー ID とコ
    ールサインのマッピングが書かれている。
   
/proc/net/ax25_route
   
    このファイルは AX.25 デジピーターの経路情報が書かれている。
   
/proc/net/nr
   
    このファイルはオープンされている NET/ROM ソケットのリストが書かれて
    いる。接続を待受けているもの (listen 状態) やアクティブな接続のもの
    が含まれる。
   
/proc/net/nr_neigh
   
    このファイルは NET/ROM ソフトウェアに知らせるべき NET/ROM 隣接ノー
    ドについての情報が書かれている。
   
/proc/net/nr_nodes
   
    このファイルは NET/ROM ソフトウェアに知らせるべき NET/ROM ノードに
    ついての情報が書かれている。
   
/proc/net/rose
   
    このファイルはオープンされている ROSE ソケットのリストが書かれてい
    る。接続を待受けているもの (listen 状態) やアクティブな接続のものが
    含まれる。
   
/proc/net/rose_nodes
   
    このファイルは ROSE における接続先の ROSE 隣接局へのマッピングが書
    かれている。
   
/proc/net/rose_neigh
   
    このファイルは既存の ROSE 隣接局のリストが書かれている。
   
/proc/net/rose_routes
   
    このファイルは接続状態にある ROSE 接続のリストが書かれている。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

21. AX.25, NET/ROM, ROSE ネットワークプログラミング

おそらく、アマチュアパケット無線プロトコルでカーネル内の実装を使う最大
の利点は、それらのプロトコルを使うアプリケーションやプログラムの開発が
簡単になるということでしょう。

Unix のネットワークプログラミングについて触れることは、この文書の目的か
らは外れますが、AX.25, NET/ROM, ROSE プロトコルをあなたのソフトウェアで
どうやって扱えばいいのか、基本的なことについて説明したいと思います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

21.1. アドレスファミリー

Linux では AX.25, NET/ROM, ROSE のネットワークプログラミングは TCP/IP
のプログラミングとほとんど同じです。主な違いは使われるアドレスファミリ
ーの違いと、そのヘッダに埋込むためのアドレス構造体の違いです。

AX.25, NET/ROM, ROSE のアドレスファミリーの名前はそれぞれ AF_AX25,
AF_NETROM, AF_ROSE です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

21.2. ヘッダファイル

これらのプロトコルを扱うならば、ヘッダファイル「netax25/ax25.h」を必ず
インクルードしなければなりません。場合によっては「netrom/netrom.h」や「
netrose/rose.h」も必要です。プログラム開発の出発点になるような簡単な例
を示せば以下のような感じです。

AX.25 の場合

┌──────────────────────────────────┐
│#include                                                            │
│int s, addrlen = sizeof(struct full_sockaddr_ax25);                 │
│struct full_sockaddr_ax25 sockaddr;                                 │
│sockaddr.fsa_ax25.sax25_family = AF_AX25                            │
└──────────────────────────────────┘

NET/ROM の場合

┌──────────────────────────────────┐
│#include                                                            │
│#include                                                            │
│int s, addrlen = sizeof(struct full_sockaddr_ax25);                 │
│struct full_sockaddr_ax25 sockaddr;                                 │
│sockaddr.fsa_ax25.sax25_family = AF_NETROM;                         │
└──────────────────────────────────┘

ROSE の場合

┌──────────────────────────────────┐
│#include                                                            │
│#include                                                            │
│int s, addrlen = sizeof(struct sockaddr_rose);                      │
│struct sockaddr_rose sockaddr;                                      │
│sockaddr.srose_family = AF_ROSE;                                    │
└──────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

21.3. コールサインの変換とその例題

AX.25 ユーティリティパッケージに組込まれている lib/ax25.a ライブラリー
にはコールサイン変換のためのルーチンがあります。もちろん、お望みであれ
ば自分で書いても構いません。

user_call ユーティリティは作業を始める出発点としては最良の例題です。ソ
ースコードは AX.25 ユーティリティパッケージに含まれています (訳注:
user_call は ax25-tools パッケージに含まれます)。ソースコードをちょっと
眺めれば、このプログラムのやっていることの 90 パーセントはソケットをオ
ープンするための準備であることにすぐ気付くことでしょう。実際に接続をす
るのは簡単なことです。むしろそのための準備が大変なのです。

この例題は分かりやすい方だと思います。もし分からないことがあれば、
linux-hams メーリングリストで聞いてみるといいでしょう。誰かが答えてくれ
ると思います。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22. 設定のサンプル

以下は設定でよくあるパターンのサンプルです。これは単にガイドです。設定
すべきネットワークの数と同じくらい設定方法もまた存在するものです。しか
し出発点を与えることにはなるでしょう。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.1. Linux を無線 LAN へのルーターとする小規模イーサネット LAN

家庭内で小規模なローカルエリアネットワークを構築していて、そのネットワ
ーク上のマシンをローカルな無線LANに接続したいと考えている人は多いでしょ
う。私もこういう形態の環境を家で使っています。経路情報が一つで済むよう
に適当なアドレスのブロックを割当てて、それをイーサネット LAN で使ってい
ます。あなたも同じようにしたければ、あなたの地域の IP 割当て担当者が考
慮してくれることでしょう。イーサネット LAN のアドレスは無線 LAN のアド
レスのサブセットになります。以下のネットワーク環境は実際に私が家庭内ネ
ットワークで Linux ルーターに行なっている設定と同じです。

    Note: (訳注) 以下の設定はやや特殊な例だと思います。無線 LAN とイー
    サネット LAN のネットワークアドレスを分けて、Linux ルーター上で NAT
    設定を行なう構成がより一般的だと思います。
   
┌──────────────────────────────────┐
│                                         . . . . . .                │
│  ___               _________         .                             │
│   | Network       /         \     .    Network                     │
│   | 44.136.8.96/29|         |    .     44.136.8.0/24      \ | /    │
│   |               | Linux   |   .                          \|/     │
│   |               |         |  .   _____      __________    |      │
│   |          eth0 | Router  |  .  /     \    /          \   |      │
│   |_______________|         |_____| TNC |____|  Radio   |__/       │
│   |   44.136.8.97 |  and    |  .  \_____/    \__________/          │
│   |               |         | ax0                                  │
│   |               | Server  | 44.136.8.5                           │
│   |               |         |   .                                  │
│   |               |         |     .                                │
│   |               \_________/        .                             │
│  _|_                                    . . . . . .                │
└──────────────────────────────────┘

┌────────────────────────────────────┐
│#!/bin/sh                                                               │
│# /etc/rc.net                                                           │
│# ここでは KISS の AX.25 ポートを一つとイーサネットデバイス             │
│# 一つの設定を行なう。                                                  │
│                                                                        │
│echo "/etc/rc.net"                                                      │
│echo "  Configuring:"                                                   │
│                                                                        │
│echo -n "    loopback:"                                                 │
│/sbin/ifconfig lo 127.0.0.1                                             │
│/sbin/route add 127.0.0.1                                               │
│echo " done."                                                           │
│                                                                        │
│echo -n "    ethernet:"                                                 │
│/sbin/ifconfig eth0 44.136.8.97 netmask 255.255.255.248 \               │
│                broadcast 44.136.8.103 up                               │
│/sbin/route add 44.136.8.97 eth0                                        │
│/sbin/route add -net 44.136.8.96 netmask 255.255.255.248 eth0           │
│echo " done."                                                           │
│                                                                        │
│echo -n "    AX.25: "                                                   │
│kissattach -m 512 /dev/ttyS1 4800                                       │
│ifconfig ax0 44.136.8.5 netmask 255.255.255.0 broadcast 44.136.8.255 up │
│route add -host 44.136.8.5 ax0                                          │
│route add -net 44.136.8.0 window 1024 ax0                               │
│                                                                        │
│echo -n "    NET/ROM: "                                                 │
│nrattach -i 44.136.8.5 netrom                                           │
│                                                                        │
│echo "  Routing:"                                                       │
│/sbin/route add default gw 44.136.8.68 window 1024 ax0                  │
│echo "    default route."                                               │
│echo done.                                                              │
│                                                                        │
│# end                                                                   │
└────────────────────────────────────┘

/etc/ax25/axports
┌─────────────────────────────────────┐
│# ポート名  コールサイン  ボーレート  パケット長  ウィンドウ  説明        │
│4800        VK2KTJ-0      4800        256         2           144.800 MHz │
└─────────────────────────────────────┘

/etc/ax25/nrports
┌──────────────────────────────────┐
│# ポート名  コールサイン エイリアス パケット長  説明                │
│netrom      VK2KTJ-9        LINUX   235         Linux Switch Port   │
└──────────────────────────────────┘

/etc/ax25/nrbroadcast
┌──────────────────────────────────┐
│# AX.25のポート名  min_obs def_qual        worst_qual      verbose  │
│4800               1       120             10              1        │
└──────────────────────────────────┘
 

 

 ・ カーネル再構築の際に IP_FORWARDING を有効にしておく必要があります。
   
 ・ AX.25 の設定ファイルについては以前の章で例として解説してきたもの、
    そのままです。必要に応じて以前の章を参照してください。
   
 ・ 無線ポート用の IP アドレスには家庭内ネットワークに含まれないものを
    使っています。しかし必ずしもそうである必要はなく、無線ポート用に
    44.136.8.97 を使うこともできます。
   
 ・ 44.136.8.68 はローカルの IPIP カプセル化ゲートウェイです。したがっ
    てデフォルトの経路がそこを指すようにしています。
   
 ・ イーサネットワーク側の各マシンには以下のような経路情報を設定してい
    ます。
   
    ┌────────────────────────────┐
    │route add -net 44.0.0.0 netmask 255.0.0.0 \             │
    │        gw 44.136.8.97 window 512 mss 512 eth0          │
    └────────────────────────────┘
   
    mss や window といったパラメーターを用いているのはイーサネット側・
    無線ネット側双方から最適なパフォーマンスを得るためです。
   
 ・ ルーターマシンでは smail, http, ftp などのデーモンも動作しています
    。したがって、このマシンさえあれば他のマシンにこれらのサービスを提
    供することができます。
   
 ・ ルーターマシンは 20Mb のハードドライブがついた質素な 386DX2 です。
    Linux に関しては最低限のものだけ入っています。
   
 

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.2. IPIP カプセル化ゲートウェイの設定

┌──────────────────────────────────┐
│                              Warning                               │
├──────────────────────────────────┤
│この章のトンネルについての記述はいくらか賞味期限切れです。 2.0.x カ │
│ーネル以降で設定方法は変わりました。現在では Advanced Routing HOWTO │
│で説明されている通り、iproute2 パッケージの「ip」コマンドを使います │
│。                                                                  │
└──────────────────────────────────┘

今日では Linux は TCP/IP カプセル化ゲートウェイとして世界中で非常によく
使われています。新しいトンネルドライバーは多重カプセル化ルーティングを
サポートしています。これにより以前の ipip デーモンは使われることがなく
なりました。

よくあるネットワーク環境としては、こんな感じになるでしょう。

┌──────────────────────────────────┐
│                                         . . . . . .                │
│  ___               _________        .                              │
│   | Network       /         \     .    Network                     │
│   | 154.27.3.0/24 |         |    .     44.136.16.0/24     \ | /    │
│   |               | Linux   |   .                          \|/     │
│   |               |         |  .   _____      __________    |      │
│   |          eth0 | IPIP    |  .  /     \    /          \   |      │
│___|_______________|         |_____| TNC |____|  Radio   |___/      │
│   |   154.27.3.20 | Gateway |  .  \_____/    \__________/          │
│   |               |         | ax0                                  │
│   |               |         | 44.136.16.1                          │
│   |               |         |    .                                 │
│   |               |         |     .                                │
│   |               \_________/       .                              │
│  _|_                                    . . . . . .                │
└──────────────────────────────────┘

さて、問題の設定ファイルは以下の通りです。

┌────────────────────────────────────────┐
│# /etc/rc.net                                                                   │
│# ここでは KISS の AX.25 無線ポートを一つとイーサーネットデバイスを一つ、       │
│# それと IPIP カプセルの埋込み/取出しを行なうトンネルドライバーの設定           │
│# を行なう。                                                                    │
│#                                                                               │
│echo "/etc/rc.net"                                                              │
│echo "  Configuring:"                                                           │
│#                                                                               │
│echo -n "    loopback:"                                                         │
│/sbin/ifconfig lo 127.0.0.1                                                     │
│/sbin/route add 127.0.0.1                                                       │
│echo " done."                                                                   │
│#                                                                               │
│echo -n "    ethernet:"                                                         │
│/sbin/ifconfig eth0 154.27.3.20 netmask 255.255.255.0 \                         │
│                broadcast 154.27.3.255 up                                       │
│/sbin/route add 154.27.3.20 eth0                                                │
│/sbin/route add -net 154.27.3.0 netmask 255.255.255.0 eth0                      │
│echo " done."                                                                   │
│#                                                                               │
│echo -n "    AX.25: "                                                           │
│kissattach -m 512 /dev/ttyS1 4800                                               │
│/sbin/ifconfig ax0 44.136.16.1 netmask 255.255.255.0 broadcast 44.136.16.255 up │
│/sbin/route add -host 44.136.16.1 ax0                                           │
│/sbin/route add -net 44.136.16.0 netmask 255.255.255.0 window 1024 ax0          │
│#                                                                               │
│echo -n "    tunnel:"                                                           │
│/sbin/ifconfig tunl0 44.136.16.1 mtu 512 up                                     │
│#                                                                               │
│echo done.                                                                      │
│#                                                                               │
│echo -n "Routing ... "                                                          │
│source /etc/ipip.routes                                                         │
│echo done.                                                                      │
│#                                                                               │
│# end.                                                                          │
└────────────────────────────────────────┘

それから、これも。

┌──────────────────────────────────────┐
│# /etc/ipip.routes                                                          │
│# このファイルは munge スクリプトが作成します。                             │
│#                                                                           │
│/sbin/route add -net 44.134.8.0 netmask 255.255.255.0 tunl0 gw 134.43.26.1  │
│/sbin/route add -net 44.34.9.0 netmask 255.255.255.0 tunl0 gw 174.84.6.17   │
│/sbin/route add -net 44.13.28.0 netmask 255.255.255.0 tunl0 gw 212.37.126.3 │
│   ...                                                                      │
│   ...                                                                      │
│   ...                                                                      │
└──────────────────────────────────────┘

/etc/ax25/axports
┌─────────────────────────────────────┐
│# ポート名  コールサイン  ボーレート  パケット長  ウィンドウ  説明        │
│4800        VK2KTJ-0      4800        256         2           144.800 MHz │
└─────────────────────────────────────┘

ここで注意すべき点は以下の通り。

 

 ・ 新しいトンネルドライバーは相手先の IPIP ゲートウェイを指定するのに 
    pointopoint パラメーターではなくルーティングテーブルの gw の指定を
    使います。これにより一つのインターフェイスで複数のルーティングを指
    定することができるようになりました。
   
 ・ 二つのネットワークデバイスを同一のアドレスで設定することも可能です
    。この例では ax0、tunl0 共に無線ポート用の IP アドレスを設定してい
    ます。こうすることで相手先ゲートウェイがカプセル化したデータグラム
    中のアドレスと同じ正しいアドレスを見ることになります。
   
 ・ カプセル化したパケットのルーティングを指定する route コマンドの部分
    は自動的に改良版の munge スクリプトによって作成されます。このスクリ
    プトは後で示します。 route コマンドの部分は一旦、別のファイルに書き
    込まれ、 bash の source /etc/ipip.routes という命令で読み込まれます
    (ただしルーティング命令を記述したファイルの名前が /etc/ipip.routes
    であるとします)。munge スクリプトに読み込ませるファイルは NOS の
    route コマンドの書式でなければなりません。
   
 ・ route コマンドでの window パラメーターの使い方に注意してください。
    このパラメーターを適切に設定することで無線接続のパフォーマンスをあ
    げることができます。
   
 

新しい tunnel-munge スクリプト

┌──────────────────────────────────────┐
│#!/bin/sh                                                                   │
│#                                                                           │
│# From: Ron Atkinson                                                        │
│#                                                                           │
│#  このスクリプトは Bdale N3EUA が IPIP デーモン用に書いた munge スク       │
│#  リプトを元に、Ron Atkinson N8FOW が改良を加えました。このスクリプト      │
│#  は KA9Q NOS 形式のゲートウェイ経路ファイル (通常「encap.txt」という      │
│#  名前) を IP トンネルドライバー用に Linux のルーティングテーブル形式      │
│#  に変換するものです。                                                     │
│#                                                                           │
│#        使い方:標準入力からゲートウェイのファイルを入力すると、Linux      │
│#                のルーティング形式のファイルが標準出力から出力される。     │
│#               例、 tunnel-munge < encap.txt > ampr-routes                 │
│#                                                                           │
│# 注意: このスクリプトを使う前に以下の点に注意してください。               │
│#                                                                           │
│#     1) 「Local routes」と「Misc user routes」の箇所はあなた自身の設       │
│#        定に変更してください(私の設定のまま使わないで)。                   │
│#     2) fgrep の行はあなたのインターネットへのゲートウェイの IP アド       │
│#        レスに必ず変更するようにしてください。さもなければ重大なルー       │
│#        ティングのループが発生することがあります。                         │
│#     3) デフォルトのインターフェイス名は「tunl0」です。あなたのシステ      │
│#        ムに合わせて変更してください。                                     │
│                                                                            │
│echo "#"                                                                    │
│echo "# IP tunnel route table built by $LOGNAME on `date`"                  │
│echo "# by tunnel-munge script v960307."                                    │
│echo "#"                                                                    │
│echo "# Local routes"                                                       │
│echo "route add -net 44.xxx.xxx.xxx netmask 255.mmm.mmm.mmm dev sl0"        │
│echo "#"                                                                    │
│echo "# Misc user routes"                                                   │
│echo "#"                                                                    │
│echo "# remote routes"                                                      │
│                                                                            │
│fgrep encap | grep "^route" | grep -v " XXX.XXX.XXX.XXX" | \                │
│awk '{                                                                      │
│        split($3, s, "/")                                                   │
│        split(s[1], n,".")                                                  │
│        if      (n[1] == "")    n[1]="0"                                    │
│        if      (n[2] == "")    n[2]="0"                                    │
│        if      (n[3] == "")    n[3]="0"                                    │
│        if      (n[4] == "")    n[4]="0"                                    │
│        if      (s[2] == "1")   mask="128.0.0.0"                            │
│        else if (s[2] == "2")   mask="192.0.0.0"                            │
│        else if (s[2] == "3")   mask="224.0.0.0"                            │
│        else if (s[2] == "4")   mask="240.0.0.0"                            │
│        else if (s[2] == "5")   mask="248.0.0.0"                            │
│        else if (s[2] == "6")   mask="252.0.0.0"                            │
│        else if (s[2] == "7")   mask="254.0.0.0"                            │
│        else if (s[2] == "8")   mask="255.0.0.0"                            │
│        else if (s[2] == "9")   mask="255.128.0.0"                          │
│        else if (s[2] == "10")  mask="255.192.0.0"                          │
│        else if (s[2] == "11")  mask="255.224.0.0"                          │
│        else if (s[2] == "12")  mask="255.240.0.0"                          │
│        else if (s[2] == "13")  mask="255.248.0.0"                          │
│        else if (s[2] == "14")  mask="255.252.0.0"                          │
│        else if (s[2] == "15")  mask="255.254.0.0"                          │
│        else if (s[2] == "16")  mask="255.255.0.0"                          │
│        else if (s[2] == "17")  mask="255.255.128.0"                        │
│        else if (s[2] == "18")  mask="255.255.192.0"                        │
│        else if (s[2] == "19")  mask="255.255.224.0"                        │
│        else if (s[2] == "20")  mask="255.255.240.0"                        │
│        else if (s[2] == "21")  mask="255.255.248.0"                        │
│        else if (s[2] == "22")  mask="255.255.252.0"                        │
│        else if (s[2] == "23")  mask="255.255.254.0"                        │
│        else if (s[2] == "24")  mask="255.255.255.0"                        │
│        else if (s[2] == "25")  mask="255.255.255.128"                      │
│        else if (s[2] == "26")  mask="255.255.255.192"                      │
│        else if (s[2] == "27")  mask="255.255.255.224"                      │
│        else if (s[2] == "28")  mask="255.255.255.240"                      │
│        else if (s[2] == "29")  mask="255.255.255.248"                      │
│        else if (s[2] == "30")  mask="255.255.255.252"                      │
│        else if (s[2] == "31")  mask="255.255.255.254"                      │
│        else                    mask="255.255.255.255"                      │
│                                                                            │
│if (mask == "255.255.255.255")                                              │
│        printf "route add -host %s.%s.%s.%s gw %s dev tunl0\n"\             │
│                ,n[1],n[2],n[3],n[4],$5                                     │
│else                                                                        │
│        printf "route add -net %s.%s.%s.%s gw %s netmask %s dev tunl0\n"\   │
│                ,n[1],n[2],n[3],n[4],$5,mask                                │
│ }'                                                                         │
│                                                                            │
│echo "#"                                                                    │
│echo "# default the rest of amprnet via mirrorshades.ucsd.edu"              │
│echo "route add -net 44.0.0.0 gw 128.54.16.18 netmask 255.0.0.0 dev tunl0"  │
│echo "#"                                                                    │
│echo "# the end"                                                            │
└──────────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.3. AXIP カプセル化ゲートウェイの設定

多くのアマチュア無線インターネットゲートウェイ局では TCP/IP 以外にも
AX.25, NET/ROM, ROSE のカプセル化を行なっています。 IP データグラム内に
AX.25 フレームをカプセル化する方法については Brian Kantor が RFC-1226
で説明しています。 Mike Westerhof は 1991 年に UNIX 用の AX.25 カプセル
化デーモンの実装を行ないました。 ax25-utils パッケージには、それを
Linux 用に少し拡張したバージョンが収録されています。 (訳注:ax25ipd は
ax25-apps パッケージに含まれています)

AXIP カプセル化デーモンは一方の側で AX.25 フレームを受付けて、送り先の
AX.25 アドレスからどの IP アドレスに送るべきかを判断し、そのフレームを
TCP/IP のデータグラムにカプセル化し、適切なリモートホスト向け送出をしま
す。もう一方の側では AX.25 フレームを内包した TCP/IP データグラムを受付
けて、そのフレームを取出し、それをまるで AX.25 ポートから直接受け取った
かのように処理します。 AX.25 フレームを内包する IP データグラムを見分け
るために、AXIP データグラムはプロトコル ID として 4 を採用しています
(または 94 も使われることもありますが、これは現在では使用しないよう言わ
れています)。この処理の過程は RFC-1226 で説明されています。

ax25-utils パッケージに含まれるプログラム ax25ipd は AX.25 フレームをや
りとりする側に対しては KISS インターフェイスを提供します。また TCP/IP
プロトコル群に対するインターフェイスも提供します。設定は /etc/ax25/
ax25ipd.conf という名前の設定ファイル一つだけで行ないます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.3.1. AXIP 設定のオプション

ax25ipd には大きく分けて二つの動作モードがあります。「デジピーターモー
ド」と「TNCモード」です。「TNCモード」ではデーモンは KISS TNC であるか
のような動作をします。つまり KISS フレームにカプセル化したパケットをデ
ーモンに渡すと、デーモンはそれを送信します。このモードが普通の設定にな
ります。「デジピーターモード」ではデーモンは AX.25 デジピーターであるか
のような動作をします。これらのモードには微妙に違う部分があります。

設定ファイルにおいては「経路」の設定、すなわち、どの宛先の AX.25 コール
サインをどの IP アドレスのホストに送るかのマッピングを行ないます。それ
ぞれの経路には後で説明するオプションの項目があります。

それ以外に、ここで設定されるオプションは以下の通り:

 ・ ax25ipd デーモンがオープンする端末 (通常はパイプの片方) とそのスピ
    ード。
   
 ・ 「デジピーターモード」でどのコールサインを使うか。
   
 ・ ビーコンの送出間隔とその内容。
   
 ・ AX.25 フレームを IP データグラムとしてカプセル化するか、または UDP/
    IP データグラムとしてカプセル化するか。ほとんどの AXIP ゲートウェイ
    では IP によるカプセル化を採用していますが、中には AXIP プロトコル
    ID を持つ IP パケットを認めないファイアーウォール内のゲートウェイな
    どで仕方なく UDP/IP を採用していることもあります。どちらを選ぶ場合
    も接続を行なう相手方の TCP/IP ホストと一致している必要があります。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.3.2. /etc/ax25/ax25ipd.conf ファイルの例

┌──────────────────────────────────────┐
│#                                                                           │
│# floyd.vk5xxx.ampr.org 用の ax25ipd 設定ファイル                           │
│#                                                                           │
│# axip 転送方法の選択。他のゲートウェイとの互換性が必要なら「ip」とす       │
│# ること。                                                                  │
│#                                                                           │
│socket ip                                                                   │
│#                                                                           │
│# ax25ipd の動作モードの設定。digi あるいは tnc                             │
│#                                                                           │
│mode tnc                                                                    │
│#                                                                           │
│# 上で digi を選んだならコールサインを指定すること。tnc を選んだのなら      │
│# コールサインは今のところ必須ではない。ただし将来変更されることもある。    │
│# (デュアルポートの KISS インターフェイスには二つコールサインを指定す       │
│# ること)                                                                   │
│#                                                                           │
│#mycall vk5xxx-4                                                            │
│#mycall2 vk5xxx-5                                                           │
│#                                                                           │
│# digi モードではエイリアスを使うことができる。(デュアルポートには二つ      │
│# 指定)                                                                     │
│#                                                                           │
│#myalias svwdns                                                             │
│#myalias2 svwdn2                                                            │
│#                                                                           │
│# ID を 540 秒毎に送信。                                                    │
│#                                                                           │
│#beacon after 540                                                           │
│#btext ax25ip -- tncmode rob/vk5xxx -- Experimental AXIP gateway            │
│#                                                                           │
│# シリアルポート。私の場合は kissattach に接続したパイプ。                  │
│#                                                                           │
│device /dev/ttyq0                                                           │
│#                                                                           │
│# デバイスのスピードの設定。                                                │
│#                                                                           │
│speed 9600                                                                  │
│#                                                                           │
│# loglevel 0 - 出力なし                                                     │
│# loglevel 1 - 設定情報のみ                                                 │
│# loglevel 2 - 重要なイベントとエラー情報                                   │
│# loglevel 3 - 重要なイベントとエラー情報、および AX.25 フレームのトレース  │
│# loglevel 4 - 全てのイベント                                               │
│# 当面は log 0、syslog 経由の出力はまだ動作しない。                         │
│#                                                                           │
│loglevel 2                                                                  │
│#                                                                           │
│# digi モードのとき、実際の TNC のパラメーターは param を使って行なう。     │
│#                                                                           │
│#param 1 20                                                                 │
│#                                                                           │
│# ブロードキャストアドレスの指定。ここに挙げられたアドレスへのフレーム      │
│# は、ブロードキャスト可能とされる全ての経路に転送される。                  │
│#                                                                           │
│broadcast QST-0 NODES-0                                                     │
│#                                                                           │
│# AX.25 経路の指定。必要なだけ指定できる。                                  │
│# 書式は route (コールサイン[ワイルドカード指定可能]) (相手先IP)            │
│# SSID 0 を指定すると全ての SSID の指定と同じ。                             │
│#                                                                           │
│# route   [フラッグ]                                                        │
│#                                                                           │
│# 指定可能なフラッグ:                                                      │
│#         b  - この経路でのブロードキャストの送信を許可する                 │
│#         d  - この経路がデフォルト                                         │
│#                                                                           │
│route vk2sut-0 44.136.8.68 b                                                │
│route vk5xxx 44.136.188.221 b                                               │
│route vk2abc 44.1.1.1                                                       │
│#                                                                           │
│#                                                                           │
└──────────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.3.3. ax25ipd の起動

/etc/ax25/axports のエントリーを作成:
   
     
    ┌────────────────────────────┐
    │# /etc/ax25/axports                                     │
    │#                                                       │
    │axip    VK2KTJ-13       9600    256     AXIP port       │
    │#                                                       │
    └────────────────────────────┘
     
   
ポートを作るために kissattach コマンドを実行:
   
     
    ┌────────────────────────────┐
    │/usr/sbin/kissattach /dev/ptyq0 axip 44.135.96.242      │
    └────────────────────────────┘
     
   
ax25ipd プログラムを起動:
   
     
    ┌────────────────────────────┐
    │/usr/sbin/ax25ipd &                                     │
    └────────────────────────────┘
     
   
AXIP リンクをテスト:
   
     
    ┌────────────────────────────┐
    │call axip vk5xxx                                        │
    └────────────────────────────┘
     
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.3.4. route コマンドとフラッグについて、もう少し補足

「route」コマンドでは AX.25 パケットをカプセル化して送りたい相手を指定
します。 ax25ipd デーモンは、そのインターフェイスからパケットを受信する
と、送り先コールサインをルーティングテーブルのコールサイン一つ一つと比
較します。一致するものがあれば、AX.25 パケットは IP データグラムの中に
カプセル化され、指定された IP アドレスのホスト宛に送信されます。

ax25ipd.conf ファイルの route コマンドにはそれぞれ 2 種類のフラッグを指
定することができます。それらの意味は以下の通りです。

b
   
    キーワード「broadcast」で指定された送り先アドレスに一致するトラフィ
    ックはこの経路を通じて送信される。
   
d
   
    いずれの経路にも一致しないパケットはこの経路を通じて送信される。
   
ブロードキャストフラッグを使えば複数の AXIP 接続先すべてに送るようなイ
ンフォメーションの送信が実現できるので、とても便利です。普通、AXIPの経
路はポイント・トゥ・ポイントであり、「ブロードキャスト」のようなパケッ
トは扱えないものなのです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

22.4. NOS と Linux のパイプデバイスによる接続

NOS の類を使っていたような人の多くは、以前に使っていた機能がまるごと使
えると言う理由で Linux の上でも NOS を動かしたいと思っています。またそ
の内の大半の人は NOS を経由して Linux の機能を無線ユーザーに解放するた
めに、NOS が Linux カーネルと通信できるようにしたいと考えています。

Brandon S. Allbery KF8NH は Linux マシン上で稼働している NOS がパイプデ
バイスによりどうやってカーネルと双方向接続するかについての情報を寄せて
くれました。

Linux と NOS は共に slip プロトコルをサポートしていますので、slip のリ
ンクを作ることによりこれらを接続することができます。これは二つのシリア
ルポートをループバックケーブルにより接続することで実現できますが、通信
速度は遅いですしケーブルを購入するお金もかかります。 Linux には他の
Unix-like オペレーティングシステム同様「パイプ」と呼ばれる機能がありま
す。これはソフトウェア側からみると通常の TTY デバイスのようで、実はもう
一方の端が別のパイプデバイスのループバックとなっている特別な仮想デバイ
スなのです。このパイプを使うには、まず一つ目のプログラムがパイプのマス
ター側をオープンしなければなりません。続いて二つ目のプログラムがパイプ
のスレーブ側をオープンします。パイプの両端がオープンされると後は各プロ
グラムは普段ターミナルデバイスに書込むのと同様に文字列をパイプに書込む
ことでお互いに通信することができます。

Linux カーネルと NOS あるいは別のプログラムを接続する上でこの機能を使う
には、まず使用するパイプを決めなければなりません。 /dev ディレクトリー
を見ればパイプが見つかるでしょう。パイプのマスター側は ptyq[1-f] という
名前で、スレーブ側は ttyq[1-f] という名前です。これらはペアーになってい
て、マスター側として /dev/ptyqf を選べばスレーブ側では /dev/ttyqf を使
用することになります。

使用するパイプデバイスのペアーを選んだら、そのマスター側を Linux カーネ
ルに、スレーブ側を NOS プログラムに割当てます。というのも、Linux カーネ
ルの方が先に動いていて、パイプのマスター側は先にオープンされなければな
らないからです。また Linux カーネル側は NOS とは異なる IP アドレスを持
っていなければならないということも憶えておいてください。もし IP アドレ
スをまだ割当てていなければ、重複しないアドレスを割当てる必要があります
。

ちょうどシリアルデバイスのようにパイプは扱うことができます。つまり
Linux カーネルから slip でリンクを張るには以下のようなコマンドを使いま
す。

 
┌─────────────────────────────────────┐
│# /sbin/slattach -s 38400 -p slip /dev/ptyqf &                            │
│# /sbin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.70.248.67 /  │
│        mtu 1536 44.70.4.88                                               │
│# /sbin/route add 44.70.248.67 sl0                                        │
│# /sbin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.70.248.67         │
└─────────────────────────────────────┘
 

この例では Linux カーネルは IP アドレスが 44.70.4.88 であり、一方で NOS
プログラムは IP アドレス 44.70.248.67 を使っています。最後の行の route
コマンドは Linux カーネルに対して amprnet 宛の全てのデータグラムについ
て slattach コマンドで作成した slip のリンクを経由するよう指示していま
す。通常、再起動時に自動的に slip リンクが作成されるよう、 /etc/rc.d/
rc.inet2 の他の全てのネットワーク設定が済んだ後にこのコマンドを付足して
おきます。注意:slip の代わりに cslip を使うことはパフォーマンスを低下
させるだけで意味がありません。リンクは仮想的なもので十分速いです。 
cslip ではヘッダの圧縮を行なわなければなりませんが、これは圧縮していな
いデータグラムを送信するより時間のかかることです。

リンクの NOS 側の設定を行なうには、以下のようにします。

┌──────────────────────────────────┐
│# インターフェイスの名前は何でも構いません。                        │
│# 私は便宜上「linux」ということにしています。                       │
│attach asy ttyqf - slip linux 1024 1024 38400                       │
│route addprivate 44.70.4.88 linux                                   │
└──────────────────────────────────┘
 

このコマンドで Linux カーネルと対になるパイプデバイスのスレーブ側に「
linux」という名前の slip ポートが作成されます。そしてそれに対する経路を
設定することで動作するようになります。 NOS を起動したら Linux マシンか
ら NOS 宛に ping したり telnet したり、またその逆方向もできるようになる
でしょう。もしうまくいかなかったら、設定に間違いがないかもう一度見直し
てください。特に正しいアドレスを設定したかどうかや、またパイプデバイス
を正しい順番に設定したかどうか確認してください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

23. AX.25 機能に関する Linux コマンドのまとめ

この章では AX.25 機能に特に関係が深いコマンドをまとめることにしましょう
。

┌────────┬─────┬──────────────────┐
│コマンド名      │パッケージ│説明                                │
├────────┼─────┼──────────────────┤
│mheard          │ax25-tools│最近、受信した AX.25 コールサインを │
│                │          │表示する                            │
├────────┼─────┼──────────────────┤
│ax25d           │ax25-tools│AX.25, NET/ROM, ROSE の汎用デーモン │
├────────┼─────┼──────────────────┤
│axctl           │ax25-tools│接続中の AX.25 セッションの制御およ │
│                │          │び切断                              │
├────────┼─────┼──────────────────┤
│axparms         │ax25-tools│AX.25 インターフェイスの設定        │
├────────┼─────┼──────────────────┤
│axspawn         │ax25-tools│Linux システムへの自動ログインを行な│
│                │          │う                                  │
├────────┼─────┼──────────────────┤
│beacon          │ax25-tools│AX.25 ポートから定期的にメッセージを│
│                │          │送信する                            │
├────────┼─────┼──────────────────┤
│bpqparms        │ax25-tools│BPQ イーサーネットデバイスの設定    │
├────────┼─────┼──────────────────┤
│mheardd         │ax25-tools│他局のパケットの運用状況について情報│
│                │          │を収集する                          │
├────────┼─────┼──────────────────┤
│rxecho          │ax25-tools│ポート間で透過的に AX.25 パケットを │
│                │          │流す                                │
├────────┼─────┼──────────────────┤
│sethdlc         │ax25-tools│Linux HDLC モデムドライバーの設定お │
│                │          │よび設定情報の取得                  │
├────────┼─────┼──────────────────┤
│smmixer         │ax25-tools│Linux サウンドモデムドライバー用のミ│
│                │          │キサー設定および設定情報の取得      │
├────────┼─────┼──────────────────┤
│smdiag          │ax25-tools│Linux サウンドモデムドライバーの設定│
│                │          │診断ユーティリティ                  │
├────────┼─────┼──────────────────┤
│kissattach      │ax25-tools│KISS および 6PACK インターフェイスの│
│                │          │アタッチ                            │
├────────┼─────┼──────────────────┤
│kissnetd        │ax25-tools│仮想ネットワークの作成              │
├────────┼─────┼──────────────────┤
│kissparms       │ax25-tools│KISS TNC の設定                     │
├────────┼─────┼──────────────────┤
│net2kiss        │ax25-tools│AX.25 ネットワークデバイスから仮想  │
│                │          │TTY 上の KISS デバイスへの変換      │
├────────┼─────┼──────────────────┤
│mkiss           │ax25-tools│複数の KISS インターフェイスをアタッ│
│                │          │チ                                  │
├────────┼─────┼──────────────────┤
│nodesave        │ax25-tools│NET/ROM 経路情報を保存              │
├────────┼─────┼──────────────────┤
│nrattach        │ax25-tools│NET/ROM インターフェイスを起動する  │
├────────┼─────┼──────────────────┤
│nrparms         │ax25-tools│NET/ROM インターフェイスの設定      │
├────────┼─────┼──────────────────┤
│nrsdrv          │ax25-tools│KISS プロトコルから NET/ROM シリアル│
│                │          │プロトコルへの変換                  │
├────────┼─────┼──────────────────┤
│netromd         │ax25-tools│NET/ROM 経路情報の送受信を行なう    │
├────────┼─────┼──────────────────┤
│rsattach        │ax25-tools│ROSE インターフェイスの起動         │
├────────┼─────┼──────────────────┤
│rsdwnlnk        │ax25-tools│ROSE ネットワークからの出口         │
├────────┼─────┼──────────────────┤
│rsparms         │ax25-tools│ROSE インターフェイスの設定         │
├────────┼─────┼──────────────────┤
│rsuplnk         │ax25-tools│ROSE ネットワークへの入口           │
├────────┼─────┼──────────────────┤
│ttylinkd        │ax25-tools│AX.25, NET/ROM, ROSE, IP 用 TTYlink │
│                │          │デーモン                            │
├────────┼─────┼──────────────────┤
│rip98d          │ax25-tools│RIP98 経路情報の送受信を行なう      │
├────────┼─────┼──────────────────┤
│ax25_call       │ax25-tools│AX.25 の接続を行なう                │
├────────┼─────┼──────────────────┤
│netrom_call     │ax25-tools│NET/ROM の接続を行なう              │
├────────┼─────┼──────────────────┤
│rose_call       │ax25-tools│ROSE の接続を行なう                 │
├────────┼─────┼──────────────────┤
│tcp_call        │ax25-tools│TCP の接続を行なう                  │
├────────┼─────┼──────────────────┤
│yamcfg          │ax25-tools│YAM モデムドライバーの設定          │
├────────┼─────┼──────────────────┤
│dmascc_cfg      │ax25-tools│dmascc デバイスの設定               │
├────────┼─────┼──────────────────┤
│ax25ipd         │ax25-apps │AX.25 パケットの IP カプセル化を行な│
│                │          │う                                  │
├────────┼─────┼──────────────────┤
│ax25rtd         │ax25-apps │AX.25 用ルーティングデーモン        │
├────────┼─────┼──────────────────┤
│ax25rtctl       │ax25-apps │AX.25 用ルーティングデーモンの制御  │
├────────┼─────┼──────────────────┤
│call            │ax25-apps │AX.25, NET/ROM, ROSE の接続を行なう │
├────────┼─────┼──────────────────┤
│listen          │ax25-apps │AX.25 トラフィックのモニター        │
├────────┼─────┼──────────────────┤
│ax25mond        │ax25-apps │AX.25 トラフィックのダンプ、および指│
│                │          │定されたソケットへの受信データ転送  │
├────────┼─────┼──────────────────┤
│soundmodem      │soundmodem│ユーザー領域版サウンドモデムドライバ│
│                │          │ー                                  │
├────────┼─────┼──────────────────┤
│soundmodemconfig│soundmodem│ユーザー領域版サウンドモデムドライバ│
│                │          │ーの設定ユーティリティ              │
├────────┼─────┼──────────────────┤
│aprsd           │aprsd     │APRS デーモン                       │
├────────┼─────┼──────────────────┤
│aprspass        │aprsd     │APRS パスコードジェネレータ         │
├────────┼─────┼──────────────────┤
│aprsdigi        │aprsdigi  │APRS デジピーター                   │
├────────┼─────┼──────────────────┤
│aprsmon         │aprsdigi  │JavAPRS 用 APRS トラフィックのモニタ│
│                │          │ー                                  │
└────────┴─────┴──────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

24. もっと詳しい情報はどこに行けば得られるの?

この文書はあなたがすでにパケット無線についていくらかの経験を持っている
ものと仮定していますが、そうでない方もおられることでしょう。そのような
方にとっても有益と思われる他の情報源を集めてみました。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

24.1. パケット無線について

パケット無線についての一般的な情報は以下のサイトから得られます。

 ・ American Radio Relay League 
   
 ・ Radio Amateur Teleprinter Society 
   
 ・ Tucson Amateur Packet Radio Group 
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

24.2. プロトコルについての文書

 ・ AX.25, NET/ROM について、Jonathan Naylor が関連する様々な解説書を整
    理しています。この文書群は ax25-doc-1.0.tar.gz  として
    まとめられています。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

24.3. ハードウェアについての文書

 ・ PI2 カードについての情報は Ottawa Packet Radio Group  にあります。
   
 ・ Baycom ハードウェアについての情報は Baycom Web Page  にあります。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

24.4. Linux のアマチュア無線関連のソフトウェア

John Ackermann は Linux の AX.25 機能の設定に関する情報をウェブサイトに
掲載しています。 http://www.febo.com/linux-ax25/index.html

「The Hamsoft Linux Ham Radio Applications and Utilities Database」では
Linux 用のアマチュア無線関係アプリケーションを網羅したリストを作成して
います。URI は http://radio.linux.org.au 
です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

25. アマチュア無線と Linux に関する話題

アマチュア無線と Linux に関する話題が出てくるようなところは多いです。
comp.os.linux.* ニュースグループとか、 vger.kernel.org で運用されている
linux-hams メーリングリストとかがあります。他には ucsd.edu で運用されて
いる tcp-group メーリングリスト (アマチュア無線を使った TCP/IP の議論の
本家) や、または IRC ネットワーク linuxnet の #linpeople チャンネルなど
でも話題が出てきます。

linux-hams メーリングリストに参加するには、メール本体に subscribe
linux-hams と書いたメールを majordomo@vger.kernel.org 宛に送ってくださ
い。サブジェクトの行は無視されます。

linux-hams メーリングリストは http://hes.iki.fi/archive/linux-hams/ お
よび http://web.gnu.walfield.org/mail-archive/linux-hams においてアーカ
イブされています。まず始めるにあたってはアーカイブを活用するようにして
ください。と言うのも、同じような質問が繰返されるからです。

tcp-group メーリングリストに参加するにはメール本体に subscribe
tcp-group と書いたメールを listserver@ucsd.edu 宛に送ってください。

    Note: tcp-group メーリングリストはそもそも TCP/IP を含む先進的なプ
    ロトコルをアマチュア無線で利用することについての議論用メーリングリ
    ストであることに注意してください。 Linux 自体に関する質問を行なうべ
    き場所ではありません。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

26. 謝辞

Terry Dawson がこの HOWTO 文書の元々の著者であり、彼がメンテナンスも行
なっていました。 Jeff Tranter は Terry に AX.25 ソフトウェアの開発によ
り集中してもらえるよう、2001 年、メンテナンスを引継ぎました。

以下の方々がこの文書にいろいろな形で貢献してきました。順不同(私が思いつ
いた順で): Jonathon Naylor, Thomas Sailer, Joerg Reuter, Ron Atkinson,
Alan Cox, Craig Small, John Tanner, Brandon Allbery, Hans Alblas, Klaus
Kudielka, Carl Makin, John Ackermann, Riley Williams

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

27. フィードバック

読者のみなさん、あなたがこの文書をより良いものにしてくれると私は思って
います。提案、訂正、意見などがあれば、ぜひ tranter@pobox.com  宛に送ってください。次回の版で修正するようにしたいと
思います。

この文書を CD-ROM か印刷物にしたときは一冊送っていただけるとうれしいで
す。私の住所宛に郵送してください。また Linux のためのフリーな文書をサポ
ートすべく Linux Documentation Project へのドネーションも御一考ください
。詳しくは feedback@linuxdoc.org  から
LDP に連絡を取ってみてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

28. 配布条件

Copyright (c) 1996-1997 by Terry Dawson, Copyright (c) 2001 by Jeff
Tranter. Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version
1.1 or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is available at http://
www.gnu.org/copyleft/fdl.html

訳注:配布条件は原文が優先しますが、一応、参考までに日本語訳を以下に掲
載します。

Copyright (c) 1996-1997 by Terry Dawson, Copyright (c) 2001 by Jeff
Tranter この文書を、フリーソフトウェア財団発行の GNU フリー文書利用許諾
契約書(第 1.1 版かそれ以降の版から一つを選択)が定める条件の下で複製、配
布、あるいは変更することを許可する。ただし変更不可部分、表表紙テキスト
、裏表紙テキストは指定しない。この利用許諾契約書の複写はhttp://
www.gnu.org/copyleft/fdl.htmlから取得できる。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

29. 日本語訳について

日本語訳は JF Project が行ないました。日本語訳の内容についてのお問い合
わせはまでお願いします。

2.0j
   
    翻訳:            
    幸田あきひろ      
    校閲:            
    千旦裕司          
    Seiji Kaneko      
   
一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/