## Linux Amateur Radio AX.25 HOWTO

Jeff
Tranter, VE3ICH

    tranter@pobox.com

JF Project
(日本語訳)
v2.0, 19 September 2001

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

## はじめに

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

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

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

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

- 文書の担当者が新しくなりました。

- DocBook SGML フォーマットに変換しました。タブ形式の表の多くをテーブル を使うように変更しました。

- GNU FDL でリリースするようにしました。

- Baycom, YAM, 6PACK, ユーザーモード soundmodem といった新しいドライバー の情報を追加しました。

- APRS の章を追加しました。

- この文書が最後に更新された 1997 年以降の様々な変化を反映するようにしま した。 でもまだ多くの誤りや賞味期限切れの情報が残っていることでしょう。

### この文書の最新版はどこで手に入れられますか？

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

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

### その他の関連する文書

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

- Linux Networking HOWTO

- Linux Ethernet HOWTO

- Linux Firewall and Proxy Server HOWTO

- Linux 2.4 Advanced Routing HOWTO

- Netrom-Node mini-Howto

(訳注) 上記文書の日本語訳については JF Project のサイトをご覧くだ さい。

ひょっとしたら Linux HAM HOWTO のことが頭に浮かんだかも知れませんね。 この文書はもう廃版となっており、その役目を Hamsoft Linux Ham Radio Applications and Utilities Database に譲りました。 Linux についてのもっと一般的な情報は他の HOWTO 文書 を参照するとよいでしょう。

## パケット無線のプロトコル群と 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 をサポートするユーティリティープログラムもあります。 これにはデジピート機能やインターネットとのゲートウェイ機能も含まれてい ます。

### どういった仕組みになっているの？

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 が使うプログラムインターフェー スを提供するプロトコルがカーネルに組み込まれていなければなりません。 この文書でもだいたいこんな順番で説明していこうと思っています。

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

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

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

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

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

#### カーネルのソースは？

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

#### ネットワークツールは？

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

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

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

#### 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

#### 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

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

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

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

### カーネルのコンパイル

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 を実行します。

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

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

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

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

### 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

`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 スクリプトはパッケージが標準の場所にインストールされているか を確認しますが、なかには変な場所にインストールされているため見つけられ ないケースもあります。

## 動かす前に：コールサインとかアドレスとかについて

システム上の 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 アドレスを設定しても構わ ない。お望みであれば。

### 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 されなかった送信フレームの最大値

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

実行時には多くのカーネルパラメーターを変更することができます。 `/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 Mode | 0=Normal 1=Extended | 0
backoff_type | Backoff | 0=Linear 1=Exponential | 1
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 Length | 1 .. 512 | 256

この表の 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

## AX.25 ポートの設定

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

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

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

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

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

#### 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 ページを参照してください。

##### デュアルポート 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 <speed>

  シリアルポートのスピードを設定する。

-h

  シリアルポートをハードウェアハンドシェイクするようにする。 デフォルトはオフ。大抵の KISS の実装ではサポートされていないが、これを サポートするものもある。

-l

  syslog 機能を使ってログをとるようにする。

#### 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` で す。

#### Baycom デバイスを作る

(訳注)この章で述べられている 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

#### 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

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

##### カーネル 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 の設 定をしたり、後はあなたのお望みのままです。

#### カーネル版 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` といったネットワークデ バイスを作成します。

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

##### サウンドカードを設定

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 を、それぞれ設定します。

##### 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

##### 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

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

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

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

smdiag

  このプログラムには 2 種類の表示モードがあります。 一つはオシロスコープのような表示で、もう一つはアイパターンのような表示です。

smmixer

  このプログラムは送受信のオーディオレベルを調節するためのものです。

デバイス `sm0` の Soundmodem 用に smdiag ユーティリティをアイパターンモードで起動す るには

    # smdiag -i sm0 -e

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

    # smmixer -i sm0

##### カーネル 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 の設 定をしたり、後はあなたのお望みのままです。

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

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

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

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

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

#### 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/ にあります。

#### 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 によって書かれました。

#### 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 によって書かれました。

#### 汎用 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 カードを扱うことができます。

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

ドライバー自体は通常のカーネルの配布物に含まれていますが、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 コマンドでモ ジュールをロードしておくのを忘れないように。

##### ドライバーの設定

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

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

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

    # sccinit

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

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

最初のハードウェアパラメータの設定部分はさらにいくつかの部分に分かれて います。 各部分はそれぞれ z8530 チップ一つに対応しており、引数を伴ったキーワー ドのリストです。 このファイルにはデフォルトで 4 個までの SCC チップを指定できます。 さらに多くのチップを指定したければ `scc.c` の `&num;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) 用の設定ファイルの雛型が作られます。

##### チャンネルの設定

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

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

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

(訳注) 以下の記述はかなり不正確な部分があります。カーネル付属文書 `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 フラッグ。引数は整数。

##### ドライバーの使用方法

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

    # kissattach -s 4800 /dev/scc0 VK2KTJ

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

    attach asy scc0 0 ax25 scc0 256 256 4800

##### sccstat と sccparam

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

    # sccstat /dev/scc0

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

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

    # sccparam /dev/scc0 txtail 0x8

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

#### 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` の中でそのポートに割当てようとす る項目のそれと一致していなければなりません。

#### 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  ; ターゲットアドレス

### `/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 付きコールサインを重複しないように付ける理由なのです。

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

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

    # /usr/sbin/axparms -route add radio VK2XLZ VK2SUT

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

## 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 も使うことになります。

(訳注) 繰返しますが、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 秒毎になります。

## NET/ROM ポートの設定

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

### `/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 を初めとするプログラムによっ て使われます。

### `/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

### 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`) として起動するものです。

### 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` コマンドの行を追加しておき ましょう。

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

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

    # /usr/sbin/nrparms -nodes VK2XLZ-10 + #MINTO 120 5 radio VK2SUT-9

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

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

    # /usr/sbin/nrparms -routes radio VK2SUT-9 + 120

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

## 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 のそのルーティ ングに対するクオリティや退行値 を意味します。

## ROSE ポートの設定

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

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

### `/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 付きコールサイン を待受けおよび使用するようにしています。

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

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

    # rsattach rose

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

### 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

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

## 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 ペー ジを参照してください。 (訳注：マニュアルのある場所はディストリビューションによります。)

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

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 などの接続を受付ける標準のツール なので、これからその設定の仕方について説明しましょう。

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

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

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

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

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

ここで

&num;

  行の最初にある&num;はコメント。 ax25d プログラムは完全に無視する。

<ポート名>

  `/etc/ax25/axports`, `/etc/ax25/nrports`, `/etc/ax25/rsports` ファイルでそれぞれ指定された AX.25, NET/ROM, ROSE 各ポートの名称。 AX.25 ポートの場合、ポートの名前は `[]` で囲まれ、 NET/ROM ポートの場合、ポートの名前は `<>` で囲 まれ、ROSE ポートの場合、ポートの名前は `&lcub;&rcub;` で囲まれる。 この項目にはまた別の書き方が存在する。 それはポート名の頭に「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

    単なるマーカー。モードは設定されない。

<uid>

  接続を受けるために起動されるプログラムのユーザー ID。

<コマンド>

  起動されるコマンドのフルパス名。引数は指定しない。

<コマンド名>

  ps コマンドなどで実行中のコマンドとして表示される 名前。 (通常は<コマンド>と同じはず。ただしパス情報は含まれていない。)

<引数>

  <コマンド>の起動時に渡されるコマンドライン引数。以下の変数を使え ば引数として便利な情報を渡すことができる。

  &percnt;d

    接続要求を受信したポート名。

  &percnt;U

    接続したユーザーの SSID を含まないコールサイン。大文字。

  &percnt;u

    接続したユーザーの SSID を含まないコールサイン。小文字。

  &percnt;S

    接続したユーザーの SSID を含むコールサイン。大文字。

  &percnt;s

    接続したユーザーの SSID を含むコールサイン。小文字。

  &percnt;P

    接続要求を送ってきたリモートノードの SSID を含まないコールサイン。大文字。

  &percnt;p

    接続要求を送ってきたリモートノードの SSID を含まないコールサイン。小文字。

  &percnt;R

    接続要求を送ってきたリモートノードの SSID を含むコールサイン。大文字。

  &percnt;r

    接続要求を送ってきたリモートノードの SSID を含むコールサイン。小文字。

接続要求を受け付けたい AX.25, NET/ROM, ROSE それぞれのインターフェイス について上のような書式で書込む必要があります。

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

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

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

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

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

    # ax25d.conf for VK2KTJ - 02/03/97
    # この設定ファイルはあらかじめ定義された AX.25 ポートを使用する

    # <peer> Win T1  T2  T3  idl N2 <mode> <uid> <exec> <argv[0]>[<args....>]

    [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

    <netrom>
    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 パッケージに 含まれています) これも参考になるでしょう。

### ax25d を起動する

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

    # /usr/sbin/ax25d

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

## node の設定

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

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

### `/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

### `/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

### 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 プログラムを実行することになります。

### 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 に接続することになります。

## 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` ファイ ルにアカウントが存在しなければ自動的にアカウントを作成するようにも設定 できます。

### `/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 個です。 詳細は以下の通りです。

&num;

  コメントを表す

create

  この項目が `yes` の場合、axspawn は `/etc/passwd` ファイルにアカウントの無いユーザーが 接続して来ると自動的にユーザーアカウントを作成する。

guest

  create の設定が `no` であるとき、 アカウントを持っていない接続者に対してこの項目の名前がログイン名として 使われる。 通常は `ax25` や `guest` が使われる。

group

  `/etc/passwd` ファイルにアカウントの無い接続者に割当 てられるグループ名。

first_uid

  自動的に作成されるアカウントの最初のユーザー ID。

max_uid

  新規ユーザーに割当てられる最大のユーザー ID。

home

  新規ユーザーのホームディレクトリ (ログインディレクトリ) の設定。

shell

  新規ユーザーのログインシェルの設定。

associate

  この新規ユーザーがログイン後、新たに外に向けて AX.25 で接続を行うとき に、そのユーザー自身のコールサインを使うか、またはあなたのコールサイン を使うかを決める。

## pms の設定

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

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

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

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

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

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

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

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

### `/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 ペー ジで調べてください。

### PMS をテストする

PMS をテストするには以下のコマンドを使うといいでしょう。

    # /usr/sbin/pms -u vk2ktj -o vk2ktj

私のコールサインの代わりにあなたのコールサインを使って PMS を起動しま しょう。 引数は UNIX スタイルの改行を使って、ログインするユーザーが `vk2ktj` であることを意味しています。 外から接続したのと同じように PMS を使うことができます。

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

## 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 があるかのよう にすることができます。

## 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 と いう二つのアプリケーションプログラムがこの機能を提供しています。

### 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` 経由の接続に変換されます。

### 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 コマンドが取扱うことになります。

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

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

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

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

    # axparms -assoc vk2ktj terry

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

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

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

## APRS の設定

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

## `/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 接続のリストが書かれている。

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

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

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

### アドレスファミリー

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

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

### ヘッダファイル

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

AX.25 の場合

    #include <netax25/ax25.h>
    int s, addrlen = sizeof(struct full_sockaddr_ax25);
    struct full_sockaddr_ax25 sockaddr;
    sockaddr.fsa_ax25.sax25_family = AF_AX25

NET/ROM の場合

    #include <netax25/ax25.h>
    #include <netrom/netrom.h>
    int s, addrlen = sizeof(struct full_sockaddr_ax25);
    struct full_sockaddr_ax25 sockaddr;
    sockaddr.fsa_ax25.sax25_family = AF_NETROM;

ROSE の場合

    #include <netax25/ax25.h>
    #include <netrose/rose.h>
    int s, addrlen = sizeof(struct sockaddr_rose);
    struct sockaddr_rose sockaddr;
    sockaddr.srose_family = AF_ROSE;

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

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

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

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

## 設定のサンプル

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

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

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

(訳注) 以下の設定はやや特殊な例だと思います。無線 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 に関しては最低限のものだけ入っています。

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

この章のトンネルについての記述はいくらか賞味期限切れです。 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 <n8fow@hamgate.cc.wayne.edu>
    #
    #  このスクリプトは 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"

### 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` という名前の設定ファ イル一つだけで行ないます。

#### 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 ホストと一致している必要 があります。

#### `/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 <destcall> <destaddr> [フラッグ]
    #
    # 指定可能なフラッグ：
    #         b  - この経路でのブロードキャストの送信を許可する
    #         d  - この経路がデフォルト
    #
    route vk2sut-0 44.136.8.68 b
    route vk5xxx 44.136.188.221 b
    route vk2abc 44.1.1.1
    #
    #

#### 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

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

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

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

b

  キーワード「`broadcast`」で指定された送り先アドレスに一致す るトラフィックはこの経路を通じて送信される。

d

  いずれの経路にも一致しないパケットはこの経路を通じて送信される。

ブロードキャストフラッグを使えば複数の AXIP 接続先すべてに送るようなイ ンフォメーションの送信が実現できるので、とても便利です。 普通、AXIPの経路はポイント・トゥ・ポイントであり、「ブロードキャスト」 のようなパケットは扱えないものなのです。

### 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 したり、 またその逆方向もできるようになるでしょう。 もしうまくいかなかったら、設定に間違いがないかもう一度見直してください。 特に正しいアドレスを設定したかどうかや、またパイプデバイスを正しい順番 に設定したかどうか確認してください。

## 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 トラフィックのモニター

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

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

### パケット無線について

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

- American Radio Relay League

- Radio Amateur Teleprinter Society

- Tucson Amateur Packet Radio Group

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

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

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

- PI2 カードについての情報は Ottawa Packet Radio Group にあ ります。

- Baycom ハードウェアについての情報は Baycom Web Page にあります。

### 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 です。

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

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

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

## 謝辞

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

## フィードバック

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

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

## 配布条件

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から取得できる。

## 日本語訳について

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

2.0j

  - 翻訳：
  - 幸田あきひろ <coda@post.kek.jp>
  - 校閲：
  - 千旦裕司
  - Seiji Kaneko