IPSMを使うためにFreeBSDなどをインストールするために作ったマニュアルです。 FreeBSD版は別にあります。
作成:1998年10月14日 JK1MLY・稲葉
新たな高速パケット通信として期待されるPRUG96プロジェクトにて、試作されたハードウェアとソフトウェアを使うためのドキュメントの1つです。
IPSMとLinuxを用いて、PFWLとRNAVIを動かす設定に関してまとめてあります。動作実績があるのは、RedHat4.2とslackware 3.4ですが、他のパッケージであっても同様に使用可能と思われます。
無線など複数の中継経路から適した経路を探索するシステムをAPFSと呼び、これを実現するためのソフトウェアとしてRNAVIが動きます。また無線機とのデータの受け渡しをするのがPFWLになります。一緒に使う無線機に関しては別のドキュメントがあるので、そちらを参照して下さい。
略語
IPSM:IP Shield Machineの略(ハードウェア)
PFWL:Packet Forward for WireLess linkの略(ソフトウェア)
RNAVI:Route NAVIgatorの略(ソフトウェア)
APFS:Asymmetric Path Finding Systemの略(システム)
記述
赤い文字・・・各自の設定で異なる入力
イタリック・・コマンドラインからの入力
--
既にLinuxをインストールした時に、IIJ-PPPをインストールされている方は、この項目は不要です。
PFWLはtunnel deviceを使用して通信を行うため、userlinkを組み込む必要があります。iij-pppを使用している場合には、既に組み込まれていますので以下の作業は不要です。
http://www.dsl.ics.tut.ac.jp/~manabe/PPxP/
ftpサイトなどからiij-pppとLinux用のパッチである下記の2つのファイルを入手して下さい。
iij-ppp0.94beta2.tar.gzを展開すると、ディレクトリiij-ppp0.94ができますので、ここにiij-ppp0.94beta2+lx.diff.gzを解凍してパッチをあてます。(下記を参照)
#tar xvfz iij-ppp0.94beta2.tar.gz #cd iij-ppp0.94 #gunzip ../iij-ppp0.94beta2+lx.diff.gz #patch -p1 < ../iij-ppp0.94beta2+lx.diff
次にiij-ppp0.94の下のにあるディレクトリDrivers/Linuxに移動して、 コンパイルおよびインストール作業を行います。(下記を参照)
#cd Drivers/Linux #pmake #pmake install #depmod -a
ここまでで今回の動作に必要なuserlinkは組み込まれます。もしiij-pppも必要な方は、ここまでの作業が終わっていればREADME.linux.jisがあると思います。この真鍋さんの書かれたIIJ-PPP (Version 0.94beta2) for Linuxを見て下さい。
以上の作業でトンネルデバイスとしてul[0-9]が使用可能になります。
userlinkの最新版は下記から得られます。iij-pppを必要とする方も含め、できるだけ新しいソフトを使って下さい。
http://www.dsl.ics.tut.ac.jp/~manabe/PPxP/
組み込むまでの流れは、下記を見れば十分なので省略します。
http://www.dsl.ics.tut.ac.jp/~manabe/PPxP/doc/QuickStart-1.html
--
通信を行うホストやネットワークのIPアドレスは、/etc/hostsおよび/etc/networksに記述しますが、今回はDNSを使用するので、ファイルhostsには設定中の1台を加えるのみとします。赤い文字の部分は各々で合わせて下さい。
/etc/hostsの例
127.0.0.1 localhost 192.168.40.11 jq1vie.prug.or.jp jq1vie
・・・IPアドレス,ホスト名,別名の順で記述
--
ここではIPSMの起動時にbootpを利用する場合を書きます。DHCPを使う場合には次を見て下さい。
/etc/inetd.confファイルを開き、bootpdが起動されるように下記の設定を追加して下さい。設定内容の詳細はman inetd.conやman bootpdなどを見て下さい。
<inetd.confの一部>
bootps dgram udp wait root /usr/sbin/tcpd bootpd
/etc/bootptabファイルを開き(無い場合は作成する)、IPSMが起動したときにブートファイルを転送するよう下記を参考に設定して下さい。 設定の詳細はman bootptabなどを見て下さい
<bootptabの例>
ipsm:ht=ethernet:hd=/tftpboot:bf=ssipsm.v1.36.bin:ha=00C0F6B050BE:sm=255.255.255.0
<上記の意味>
ipsm
・・・IPSMのホスト名
ht=ethernet
・・・ハードとしてイーサネットを指定
hd=/tftpboot
・・・ブートファイルの格納場所を指定
bf=ssipsm.v1.36.bin
・・・ブートファイルの指定
ha=52544C043B9C
・・・ターゲットとなるIPSMのMACアドレスを指定
前項でメモした文字列からコロンを除いた16進数の羅列となりますが、1桁のフィールドは0(ゼロ)を補い2桁にする必要があります。
sm=255.255.255.0
・・・使用するネットワークのネットマスクを指定
--
IPSMに対するIPアドレスの自動割り当てや、IPSMのファームウェアを転送するために、DHCPと呼ばれる機能を利用します。ここで設定する内容によりWindows95やMacintoshなどのパソコンを接続する場合、ネットワークの設定を自動化させることなどが可能になります。赤い文字の部分は各々で合わせて下さい。
既にdhcpを動かしている場合にはインストールは不要です。この設定はisc版のdhcpを利用した場合でありwide版では異なるので注意して下さい。
dhcp-2.0b1pl6.tar.gzを取ってくる
最新の情報はhttp://www.isc.org/dhcp.htmlを見て下さい。
あとは解凍してmakeするだけです。
tar xvfz dhcp-2.0b1pl6.tar.gz cd dhcp-2.0b1pl6 ./configure make make install
次にdhcpの設定です。
/etc/dhcpd.confの例
server-identifier jq1vie.prug.or.jp;
・・・規定するアドレスの範囲を指定
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アドレスなどの情報を格納するため、下記のコマンドでディレクトリ/etcに、ファイルdhcpd.leasesを作ります。
touch /etc/dhcpd.leases
起動時に自動的に動くように/etc/rc.d/rc.localへ下記の一行を追加します。
/usr/sbin/dhcpd
どうもdhcpdの出す返事は、下記のようにルーティングを先にしてないとダメみたいですので注意して下さい。
/etc/sysconf ig/static-routes
eth0 net 0.0.0.0 netmask 0.0.0.0 gw 172.16.113.2
--
ファイルの転送方法として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 /tftpboot cp ipsm-1.32.bin /tftpboot
--
DNSを使用するには幾つかの設定が必要ですが、このうち今回の実験で必要な部分のみを以下に示します。ここに示す以外のなどはman namedにて確認して下さい。
DNSの機能を使うための設定として、ネームサーバのアドレスなどを、/etc/resolv.confに書きます。赤い文字の部分は各々で合わせて下さい。
/etc/resolv.confの例
domain jq1vie.prug.or.jp
・・・ドメイン名を指定
nameserver 192.168.40.11
・・・ネームサーバのアドレスを指定
(後ろに続けて書くとセカンダリが指定できる)
起動するネームサーバの動作を/etc/named.bootに書きます。
/etc/namedb/named.bootの例 directory /var/named
・・・データを記述したファイルを置くディレクトリ
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
・・・自ドメイン内の逆引き
ルートネームサーバの指定を/var/named/named.rootに書きます。
/var/named/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 (以下略)
正・逆引きに使う情報の記述をします。
/var/named/jq1vie.zoneの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. (
・・・primaryであることと連絡先を示す
1998041101 ;Serial
・・・変更したら必ず大きな値に直す
3600 ;Refresh 900 ;Retry 3600000 ;Expire 3600 ) ;Minimum jq1vie.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.51 localhost.jq1vie.prug.or.jp. IN A 127.0.0.1 www.jq1vie.prug.or.jp. IN CNAME mini.jq1vie.prug.or.jp.
・・・別名の指定
/var/named/jq1vie.revの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. (
・・・primaryであることと連絡先を示す
1998041101 ;Serial
・・・変更したら必ず大きな値に直す
10800 ;Refresh 1800 ;Retry 3600000 ;Expire 259200 ) ;Minimum IN 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.
/var/named/localhost.zoneの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. ( 1998041101 ;Serial 10800 ;Refresh 1800 ;Retry 3600000 ;Expire 259200 ) ;Minimum localhost. IN NS mini.jq1vie.prug.or.jp. localhost. IN A 127.0.0.1
/var/named/localhost.revの例
@ IN SOA mini.jq1vie.prug.or.jp. admin.jq1vie.prug.or.jp. ( 1998041101 ;Serial 10800 ;Refresh 1800 ;Retry 3600000 ;Expire 259200 ) ;Minimum 0.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 eth0 -e
上の例にあるeth0 はデバイス名の一例なので、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とrnavid-1.40.tar.gzを、PRUGのftpサーバなどから入手します。PRUGのサーバの場合には/pub/hamradio/PRUG96/APFS/にあります。
入手したファイルを下記のコマンドにより展開します。
tar xvfz pfwld-1.40.tar.gz tar xvfz rnavid-1.40.tar.gz
これによりPFWLDとRNAVIDという2つのディレクトリができます。
次にpfwldとrnavidをコンパイルします。コンパイルは各々のディレクトリでmakeするのみです。
cd PFWLD make cd ../RNAVID make cd ..
でき上がったバイナリpfwldとrnavidは、ディレクトリ/usr/local/sbinにコピーしておきます。
cp PFWLD/pfwld /usr/local/sbin cp 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.conf cp RNAVID/rnavid.conf-sample /etc/rnavid.conf cd /etc
各項目の設定内容は下記のようになります。
/etc/pfwld.confの例
# sample server configuration for FreeBSD pfwl:sa=192.168.41.0:da=192.168.41.1:dev=ul1: 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・・・使用する無線回線の伝送速度
/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 行は複数設定できますので、gated 等を動かさない場合は自分がアナウンスすべきネットワークを登録する事により、他のネットワークへの gateway が可能となります。例えば上記に加えて下記のlocal行を書くと、192.168.40.0/24のネットワークに対する、固定的なルーティングとなります。
local:da=192.168.40.0:nm=255.255.255.0:
--
起動時にファイル/etc/rc.d/rc.localが自動的に動作するので、dhcpd,pfwld,rnavidが立ち上げ時に自動的に動き始めるよう、下記のような記述を追加します。
/usr/sbin/dhcpd /usr/local/sbin/pfwld /usr/local/sbin/rnavid
--