IPSMを使うためにFreeBSDなどをインストールするために作ったマニュアルですが、一般的なネットワークの設定なども入っているので公開します。(ただし修正の途中です)

===設定マニュアル−ソフトウェア編(FreeBSD版)===

作成:1998年10月20日 JK1MLY・稲葉

0.はじめに

 新たな高速パケット通信として期待されるPRUG96プロジェクトにて、試作されたハードウェアとソフトウェアを使うためのドキュメントの1つです。

 非ノートタイプのAT互換機にFreeBSD 2.2.7Rをインストールし、IPSMとPFWLとRNAVIを動かすまでの方法をまとめてあります。PCカードのLANカードなどを使用しても動かすことは可能ですが、幾つかの設定が異なるため本ドキュメントではサポートしません。

 無線など複数の中継経路から適した経路を探索するシステムをAPFSと呼び、これを実現するためのソフトウェアとしてRNAVIが動きます。また無線機とのデータの受け渡しをするのがPFWLになります。システムの動作に関しては別にドキュメントがあるので、そちらを参照して下さい。

 下記に示したような一般的なAT互換機に、FreeBSD 2.2.7RをCD-ROMからインストールすることを前提に、本ドキュメントは書いています。他の環境でも動作可能ですのが、設定の一部などが異なる可能性があります。またLinuxに関してはPFWLとRNAVIを動かすことを別のドキュメントとして用意しています。

PC仕様

 CPU:K6-2-300M

 RAM:128M

 HDD:2G

 CD-ROM:ATAPI

 Ether:NE2000互換(ed1として検出)

略語

 IPSM:IP Shield Machineの略(ハードウェア)

 PFWL:Packet Forward for WireLess linkの略(ソフトウェア)

 RNAVI:Route NAVIgatorの略(ソフトウェア)

 APFS:Asymmetric Path Finding Systemの略(システム)

記述

 赤い文字・・・各自の設定で異なる入力

 イタリック・・コマンドラインからの入力

--

1.IPアドレスの割り振り

 このシステムはネットワークを構成する時に使うことになりますが、この時にIPアドレスと呼ばれるものが必要になります。このIPアドレスというのはネットワーク内で、論理的にパソコンなどを識別するのに使う4バイト」の番号で、各バイトをピリオドで区切って10進数で示します。

 このIPアドレスはIPアドレスを管理してる団体から正式に取得するか、下記に示すプライベートアドレスと呼ばれる中から使用することになります。後者の場合にはインターネットに対して直接に接続せず、また実験を行う組織のネットワーク内で問題が無ければ自由に使用できます。

プライベートアドレス

10.0.0.0 - 10.255.255.255

172.16.0.0 - 172.31.255.255

192.168.0.0 - 192.168.255.255

 現在PRUGで使用しているプライベートアドレスは下記URLを参考にして下さい。

http://www.jouban.prug.or.jp/exp/%7Ekazu/Amprnet/private.html

 本ドキュメントでは制御するIPSMが1台の場合の例として、以下のようなIPアドレスを割り振っています。

接続するネットワーク

172.16.114.0

設定するマシン

172.16.114.101

接続するIPSM

172.16.114.102

APFSルータ

192.168.41.100

設定するマシンのトンネル

192.168.41.101

--

2.FreeBSDのインストール

 以下の例は他のOSとの共存などは行わない設定ですので、必要なデータが入ったPCなどは使用しないで下さい。

 インストールの概略は以下の通りですが、FreeBSDをインストールことの無い方は、入門書などを見ながら作業する方が良いでしょう。

・CD-ROMに含まれるファイルからブート用のフロッピーを作成します。

・フロッピーからブートします。

・Kernel Configuration Menuはskipを選択します。

 (IRQの設定などが必要な場合を除く)

・インストール方法はNoviceを選択します。

・FDISKの設定はAを入力して全てをFreeBSD(165)に割り振ります。

・BootMgrを選択します。

・Disklabel Editorの設定はAを入力して自動的に割り振ります。

・Choose Distributionsでkern-Developerを選択します。

・Do wish to install DES..はNOで次に進みます。

・ports collectionはNOで次に進みます。

・Choose Distributionsでcustomを選択し内容を確認します。

 (CD-ROMからインストール)

・イーサネットの設定を行います。

・時計の設定を行います。

・IP gatewayは行うを選択します。

・groupおよびuserを作ります。

・rootのパスワードを設定します。

・全部の設定が終了したらフロッピーを抜いてリブートします。

・/stand/sysinstallを起動します。

・4枚目のCD-ROMを入れて下記のpackageのインストールします。

netの下にあるisc-dhcp2.1.1.tgz

--

3.カーネルの再構築

 pfwldはトンネルデバイスを使用して通信を行うため、トンネルデバイスがカーネルに組み込まれている必要があります。このため場合によってはカーネルを再構築する必要があります。概略は以下の通りですが、カーネルを作り直したことの無い方は、入門書などを見ながら作業する方が良いでしょう。

 トンネルデバイスは、キャラクタデバイスへの入出力をネットワークデバイスの出入力と見なし、 あたかもネットワークインターフェイスカードのように処理します。

 トンネルデバイスが使えるようにするため、カーネルの設定ファイルがあるディレクトリ/usr/src/sys/i386/confに移動します。ここにある現在の設定ファイルをコピーして、新しい設定ファイル(以下<NEW_KERNEL>、以下の例ではPRUG96)を作ります。

cd /usr/src/sys/i386/confcp GENERIC PRUG96vi PRUG96

 ファイルをviなどのエディタで開きますと、終わりの方にあるpseudo-deviceの設定があります。この中に下記のデバイスが含まれるか確認して下さい。

pseudo-device	tun	4

 上記の例では4つのトンネルデバイスが使用可能ですが、IPSMを使って通信するのみなら1でも大丈夫ですが、IIJ-PPPなどを使用しますと足りなくなります。また以後の設定でtun1を使用していますので、本マニュアルと同一の設定にするためには4として下さい。

 pfwldの使用には関係ありませんが、通信しているパケットをモニタするためと、dhcpを使用するため、下記のデバイスが含まれるかも確認して下さい。

pseudo-device bpfilter 4

 dhcpd が 1個、tcpdump で1個なので2以上であれば大丈夫です。以上で設定ファイルPRUG96の設定は終了です。

 ついでに不要なドライバなどを削除しておくと、カーネルのサイズを小さくできます。またイーサネットカードのIRQなども必要に応じて変更しておくと良いでしょう。

設定ファイルの一部(例)

pseudo-device	looppseudo-device	etherpseudo-device	logpseudo-device	sl	1pseudo-device	bpfilter	4#pseudo-device	ppp	1pseudo-device	tun	4pseudo-device	pty	16pseudo-device	gzippseudo-device	vn

 次にカーネルをコンパイルしますが、作成の手順は次のようになります。

config PRUG96

PRUG96に新しい設定ファイルを指定して下さい)

cd ../../compile/PRUG96

(ディレクトリPRUG96はconfigを実行した時に作られます)

make dependmake

(使用するPCの性能により時間が必要な場合があります)

make install

(もし正常に動きませんと困るので、古いカーネルは消さないで下さい)

 以上で新しいカーネルが作られたので、リブートして新しいカーネルが動くことを確認して下さい。途中でエラーなどが発生した場合には、入門書やhttp://www.jp.freebsd.org/などを参考にして下さい。もし再起動ができなかったらboot:と出たところで、kernel.oldと入力して古いカーネルで立ち上げて下さい。

 新たに作ったデバイスが使えるよう、下記のようにディレクトリ/devに移動し、MAKEDEVを実行して下さい。

cd /devsh MAKEDEV tun1sh MAKEDEV tun2sh MAKEDEV tun3sh MAKEDEV bpf1sh MAKEDEV bpf2sh MAKEDEV bpf3

 たぶん作成済みですが、もし必要なら下記も実行して下さい。

sh MAKEDEV tun0sh MAKEDEV bpf0

 正しく作成されていれば、lsコマンドで見ることができます。

ls -l /dev/tun*ls -l /dev/bpf*

 イーサネットカードのIRQなどがコンパイルした値と異なる時には、boot:と出たところで-cと入力しますと設定用のユーティリティが動きます。表示される指示に従ってパラメータを変更して下さい。

--

4.rc.confの設定

 pfwldを動かすマシンのホスト名やIPアドレスを、下記を参考に/etc/rc.confに設定します。赤い文字の部分は各々で合わせて下さい。

/etc/rc.confの一部

### Basic network options: ###hostname="ina.jk1mly.prug.net"

・・・ホスト名をinaに設定

   ドメイン名をjk1mly.prug.netに設定

nisdomainname="NO"firewall="NO"tcp_extensions="YES"network_interfaces="lo0 ed1"

・・・ループバックとイーサネットカードを使用

ifconfig_lo0="inet 127.0.0.1"ifconfig_ed1="inet 172.16.114.101  netmask 255.255.255.0"

・・・172.16.114.101にIPアドレスを設定

   ネットマスクを255.255.255.0に設定

### Network routing options: ###defaultrouter="NO"

・・・デフォルトルータは特に指定し無し

static_routes="ed1"	

・・・ed1を使った固定ルーティング

route_ed1="-net 224.0.0.0 -iface ed1"

・・・マルチキャストをed1に出力

        一般的なマルチキャスト(1対多の送信)用の IP アドレス           224.0.0.1     サブネット上の全てのホスト           224.0.0.2     サブネット上の全てのルータ           224.0.0.4     すべての DVMRP ルータ           224.0.0.5     すべての OSPF ルータ           224.0.0.9     すべての RIP2 ルータ           224.0.0.13    すべての PIM ルータ           224.0.0.14    すべての CBT ルータ           224.0.1.1     Network Time Protocol (NTP)gateway_enable="YES"

・・・IPでのゲートウェイを可能

--

5.hostsの設定

 通信を行うホストやネットワークのIPアドレスは、/etc/hostsおよび/etc/networksに記述しますが、今回はDNSを使用するので、ファイルhostsには設定中の1台を加えるのみとします。赤い文字の部分は各々で合わせて下さい。

 もしDNSを使用しない時には、/etc/host.confに含まれるbindの行を#でコメントアウトしておく必要があります。この場合には本マニュアルの設定方法と異なることになります。

/etc/hostsの例

127.0.0.1		localhost.prug.tama.or.jp localhost172.16.114.101	ina.jk1mly.prug.net	ina

・・・IPアドレス,ホスト名,別名の順で記述

--

6.routedの設定

 pfwldはRIPV2に対応しており、無線回線の状態に合わせたルーティングを、実現することが可能です。これはroutedあるいはgatedのようなプログラムにより、ルーティングテーブルと呼ばれる経路情報を更新することで、自動的に利用可能な経路から選択します。

 RIPは動的にルーティング情報を伝達する技術で、RIPV2ではサブネットマスクも同時に送ります。

 このシステムを使った区間だけに限った経路の制御であれば、rnavidにより自動的に通信可能な経路が選択され、AX25などを用いた別の経路が存在しない場合には動かさなくても良いですが、今後を考えてroutedを動かすものとします。

 FreeBSDの場合には既にroutedが入っており、/etc/rc.confにてrouter_enable="YES"にしますと、起動時にroutedが自動的に動きます。また幾つかのオプションを指定することも可能です。

/etc/rc.confの一部

### Network routing options: ###router_enable="YES"

・・・自動的に経路制御を実施

router="routed"

・・・routedをルータに使用

router_flags="-s"

・・・強制的にルーティング情報を教える

 またripv2だけを使用したいので、/etc/gatewaysにて指定を行います。

/etc/gatewaysの例

if=tun1 ripv2if=ed1 ripv2

 もし全てをダイナミックなルーティングにしたくない場合もあるかと思いますが、その時には/etc/gatewaysに経路情報を書くことで起動時に読み込ませることができます。詳しくはmanroutedとしてマニュアルを見て下さい。

--

7.DHCPの設定

 IPSMに対するIPアドレスの自動割り当てや、IPSMのファームウェアを転送するために、DHCPと呼ばれる機能を利用します。ここで設定する内容によりWindows95やMacintoshなどのパソコンを接続する場合、ネットワークの設定を自動化させることなどが可能になります。赤い文字の部分は各々で合わせて下さい。

 既にFreeBSDのインストール時に、pkg_addによりisc-dhcpが組み込まれてますので、下記のような設定ファイルを作成するのみとなります。この設定はisc版のdhcpを利用した場合でありwide版では異なるので注意して下さい。

 FreeBSD2.2.7Rでは4枚目のCD-ROMを入れて、/packages/net/isc-dhcp2.b1.1.tgzをインストールして下さい。

/etc/dhcpd.confの例

subnet 172.16.114.0 netmask 255.255.255.0 {

・・・規定するアドレスの範囲を指定

  range 172.16.114.230 172.16.114.239;

・・・自動的に割り振るアドレスの範囲を指定

   (他のパソコンなどに割り当てるアドレス)

  default-lease-time 43200;

・・・使用可能な時間を秒で指定

  max-lease-time 86400;

・・・使用可能な最大時間を秒で指定

  option subnet-mask 255.255.255.0;

・・・サブネットマスク

  option broadcast-address 172.16.114.255;

・・・ブロードキャストアドレス

  option routers 172.16.114.101;

・・・デフォルトルート

  option domain-name-servers 172.16.114.101;

・・・DNSのIPアドレス

  option domain-name "jk1mly.prug.net";

・・・ドメイン名

}

・・・ここまではアドレスを自動的に割り振らない場合には不要です

host ipsm1 {

・・・固定的な設定

 hardware ethernet 00:60:52:05:c8:d7;

・・・IPSMのMACアドレス

 fixed-address 172.16.114.102;

・・・決まったIPアドレスを割り振る

 filename "/tftpboot/ssipsm.v1.36.bin";

・・・起動時に送るファイルの指定

   (実際のファイル名に合わせる)

 option subnet-mask 255.255.255.0;

・・・サブネットマスク

 option broadcast-address 172.16.114.255;

・・・ブロードキャストアドレス

 option routers 172.16.114.101;

・・・デフォルトルート

}

 dhcpが使用しているIPアドレスなどの情報を格納するため、下記のコマンドでディレクトリ/var/dbに、ファイルdhcpd.leasesを作ります。

touch /var/db/dhcpd.leases

--

8.tftpの設定

 ファイルの転送方法としてtftpが使用できるようにする必要があります。/etc/inetd.confファイルを開き、下記のようなtftpdに関する記述があるか確認し、無い場合には設定を追加します。設定の詳細はman inetd.confやman tftpdなどを見て下さい。実際にはコメントアウトされているだけなので、#を取るだけになると思います。

<inetd.confの一部>

tftp	dgram	udp	wait	nobody	/usr/libexec/tftpd	tftpd /tftpboot

 次にディレクトリ/tftpbootを作り、起動時に転送するIPSMのプログラムssipsm.v1.36.binをコピーします。ssipsm.v1.36.binは、船田さんのページから入手できます。

mkdir /tftpbootcp ssipsm.v1.36.bin /tftpboot

--

9.DNSの設定

 DNSを使用するには幾つかの設定が必要ですが、このうち今回の実験で必要な部分のみを以下に示します。ここに示す以外のなどはmannamedにて確認して下さい。

 ホスト名からIPアドレスを解決する時の手段として、dnsの答え->hostsファイルの順になるよう、/etc/host.confを設定します。

/etc/host.conf

# Default is to use the nameserver firstbind# If that doesn't work, then try the /etc/hosts filehosts# If you have YP/NIS configured, uncomment the next line# nis

 FreeBSDの場合には既にnamedが入っており、/etc/rc.confにてnamed_enable="YES"にしますと、起動時にnamedが自動的に動きます。

/etc/rc.confの一部

### Network daemon (miscellaneous) & NFS options: ###named_enable="YES"              # Run named, the DNS server (or NO).named_program="/usr/sbin/named" # named program, in case we want bind8 instead.named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).

 DNSの機能を使うための設定として、ネームサーバのアドレスなどを、/etc/resolv.confに書きます。赤い文字の部分は各々で合わせて下さい。

/etc/resolv.confの例

domain	jk1mly.prug.net

・・・ドメイン名を指定

nameserver	127.0.0.1・・・ネームサーバのアドレスを指定

   (後ろに続けて書くとセカンダリが指定できる)

 起動するネームサーバの動作を/etc/namedb/named.bootに書きます。

/etc/namedb/named.bootの例directory	/etc/namedb

・・・データを記述したファイルを置くディレクトリ

cache     .				named.root

・・・キャッシュ

primary   localhost			localhost.zone

・・・ループバックの正引き

primary   0.0.127.IN-ADDR.ARPA		localhost.rev

・・・ループバックの逆引き

primary  	jk1mly.prug.net			jk1mly.zone

・・・自ドメイン内の正引き

primary  	114.16.172.IN-ADDR.ARPA		jk1mly.rev・・・自ドメイン内の逆引き

 ルートネームサーバの指定を/etc/namdb/named.rootに書きます。

/etc/namdb/named.rootの例

.		3600000		IN	NS	localhost.localhost.	3600000		A	127.0.0.1 インターネットに接続しているなら、もともと下記のような設定が書かれているので、そのままにして下さい。; formerly NS.INTERNIC.NET;.                        3600000  IN  NS    A.ROOT-SERVERS.NET.A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4(以下略)

 正・逆引きに使う情報の記述をします。

/etc/namdb/jk1mly.zoneの例

@	IN	SOA	dns.jk1mly.prug.net.	admin.jk1mly.tama.prug.or.jp. (

・・・primaryであることと連絡先を示す

		1998052900	;Serial

・・・変更したら必ず大きな値に直す

		3600		;Refresh900		;Retry3600000		;Expire3600	)	;Minimumjk1mly.prug.net.			IN	NS	dns.jk1mly.prug.net.

・・・jk1mly.prug.netのネームサーバ

jk1mly.prug.net.		IN	MX	10	po.jk1mly.prug.net.

・・・メールを送るホスト

mly-net.prug.net.			IN	A	172.16.114.0ina.jk1mly.prug.net.			IN	A	172.16.114.101ipsm1.jk1mly.prug.net.			IN	A	172.16.114.102

・・・正引きの指定

po.jk1mly.prug.net.			IN	CNAME	ina.jk1mly.prug.net.dns.jk1mly.prug.net.			IN	CNAME	ina.jk1mly.prug.net.・・・別名の指定

/etc/namdb/jq1vie.revの例

@	IN	SOA	dns.jk1mly.prug.net.	admin.jk1mly.prug.net. (

・・・primaryであることと連絡先を示す

		1998052500	;Serial

・・・変更したら必ず大きな値に直す

		10800		;Refresh1800		;Retry3600000		;Expire259200	)	;Minimum114.16.172.in-addr.arpa.	IN	NS	dns.jk1mly.prug.net.

・・・172.16.114.xxのネームサーバ

0.114.16.172.in-addr.arpa.	IN	PTR	mly-net.jk1mly.prug.net.101.114.16.172.in-addr.arpa.	IN	PTR	ina.jk1mly.prug.net.102.114.16.172.in-addr.arpa.	IN	PTR	ipsm1.jk1mly.prug.net.

・・・172.16.114.xxの逆引き

/etc/namdb/localhost.zoneの例

@	IN	SOA	dns.jk1mly.prug.net.	admin.jk1mly.prug.net. (1998091500	;Serial10800		;Refresh1800		;Retry3600000		;Expire259200	)	;Minimumlocalhost.			IN	NS	localhost.localhost.			IN	A	127.0.0.1

/etc/namdb/localhost.revの例

@	IN	SOA	dns.jk1mly.prug.net.	admin.jk1mly.prug.net. (1998091500	;Serial10800		;Refresh1800		;Retry3600000		;Expire259200	)	;Minimum0.0.127.in-addr.arpa.	IN	NS	localhost.1.0.0.127.in-addr.arpa.	IN	PTR	localhost.

--

10.IPSMの情報

 IPSMに使用するNE2000互換イーサネットカードのMACアドレスを知る必要があります。このため下記の方法により情報を得て下さい。

 MACアドレスを含めてイーサネットをモニタするため、tcpdumpコマンドに-eオプションを使用します。

tcpdump -i ed1 -e

 上の例にあるed1 はデバイス名の一例なので、IPSMを接続するportに使用するデバイスを指定して下さい。

 次にIPSMの電源を入れますとbootpのためのpacketが流れ、これが下記の例のようにtraceされます。

22:35:37.525446 0:60:52:5:c8:d7 Broadcast ip 370: 0.0.0.0.bootpc > 255.255.255.255.bootps: [|bootp]

 この中にある0:60:52:5:c8:d7の部分が、IPSMのMACアドレスになるのでメモしておきます。あとでdhcpの設定を行う際に使用します。

 IPSMの動作が確実でない場合には、一時的にPCに実装して調べる方が良いかもしれません。IPSMが動いていれば、電源を入れた時にイーサネットカードのLEDが点滅し、通信するのが分かるかと思います。イーサネットカードに送信/受信LEDがないものもありますが、その時にはHUBのLEDなどを代わりに見て下さい。

--

11.pfwld,rnavidのインストール

 pfwld-1.40.tar.gzとrnavid-1.40.tar.gz入手し、これらをtarコマンドによって展開し、コンパイルして作ったpfwldとrnavidを使用します。

ファイルの入手

 pfwld-1.40.tar.gzrnavid-1.40.tar.gzを、PRUGのftpサーバなどから入手します。PRUGのサーバの場合には/pub/hamradio/PRUG96/APFS/にあります。

ファイルの展開

 入手したファイルを下記のコマンドにより展開します。

tar xvfz pfwld-1.40.tar.gztar xvfz rnavid-1.40.tar.gz

 これによりPFWLDとRNAVIDという2つのディレクトリができます。

コンパイル

 次にpfwldとrnavidをコンパイルします。コンパイルは各々のディレクトリでmakeするのみです。

cd PFWLDmakecd ../RNAVIDmakecd ..

ファイルのコピー

 でき上がったバイナリpfwldとrnavidは、ディレクトリ/usr/local/sbinにコピーしておきます。

cp PFWLD/pfwld /usr/local/sbincp RNAVID/rnavid /usr/local/sbin

--

12.pfwld,rnavidの設定

 pfwld-1.40.tar.gzおよびrnavid-1.40.tar.gzを展開して得られたファイルに、設定例としてファイルpfwld.conf-sampleとrnavid.conf-sampleが含まれてます。これをディレクトリ/etcの下にコピーし、書き込みが可能なようにした後に、viなどのエディタで設定ファイルpfwld.confとrnavid.confを編集して、使用する環境に合わせて下さい。

cp PFWLD/pfwld.conf-sample /etc/pfwld.confcp RNAVID/rnavid.conf-sample /etc/rnavid.confcd /etcchmod 644 pfwld.connfchmod 644 rnavid.conf

 各項目の設定内容は下記のようになります。

/etc/pfwld.confの例

# sample server configuration for FreeBSDpfwl:sa=192.168.41.200:da=192.168.41.201:dev=tun1:ipsm:un=0:ha=172.16.114.102:sid=PRUG96-0:bw=808000:

sa=192.168.41.200・・・トンネルの入口側アドレスまたはホスト名

da=192.168.41.201・・・トンネルの相手先アドレスまたはホスト名

ha=172.16.114.102・・・IPSMのIPアドレスまたはホスト名

dev=tun1・・・トンネルデバイスのデバイス名

sid=PRUG96-0・・・無線で使用するコールサイン

bw=808000・・・使用する無線回線の伝送速度

 複数のIPSMを接続する場合には、pfwl行にその数を追加すると共に、ipsm行を追加して下さい。下記は2台の例です。

pfwl:sa=192.168.41.200:da=192.168.41.201:dev=tun1:cl=2:ipsm:un=0:ha=172.16.114.102:sid=PRUG96-0:bw=808000:ipsm:un=1:ha=172.16.114.103:sid=PRUG96-1:bw=808000:

/etc/rnavid.conf

rip:mi=4:mo=4:local:da=192.168.41.200:nm=255.255.255.254:

da=192.168.41.200・・・経路情報として流すネットワークアドレスの指定

nm=255.255.255.254・・・IPSMとの通信に使用するネットワークのネットマスク

mi=4・・・metricが4以上の経路情報は無視

mo=4・・・metricを4として経路情報を出力

 local 行は複数設定できますので、routed 等を動かさない場合は自分がアナウンスすべきネットワークを登録する事により、他のネットワークへのgateway が可能となります。例えば上記に加えて下記のlocal行を書くと、172.16.114.0/24のネットワークに対する、固定的なルーティングとなります。

local:da=172.16.114.0:nm=255.255.255.0:

--

13.自動スタート

 起動時にディレクトリ/usr/local/etc/rc.dにあるコマンドは自動的に動作するので、dhcpd,pfwld,rnavidが立ち上げ時に自動的に動き始めるよう、下記のようなファイルを作ります。

dhcpd.shの例

#!/bin/sh/usr/local/sbin/dhcpd

pfwld.shの例

#!/bin/sh/usr/local/sbin/pfwld

rnavid.shの例

#!/bin/sh/usr/local/sbin/rnavid

 これらのファイルが実行できるよう、chmodコマンドで属性を変更しておきます。

chmod 755 dhcpd.shchmod 755 pfwld.shchmod 755 rnavid.sh

--

14.ルーティングの確認

 netstatコマンドで相手局へのルーティングが正しいか確認できます。

<実行例>

% netstat -rnRouting tablesInternet:Destination        Gateway            Flags     Refs     Use     Netif Expire127.0.0.1          127.0.0.1          UH          3      401       lo0172.16.113/24      192.168.41.201     UGc         0      183      tun1172.16.114/24      link#1             UC          0        0 172.16.114.101     0:90:cc:a0:1d:e3   UHLW        0        4       lo0172.16.114.102     0:60:52:5:c8:d7    UHLW        0      200       ed1   1081192.168.41.100/31  192.168.41.201     UGc         0        0      tun1192.168.41.200     127.0.0.1          UH          0        0       lo0192.168.41.201     192.168.41.200     UH          3        0      tun1203.139.10.176/29  192.168.41.201     UGc         0        0      tun1224/8              link#1             UCS         0        0 224.0.0.1          1:0:5e:0:0:1       UHLW        1        4       ed1224.0.0.2          1:0:5e:0:0:2       UHLW        0        2       ed1224.0.0.9          1:0:5e:0:0:9       UHLW        2       27       ed1

 pingコマンドで相手局と通信できることが確認できます。

<実行例>

% ping -c 3 172.16.113.101

・・・172.16.113.101(相手)に対して3回チェック

PING 172.16.113.101 (172.16.113.101): 56 data bytes64 bytes from 172.16.113.101: icmp_seq=0 ttl=253 time=102.661 ms

・・・172.16.113.101(相手)から約100msで返事がきた

3 packets transmitted, 3 packets received, 0% packet loss

・・・パケットの送信を3回して全てに返事がきた

--

16.トラブルシュート

 通信できないときには順にトレースしてみましょう。tcpdump -i ed1 -eとしておき、IPSMの電源を入れると、下記のようにbootpが動いてIPSMにデータを送り始めます。現れる数値やホスト名は違うでしょうが、同じような通信がモニタできればIPSMの立ち上げは正常と考えて良いでしょう。

<tcpdumpによるモニタ例>

22:35:37.525446 0:60:52:5:c8:d7 Broadcast ip 370: 0.0.0.0.bootpc > 255.255.255.255.bootps: [|bootp]22:35:37.526692 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 ip 342: ina.jk1mly.prug.net.bootps > 255.255.255.255.bootpc: Y:ipsm1.jk1mly.prug.net S:ina.jk1mly.prug.net [|bootp] [tos 0x10]22:35:39.709587 0:60:52:5:c8:d7 Broadcast arp 64: arp who-has ina.jk1mly.prug.net tell ipsm1.jk1mly.prug.net22:35:39.709629 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 arp 64: arp reply ina.jk1mly.prug.net is-at 0:90:cc:a0:1d:e322:35:40.031442 0:60:52:5:c8:d7 0:90:cc:a0:1d:e3 ip 77: ipsm1.jk1mly.prug.net.tftp > ina.jk1mly.prug.net.tftp: 35 RRQ "/tftpboot/ssipsm.v1.36.b" [|tftp]22:35:40.087267 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 ip 558: ina.jk1mly.prug.net.nim > ipsm1.jk1mly.prug.net.tftp: 516 DATA block 122:35:40.387359 0:60:52:5:c8:d7 0:90:cc:a0:1d:e3 ip 64: ipsm1.jk1mly.prug.net.tftp > ina.jk1mly.prug.net.nim: 4 ACK block 1

 次に相手局に対して送信するため、ping -i 10 192.168.14.1として10秒おきに送信しておきます。これがトンネルデバイスを通って送信されるかを、tcpdump-i tun1としてモニタして下記のようなら、正しく送っています。

22:36:32.996019 192.168.41.200 > 172.16.113.101: icmp: echo request22:36:33.143623 172.16.113.101 > 192.168.41.200: icmp: echo reply22:36:34.013630 192.168.41.200 > 172.16.113.101: icmp: echo request22:36:34.106877 172.16.113.101 > 192.168.41.200: icmp: echo reply

 これがイーサネット側に出ているかは、tcpdump -i ed1としてモニタして下記のようなら、正しく送っています。

22:36:33.014560 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 ip 1450: ina.jk1mly.prug.net.8649 > ipsm1.jk1mly.prug.net.8649: udp 140822:36:33.121651 0:60:52:5:c8:d7 0:90:cc:a0:1d:e3 ip 1450: ipsm1.jk1mly.prug.net.8649 > ina.jk1mly.prug.net.8649: udp 140822:36:33.128952 0:60:52:5:c8:d7 0:90:cc:a0:1d:e3 ip 1450: ipsm1.jk1mly.prug.net.8649 > ina.jk1mly.prug.net.8649: udp 140822:36:34.014607 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 ip 1450: ina.jk1mly.prug.net.8649 > ipsm1.jk1mly.prug.net.8649: udp 140822:36:34.106044 0:60:52:5:c8:d7 0:90:cc:a0:1d:e3 ip 1450: ipsm1.jk1mly.prug.net.8649 > ina.jk1mly.prug.net.8649: udp 140822:36:35.024614 0:90:cc:a0:1d:e3 0:60:52:5:c8:d7 ip 1450: ina.jk1mly.prug.net.8649 > ipsm1.jk1mly.prug.net.8649: udp 1408

 自動的に必要なプログラムが動いているか、ps -axとしてプロセスを確認します。

 下記は一例なのでPIDなどは異なっていても問題ありませんし、実際には下記以外のプロセスも表示されます。

<psコマンドの実行例>

  PID  TT  STAT      TIME COMMAND   87  ??  Is     0:00.06 named -b /etc/namedb/named.boot  113  ??  Is     0:00.11 inetd  189  ??  Ss     0:00.18 /usr/local/sbin/pfwld  191  ??  Ss     0:00.09 /usr/local/sbin/rnavid  193  ??  Is     0:00.07 /usr/local/sbin/dhcpd  202  ??  Ss     0:00.05 /sbin/routed

--

付1.pfwld-1.40.tar.gzとrnavid-1.40.tar.gzの中身

pfwld-1.40.tar.gzdrwxr-xr-x shin/users        0 Oct 13 00:21 1998 PFWLD/-r--r--r-- shin/users    57019 Oct  5 23:00 1998 PFWLD/ipsmio.c-r--r--r-- shin/users     6839 Oct  7 00:41 1998 PFWLD/sockio.c-r--r--r-- shin/users    16155 Oct  7 00:41 1998 PFWLD/rlp.c-r--r--r-- shin/users    11401 Oct  2 18:20 1998 PFWLD/ipv4.c-r--r--r-- shin/users    13064 Oct  7 00:41 1998 PFWLD/main.c-r--r--r-- shin/users     5187 Oct  7 00:41 1998 PFWLD/rnio.c-r--r--r-- shin/users    11434 Oct  7 09:09 1998 PFWLD/pktfilter.c-r--r--r-- shin/users     5124 Sep 30 01:36 1998 PFWLD/tunio.c-r--r--r-- shin/users     4257 Sep 30 01:47 1998 PFWLD/slio.c-r--r--r-- shin/users     5903 Oct  3 20:23 1998 PFWLD/icmp.c-r--r--r-- shin/users     2719 May 19 09:23 1998 PFWLD/ipsmio.h-r--r--r-- shin/users     1905 May 19 09:23 1998 PFWLD/sockio.h-r--r--r-- shin/users     3672 Oct  7 00:41 1998 PFWLD/rlp.h-r--r--r-- shin/users     2331 Oct  7 00:41 1998 PFWLD/ipv4.h-r--r--r-- shin/users     3331 Oct 13 00:20 1998 PFWLD/config.h-r--r--r-- shin/users     2118 May 19 09:23 1998 PFWLD/rnio.h-r--r--r-- shin/users     3312 Sep 30 01:36 1998 PFWLD/pktfilter.h-r--r--r-- shin/users     2008 May 19 09:23 1998 PFWLD/tunio.h-r--r--r-- shin/users     1963 May 19 09:23 1998 PFWLD/slio.h-r--r--r-- shin/users     2123 Oct  2 18:19 1998 PFWLD/icmp.h-r--r--r-- shin/users     5154 Oct 13 00:20 1998 PFWLD/README.pfwld-r--r--r-- shin/users     2359 Oct 13 00:20 1998 PFWLD/CHANGES.pfwld-r--r--r-- shin/users      313 Oct  3 14:26 1998 PFWLD/pfwld.conf-sample-rwxr-xr-x shin/users       94 May 17 11:46 1998 PFWLD/pfwld.reload-rw-r--r-- shin/users     1658 May 19 09:57 1998 PFWLD/LICENSE-r--r--r-- shin/users     2454 Oct  3 15:16 1998 PFWLD/Makefile-r--r--r-- shin/users     2699 Oct  5 23:43 1998 PFWLD/pfwld.conf-templete-JPrnavid-1.40.tar.gzdrwxr-xr-x shin/users        0 Oct 13 00:25 1998 RNAVID/-r--r--r-- shin/users     6035 May 19 09:33 1998 RNAVID/sockio.c-r--r--r-- shin/users     9692 Oct 13 00:24 1998 RNAVID/main.c-r--r--r-- shin/users    17508 Oct  6 02:11 1998 RNAVID/table.c-r--r--r-- shin/users    14455 Oct  6 02:11 1998 RNAVID/ipv4.c-r--r--r-- shin/users     3110 May 19 09:33 1998 RNAVID/monitor.c-r--r--r-- shin/users     1859 May 19 09:33 1998 RNAVID/sockio.h-r--r--r-- shin/users     2751 Oct 13 00:24 1998 RNAVID/config.h-r--r--r-- shin/users     2907 May 19 09:33 1998 RNAVID/rlp.h-r--r--r-- shin/users     2421 May 19 09:33 1998 RNAVID/table.h-r--r--r-- shin/users     3175 May 19 09:50 1998 RNAVID/ipv4.h-r--r--r-- shin/users     1918 May 19 09:33 1998 RNAVID/monitor.h-r--r--r-- shin/users     3527 Oct 13 00:25 1998 RNAVID/README.rnavid-r--r--r-- shin/users     1281 Oct 13 00:23 1998 RNAVID/CHANGES.rnavid-r--r--r-- shin/users      120 Mar 31 02:02 1998 RNAVID/rnavid.conf-sample-r-xr-xr-x shin/users      629 May 15 01:06 1998 RNAVID/rnavid.cgi-rwxr-xr-x shin/users       95 May 17 11:51 1998 RNAVID/rnavid.reload-rw-r--r-- shin/users     1658 May 19 09:57 1998 RNAVID/LICENSE-r--r--r-- shin/users     1109 Oct  3 15:14 1998 RNAVID/rnavid.conf-templete-JP-r--r--r-- shin/users     2934 Oct  3 15:14 1998 RNAVID/Makefile


--

付2.RNAVIの出力レポート

 rnavidやpfwldは実行時に-vオプションを指定すると、動作状況を起動したコンソールに出力します。このうちrnavidのレポートには伝送状況がありますが、その概略は下記のようになります。

<pfwldのレポート例>

Send a packet, size:201/936

・・・自局が送信したパケットに含まれるデータとパケットのサイズ

Packet received from JK1MLY -10 7 / 9, errors 10・・・JK1MLY-10から受信した9つ目の受信パケットで、その中で廃棄しなかった7つ目のパケットを示す。   この局との通信で今までに含まれているエラーは10個である。(前パケットの積算)Readability Report: Receiver JK1MLY -10 , BW 808000, entry 2・・・相手局は帯域が808000bpsで2局分の情報を持っている。JK1MLY -10, heard -1 , sent 0, errors 0・・・1局目はJK1MLY-10で、自局なのでheard, sent, errorsは情報が無い。JK1MLY -0, heard 18 , sent 21, errors 14・・・2局目はJK1MLY-0で、今までにパケットを受信したのは18回、送信したのは21回である。受信したパケットに含まれたエラーの積算は14である。

<rnavidのレポート例>

ARP table Sun Oct 18 22:37:59 19980:        -0   c0a829c8 fffffffe, ttl -1, entered 22:27:27, permanent1:        -0   ac107200 ffffff00, ttl -3, entered 22:37:47, expiration 22:40:472: JK1MLY -10  c0a82964 fffffffe, ttl 15, entered 22:39:11, expiration 22:47:513: JK1MLY -10  ac107100 ffffff00, ttl 15, entered 22:39:11, expiration 22:47:514: JK1MLY -10  cb8b0ab0 fffffff8, ttl 15, entered 22:39:11, expiration 22:47:51

・・・自分のIPアドレスほか

   コールサインが入って無い、ttlが-1なのは自局であり、 JK1MLY -10が無線経由で受信した局の情報です。Hexの数値はネットワークアドレスとサブネットマスクを示します。

Name table Sun Oct 18 22:37:59 19980: PRUG96 -0   local, expiration 22:39:36, ttl 161: JK1MLY -10  radio, expiration 22:41:51, ttl 15

・・・自分のコールサインほか

   この例ではJK1MLY-10が無線経由で届いてます

Line Quality table Sun Oct 18 22:37:59 1998         R  0       R  1   S  0: +1.0000/16  1.0000/15S  1:  1.0000/16 +1.0000/15・・・通ったパケットの状態

   通信可能な全ての局との状態を表(マトリクス)で示します

   数値はrate(1-エラーレート)とTTL(16−中継局数)

   値の前に*がある場合は十分なデータが無い状態を示します

--

付3.APFSルータ

 このシステムではトンネルデバイスを使い、実体の無いルータが動いており、設定したUNIXマシンとAPFSルータ,IPSMが下記のようなイメージで論理的に接続されています。

 Ethernet172.16.114.0     |     |     |  172.16.114.101       192.168.41.100         172.16.114.102     |      +--------+  tunnel  +-----------+        +--------+     +------|  UNIX  |----------|APFS router|------->|  IPSM  |     |      +--------+          +-----------+        +--------+     |         192.168.41.101          (192.168.41.100)

--

付4.最新版の入手

 pfwld,rnavidなどのソフトウェア、IPSMのファームウェア、各種のドキュメントなどは下記のURLから辿ることで、最新版の入手が可能になっています。

http://www.drug.prug.or.jp/docs.html

--

付5.サンプルファイル

  • dhcpd.conf
  • gateways
  • jk1mly.rev
  • jk1mly.zone
  • localhost.rev
  • localhost.zone
  • named.boot
  • named.root
  • 1998年10月20日:旧版から変更


    戻る