IPSMを使うためにFreeBSDなどをインストールするために作ったマニュアルですが、一般的なネットワークの設定なども入っているので公開します。
(ただし修正の途中です)
作成:1998年10月14日 JK1MLY・稲葉
新たな高速パケット通信として期待されるPRUG96プロジェクトにて、試作されたハードウェアとソフトウェアを使うためのドキュメントの1つです。
非ノートタイプのAT互換機にFreeBSD 2.2.6Rをインストールし、IPSMとPFWLとRNAVIを動かすまでの方法をまとめてあります。PCカードのLANカードなどを使用しても動かすことは可能ですが、幾つかの設定が異なるため本ドキュメントではサポートしません。
現時点ではFreeBSD2.2.7Rが出ています。セキュリティの問題などが改善されていますので、こちらをインストールして下さい。まだドキュメントは修正できてませんが、動作は確認できています。また設定で特に異なる部分はありません。
無線など複数の中継経路から適した経路を探索するシステムをAPFSと呼び、これを実現するためのソフトウェアとしてRNAVIが動きます。また無線機とのデータの受け渡しをするのがPFWLになります。システムの動作に関しては別にドキュメントがあるので、そちらを参照して下さい。
下記に示したような一般的なAT互換機に、FreeBSD 2.2.6RをCD-ROMからインストールすることを前提に、本ドキュメントは書いています。他の環境でも動作可能ですのが、設定の一部などが異なる可能性があります。またLinuxに関してはPFWLとRNAVIを動かすことを
PC仕様
CPU:Pentium100M
RAM:32M
HDD:1G
CD-ROM:ATAPI
Ether:NE2000互換(ed0として検出)
略語
IPSM:IP Shield Machineの略(ハードウェア)
PFWL:Packet Forward for WireLess linkの略(ソフトウェア)
RNAVI:Route NAVIgatorの略(ソフトウェア)
APFS:Asymmetric Path Finding Systemの略(システム)
記述
赤い文字・・・各自の設定で異なる入力
イタリック・・コマンドラインからの入力
--
このシステムはネットワークを構成する時に使うことになりますが、この時に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アドレスを割り振っています。
接続するネットワーク
192.168.40.0
設定するマシン
192.168.40.11
接続するIPSM
192.168.40.51
APFSルータ
192.168.41.1
設定するマシンのトンネル
192.168.41.0
--
以下の例は他のOSとの共存などは行わない設定ですので、必要なデータが入ったPCなどは使用しないで下さい。
インストールの概略は以下の通りですが、FreeBSDをインストールことの無い方は、入門書などを見ながら作業する方が良いでしょう。
・CD-ROMに含まれるファイルからブート用のフロッピーを作成します。
・フロッピーからブートします。
・Kernel Configuration Menuはskipを選択します。
(IRQの設定などが必要な場合を除く)
・インストール方法はNoviceを選択します。
・FDISKの設定はAを入力して全てをFreeBSD(165)に割り振ります。
・BootMgrを選択します。
・Disklabel Editorの設定はAを入力して自動的に割り振ります。
・Choose Disributionsでkern-Developerを選択します。
・Do wish to install DES..はNOで次に進みます。
・ports collectionはNOで次に進みます。
・Choose Distributionsでcustomを選択し内容を確認します。
(CD-ROMからインストール)
・イーサネットの設定を行います。
・時計の設定を行います。
・IP gatewayは行うを選択します。
・packageのインストールを行うにして下記を入れます。
netの下にあるisc-dhcp-b5.16
・groupおよびuserを作ります。
・rootのパスワードを設定します。
・全部の設定が終了したらフロッピーを抜いてリブートします。
--
pfwldはトンネルデバイスを使用して通信を行うため、トンネルデバイスがカーネルに組み込まれている必要があります。このため場合によってはカーネルを再構築する必要があります。概略は以下の通りですが、カーネルを作り直したことの無い方は、入門書などを見ながら作業する方が良いでしょう。
トンネルデバイスは、キャラクタデバイスへの入出力をネットワークデバイスの出入力と見なし、 あたかもネットワークインターフェイスカードのように処理します。
トンネルデバイスが使えるようにするため、カーネルの設定ファイルがあるディレクトリ/usr/src/sys/i386/confに移動します。ここにある現在の設定ファイルをコピーして、新しい設定ファイル(以下<NEW_KERNEL>、以下の例ではJQ1VIE)を作ります。
cd /usr/src/sys/i386/confcp GENERIC JQ1VIEvi JQ1VIE
ファイルを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以上であれば大丈夫です。以上で設定ファイルJQ1VIEの設定は終了です。
ついでに不要なドライバなどを削除しておくと、カーネルのサイズを小さくできます。またイーサネットカードの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 JQ1VIE
(JQ1VIEに新しい設定ファイルを指定して下さい)
cd ../../compile/JQ1VIE
(ディレクトリJQ1VIEはconfigを実行した時に作られます)
make dependmake
(使用するPCの性能により時間が必要な場合があります)
make install
(もし正常に動きませんと困るので、古いカーネルは消さないで下さい)
以上で新しいカーネルが作られたので、リブートして新しいカーネルが動くことを確認して下さい。途中でエラーなどが発生した場合には、入門書や
新たに作ったデバイスが使えるよう、下記のようにディレクトリ/devに移動し、MAKEDEVを実行して下さい。
cd /devsh MAKEDEV tun1sh MAKEDEV tun2sh MAKEDEV tun3
たぶん作成済みですが、もし必要なら下記も実行して下さい。
sh MAKEDEV tun0sh MAKEDEV bpf0sh MAKEDEV bpf1sh MAKEDEV bpf2sh MAKEDEV bpf3
正しく作成されていれば、lsコマンドで見ることができます。
ls -l /dev/tun*ls -l /dev/bpf*
イーサネットカードのIRQなどがコンパイルした値と異なる時には、boot:と出たところで-cと入力しますと設定用のユーティリティが動きます。表示される指示に従ってパラメータを変更して下さい。
--
pfwldを動かすマシンのホスト名やIPアドレスを、下記を参考に/etc/rc.confに設定します。赤い文字の部分は各々で合わせて下さい。
/etc/rc.confの一部
### Basic network options: ###hostname="mini.jq1vie.prug.or.jp"
・・・ホスト名をminiに設定
ドメイン名をjq1vie.prug.or.jpに設定
nisdomainname="NO"firewall="NO"tcp_extensions="YES"network_interfaces="lo0 ed0"
・・・ループバックとイーサネットカードを使用
ifconfig_lo0="inet 127.0.0.1"ifconfig_ed0="inet 192.168.40.11 netmask 255.255.255.0"
・・・172.16.113.1にIPアドレスを設定
ネットマスクを255.255.255.0に設定
### Network routing options: ###defaultrouter="NO"
・・・デフォルトルータは特に指定し無し
static_routes="ed0"
・・・ed0を使った固定ルーティング
route_ed0="-net 224.0.0.0 -iface ed0"
・・・マルチキャストをed0に出力
一般的なマルチキャスト(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でのゲートウェイを可能
--
通信を行うホストやネットワークのIPアドレスは、/etc/hostsおよび/etc/networksに記述しますが、今回はDNSを使用するので、ファイルhostsには設定中の1台を加えるのみとします。赤い文字の部分は各々で合わせて下さい。
もしDNSを使用しない時には、/etc/host.confに含まれるbindの行を#でコメントアウトしておく必要があります。この場合には本マニュアルの設定方法と異なることになります。
/etc/hostsの例
127.0.0.1 localhost192.168.40.11 jq1vie.prug.or.jp jq1vie
・・・IPアドレス,ホスト名,別名の順で記述
--
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=ed0 ripv2
もし全てをダイナミックなルーティングにしたくない場合もあるかと思いますが、その時には/etc/gatewaysに経路情報を書くことで起動時に読み込ませることができます。詳しくはmanroutedとしてマニュアルを見て下さい。
--
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 192.168.40.0 netmask 255.255.255.0 {
・・・規定するアドレスの範囲を指定
range 192.168.40.32 192.168.40.39;
・・・自動的に割り振るアドレスの範囲を指定
(他のパソコンなどに割り当てるアドレス)
default-lease-time 43200;
・・・使用可能な時間を秒で指定
max-lease-time 86400;
・・・使用可能な最大時間を秒で指定
option subnet-mask 255.255.255.0;
・・・サブネットマスク
option broadcast-address 192.168.40.255;
・・・ブロードキャストアドレス
option routers 192.168.40.11;
・・・デフォルトルート
option domain-name-servers 192.168.40.11;
・・・DNSのIPアドレス
option domain-name "jq1vie.prug.or.jp";
・・・ドメイン名
}
・・・ここまではアドレスを自動的に割り振らない場合には不要です
host ipsm1 {
・・・固定的な設定
hardware ethernet 0:60:52:4:85:e7;
・・・IPSMのMACアドレス
fixed-address 192.168.40.51;
・・・決まったIPアドレスを割り振る
filename "/tftpboot/ssipsm.v1.36.bin";
・・・起動時に送るファイルの指定
(実際のファイル名に合わせる)
option subnet-mask 255.255.255.0;
・・・サブネットマスク
option broadcast-address 192.168.40.255;
・・・ブロードキャストアドレス
option routers 192.168.40.11;
・・・デフォルトルート
}
dhcpが使用しているIPアドレスなどの情報を格納するため、下記のコマンドでディレクトリ/var/dbに、ファイルdhcpd.leasesを作ります。
touch /var/db/dhcpd.leases
--
ファイルの転送方法として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をコピーします。
mkdir /tftpbootcp ipsm-1.36.bin /tftpboot
--
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 jq1vie.prug.or.jp
・・・ドメイン名を指定
nameserver 192.168.40.11
・・・ネームサーバのアドレスを指定
(後ろに続けて書くとセカンダリが指定できる)
起動するネームサーバの動作を/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 jq1vie.prug.or.jp jq1vie.zone
・・・自ドメイン内の正引き
primary 40.168.192.in-addr.arpa jq1vie.rev
・・・自ドメイン内の逆引き
ルートネームサーバの指定を/etc/namdb/named.rootに書きます。
/etc/namdb/named.rootの例
; jq1vie.prug.or.jp;. 3600000 NS mini.jq1vie.prug.or.jp.mini.jq1vie.prug.or.jp. 3600000 A 192.168.40.11
インターネットに接続しているなら、もともと下記のような設定が書かれているので、そのままにして下さい。
; formerly NS.INTERNIC.NET;. 3600000 IN NS A.ROOT-SERVERS.NET.A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4(以下略)
正・逆引きに使う情報の記述をします。
/etc/namdb/jq1vie.zoneの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. (
・・・primaryであることと連絡先を示す
1998041101 ;Serial
・・・変更したら必ず大きな値に直す
3600 ;Refresh900 ;Retry3600000 ;Expire3600 ) ;Minimumjq1vie.prug.or.jp. IN NS mini.jq1vie.prug.or.jp.
・・・jq1vie.prug.or.jpのネームサーバ
jq1vie.prug.or.jp. IN MX 10 mini.jq1vie.prug.or.jp.
・・・メールを送るホスト
mini.jq1vie.prug.or.jp. IN A 192.168.40.11
・・・正引きの指定
ipsm1.jq1vie.prug.or.jp. IN A 192.168.40.51localhost.jq1vie.prug.or.jp. IN A 127.0.0.1www.jq1vie.prug.or.jp. IN CNAME mini.jq1vie.prug.or.jp.
・・・別名の指定
/etc/namdb/jq1vie.revの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. (
・・・primaryであることと連絡先を示す
1998041101 ;Serial
・・・変更したら必ず大きな値に直す
10800 ;Refresh1800 ;Retry3600000 ;Expire259200 ) ;MinimumIN NS mini.jq1vie.prug.or.jp.
・・・192.168.40.xxのネームサーバ
11 IN PTR mini.jq1vie.prug.or.jp.
・・・192.168.40.11の逆引き
192.168.40は省略されている
32 IN PTR pc1.jq1vie.prug.or.jp.51 IN PTR ipsm1.jq1vie.prug.or.jp.
/etc/namdb/localhost.zoneの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. ( 1998041101 ;Serial10800 ;Refresh1800 ;Retry3600000 ;Expire259200 ) ;Minimumlocalhost. IN NS mini.jq1vie.prug.or.jp.localhost. IN A 127.0.0.1
/etc/namdb/localhost.revの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. ( 1998041101 ;Serial10800 ;Refresh1800 ;Retry3600000 ;Expire259200 ) ;Minimum0.0.127.in-addr.arpa. IN NS mini.jq1vie.prug.or.jp.1.0.0.127.in-addr.arpa. IN PTR localhost.
--
IPSMに使用するNE2000互換イーサネットカードのMACアドレスを知る必要があります。このため下記の方法により情報を得て下さい。
MACアドレスを含めてイーサネットをモニタするため、tcpdumpコマンドに-eオプションを使用します。
tcpdump -i ed0 -e
上の例にあるed0 はデバイス名の一例なので、IPSMを接続するportに使用するデバイスを指定して下さい。
次にIPSMの電源を入れますとbootpのためのpacketが流れ、これが下記の例のようにtraceされます。
16:32:14.176681 0:c0:f6:b0:50:be Broadcast ip 370: 0.0.0.0.bootpc > 255.255.255.255.bootps: [|bootp]16:32:19.341249 0:c0:f6:b0:50:be Broadcast ip 370: 0.0.0.0.bootpc > 255.255.255.255.bootps: [|bootp]
この中にある0:c0:f6:b0:50:beの部分が、IPSMのMACアドレスになるのでメモしておきます。あとでdhcpの設定を行う際に使用します。
IPSMの動作が確実でない場合には、一時的にPCに実装して調べる方が良いかもしれません。IPSMが動いていれば、電源を入れた時にイーサネットカードのLEDが点滅し、通信するのが分かるかと思います。イーサネットカードに送信/受信LEDがないものもありますが、その時にはHUBのLEDなどを代わりに見て下さい。
--
pfwld-1.40.tar.gzとrnavid-1.40.tar.gz入手し、これらをtarコマンドによって展開し、コンパイルして作ったpfwldとrnavidを使用します。
pfwld-1.40.tar.gzと
入手したファイルを下記のコマンドにより展開します。
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
--
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 /etc
各項目の設定内容は下記のようになります。
/etc/pfwld.confの例
# sample server configuration for FreeBSDpfwl:sa=192.168.41.0:da=192.168.41.1:dev=tun1:ipsm:un=0:ha=192.168.40.51:sid=JQ1VIE-0:bw=808000:
sa=192.168.41.0・・・トンネルの入口側アドレスまたはホスト名
da=192.168.41.1・・・トンネルの相手先アドレスまたはホスト名
ha=192.168.40.51・・・IPSMのIPアドレスまたはホスト名
dev=tun1・・・トンネルデバイスのデバイス名
sid=JQ1VIE-0・・・無線で使用するコールサイン
bw=808000・・・使用する無線回線の伝送速度
複数のIPSMを接続する場合には、pfwl行にその数を追加すると共に、ipsm行を追加して下さい。下記は2台の例です。
pfwl:sa=192.168.41.0:da=192.168.41.1:dev=tun1:cl=2:ipsm:un=0:ha=192.168.40.51:sid=JQ1VIE-0:bw=808000:ipsm:un=1:ha=192.168.40.52:sid=JQ1VIE-1:bw=808000:
/etc/rnavid.conf
rip:mi=4:mo=4:local:da=192.168.41.0:nm=255.255.255.254:
da=192.168.41.0・・・経路情報として流すネットワークアドレスの指定
nm=255.255.255.254・・・IPSMとの通信に使用するネットワークのネットマスク
mi=4・・・metricが4以上の経路情報は無視
mo=4・・・metricを4として経路情報を出力
local 行は複数設定できますので、routed 等を動かさない場合は自分がアナウンスすべきネットワークを登録する事により、他のネットワークへのgateway が可能となります。例えば上記に加えて下記のlocal行を書くと、192.168.40.0/24のネットワークに対する、固定的なルーティングとなります。
local:da=192.168.40.0:nm=255.255.255.0:
--
起動時にディレクトリ/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
--
netstatコマンドで相手局へのルーティングが正しいか確認できます。
<実行例>
% netstat -rnRouting tablesInternet:Destination Gateway Flags Refs Use Netif Expire127.0.0.1 127.0.0.1 UH 0 0 lo0192.168.40/24 link#8 UC 0 0 192.168.40.11 0:0:e8:3a:ab:cb UHLW 1 182 lo0192.168.40.51 0:c0:f6:b0:50:be UHLW 1 14 ed0 714192.168.41.0 192.168.41.1 UH 0 0 tun1192.168.41.1 127.0.0.1 UH 0 0 lo0
pingコマンドで相手局と通信できることが確認できます。
<実行例>
% ping -c 3 192.168.14.1
・・・192.168.14.1(相手)に対して3回チェック
PING 192.168.14.1 (192.168.14.1): 56 data bytes64 bytes from 192.168.14.1: icmp_seq=0 ttl=253 time=102.661 ms
・・・192.168.14.1(相手)から約100msで返事がきた
3 packets transmitted, 3 packets received, 0% packet loss
・・・パケットの送信を3回して全てに返事がきた
--
通信できないときには順にトレースしてみましょう。tcpdump -i ed0 -eとしておき、IPSMの電源を入れると、下記のようにbootpが動いてIPSMにデータを送り始めます。現れる数値やホスト名は違うでしょうが、同じような通信がモニタできればIPSMの立ち上げは正常と考えて良いでしょう。
<tcpdumpによるモニタ例>
16:36:31.274832 0:c0:f6:b0:50:be Broadcast ip 370: 0.0.0.0.bootpc > 255.255.255.255.bootps: [|bootp]16:36:31.278691 0:80:c8:83:76:aa 0:c0:f6:b0:50:be ip 370: ps-ina.tama.prug.or.jp.bootps > ipsm.tama.prug.or.jp.bootpc: Y:ipsm.tama.prug.or.jp S:ps-ina.tama.prug.or.jp [|bootp]16:36:33.014528 0:c0:f6:b0:50:be Broadcast arp 64: arp who-has ps-ina.tama.prug.or.jp tell ipsm.tama.prug.or.jp16:36:33.014854 0:80:c8:83:76:aa 0:c0:f6:b0:50:be arp 64: arp reply ps-ina.tama.prug.or.jp is-at 0:80:c8:83:76:aa16:36:33.271572 0:c0:f6:b0:50:be 0:80:c8:83:76:aa ip 69: ipsm.tama.prug.or.jp.tftp > ps-ina.tama.prug.or.jp.tftp: 27 RRQ "/tftpboot/ipsm.bin"16:36:33.370326 0:80:c8:83:76:aa 0:c0:f6:b0:50:be ip 558: ps-ina.tama.prug.or.jp.1027 > ipsm.tama.prug.or.jp.tftp: 516 DATA block 116:36:33.531270 0:c0:f6:b0:50:be 0:80:c8:83:76:aa ip 64: ipsm.tama.prug.or.jp.tftp > ps-ina.tama.prug.or.jp.1027: 4 ACK block 1
次に相手局に対して送信するため、ping -i 10 192.168.14.1として10秒おきに送信しておきます。これがトンネルデバイスを通って送信されるかを、tcpdump-i tun1としてモニタして下記のようなら、正しく送っています。
16:39:21.020615 ip: 255.255.255.255 > 192.168.14.1: icmp: echo request16:39:31.060617 ip: 255.255.255.255 > 192.168.14.1: icmp: echo request
これがイーサネット側に出ているかは、tcpdump -i ed0としてモニタして下記のようなら、正しく送っています。
16:38:40.932133 0:80:c8:83:76:aa 0:c0:f6:b0:50:be ip 1450: ps-ina.tama.prug.or.jp.8649 > ipsm.tama.prug.or.jp.8649: udp 140816:38:50.972178 0:80:c8:83:76:aa 0:c0:f6:b0:50:be ip 1450: ps-ina.tama.prug.or.jp.8649 > ipsm.tama.prug.or.jp.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
--
pfwld-1.10.tar.gzdrwxr-xr-x shin/users 0 Aug 22 20:34 1998 PFWLD/-r--r--r-- shin/users 56559 May 19 09:23 1998 PFWLD/ipsmio.c-r--r--r-- shin/users 6042 May 19 09:23 1998 PFWLD/sockio.c-r--r--r-- shin/users 15835 Aug 22 20:34 1998 PFWLD/rlp.c-r--r--r-- shin/users 10332 May 19 09:23 1998 PFWLD/ipv4.c-r--r--r-- shin/users 12584 Aug 22 20:34 1998 PFWLD/main.c-r--r--r-- shin/users 5174 May 19 09:23 1998 PFWLD/rnio.c-r--r--r-- shin/users 7605 May 19 09:23 1998 PFWLD/pktfilter.c-r--r--r-- shin/users 5015 May 19 09:23 1998 PFWLD/tunio.c-r--r--r-- shin/users 4256 May 19 09:23 1998 PFWLD/slio.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 Aug 22 20:34 1998 PFWLD/rlp.h-r--r--r-- shin/users 2331 May 19 09:23 1998 PFWLD/ipv4.h-r--r--r-- shin/users 2886 May 19 09:23 1998 PFWLD/config.h-r--r--r-- shin/users 2118 May 19 09:23 1998 PFWLD/rnio.h-r--r--r-- shin/users 3230 May 19 09:23 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-rw-r--r-- shin/users 4514 Aug 22 20:00 1998 PFWLD/README.pfwld-r--r--r-- shin/users 1363 Aug 22 20:33 1998 PFWLD/CHANGES.pfwld-r--r--r-- shin/users 313 Feb 27 22:03 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 2331 May 19 09:59 1998 PFWLD/Makefilernavid-1.01b.tar.gzdrwxr-xr-x shin/users 0 Aug 19 21:23 1998 RNAVID/-r--r--r-- shin/users 6035 May 19 09:33 1998 RNAVID/sockio.c-r--r--r-- shin/users 9215 Aug 19 21:22 1998 RNAVID/main.c-r--r--r-- shin/users 17478 May 19 09:33 1998 RNAVID/table.c-r--r--r-- shin/users 14440 Aug 19 21:22 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 2424 May 19 22:48 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 3408 Aug 19 21:22 1998 RNAVID/README.rnavid-r--r--r-- shin/users 980 Aug 19 21:21 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 2910 May 19 09:58 1998 RNAVID/Makefile
--
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 Tue Sep 15 12:00:57 19980: -0 ac1073dc fffffffe, ttl -1, entered 10:55:13, permanent1: -0 ac107200 ffffff00, ttl -1, entered 12:01:57, expiration 12:04:572: JK1MLY -10 c0a82964 fffffffe, ttl 15, entered 12:01:23, expiration 12:11:223: JK1MLY -10 ac107100 ffffff00, ttl 15, entered 12:01:23, expiration 12:11:22
・・・自分のIPアドレスほか
コールサインが入って無い、ttlが-1なのは自局であり、 JK1MLY -10が無線経由で受信した局の情報です。Hexの数値はネットワークアドレスとサブネットマスクを示します。
Name table Tue Sep 15 12:00:57 19980: JK1MLY -0 local, expiration 12:02:52, ttl 161: JK1MLY -10 radio, expiration 12:03:22, ttl 15
・・・自分のコールサインほか
この例ではJK1MLY-10が無線経由で届いてます
Line Quality table Tue Sep 15 12:00:57 1998 R 0 R 1 S 0: +1.0000/16 1.0000/15S 1: 1.0000/16 +1.0000/15
・・・通ったパケットの状態
通信可能な全ての局との状態を表(マトリクス)で示します
数値はrate(1-エラーレート)とTTL(16−中継局数)
値の前に*がある場合は十分なデータが無い状態を示します
--
このシステムではトンネルデバイスを使い、実体の無いルータが動いており、設定したUNIXマシンとAPFSルータ,IPSMが下記のようなイメージで論理的に接続されています。
Ethernet192.168.40.0 | | | 192.168.40.11 192.168.41.1 192.168.40.51 | +--------+ tunnel +-----------+ +--------+ +------| UNIX |----------|APFS router|------->| IPSM | | +--------+ +-----------+ +--------+ | 192.168.41.0 (192.168.40.11)
--
pfwld,rnavidなどのソフトウェア、IPSMのファームウェア、各種のドキュメントなどは下記のURLから辿ることで、最新版の入手が可能になっています。
http://www.drug.prug.or.jp/docs.html