この節 (カーネル設定の下読み) は Hubert Feyrer <hubert@feyrer.de> による寄稿です。
ネットワーク設定をさまざまな状況にあわせて設定する前に、 カーネル内に何が必要か、あるいはなにを入れることができるのか、 をざっと見ておきたいと思います。カーネルのコンパイルについての詳細は Chapter 7 をご覧ください。ここでは カーネル設定の事に専念します。 ここでは、例として i386/GENERIC コンフィグ ファイルを用います。 他のプラットホームの Config ファイルにも似た情報が含まれているはずで, コンフィグファイル中のコメントはより多くのヒントとなります。 ここに書かれた情報に加えて、各カーネルオプションについてのドキュメントは options(4) マニュアルページ中にあり、 また、各ドライバー、 例えば tlp(4) についても、大抵マニュアルページがあります。
# $NetBSD: GENERIC,v 1.354.2.15 2001/05/06 15:18:54 he Exp $
各 config ファイルの最初の行はバージョンが書かれていて、 これは 1.354.2.15 です。これは CVS 経由でほかのバージョンと比較したり、 バグが伝えられたときに使えます。
options NTP # NTP phase/frequency locked loop
もし Network Time Protocol (NTP) を使いたいなら、 精度を高めるためにこのオプションを使うことができます。 このオプションが無くても、 NTP は動きます。 更なる情報は ntpd(8) をご覧ください。
file-system NFS # Network File System client
ほかの機械のハードディスクを ネットワークファイルシステム (NFS)経由で使いたいなら、 このオプションが必要です。 Section 10.2.2 に NFS についてのより詳しい情報があります。
options NFSSERVER # Network File System server
このオプションは NFS リモートファイル共有プロトコル のサーバー側を含ませるものです。この機械のハードディスクを ほかの機械から使うことを許したいなら有効にしてください。 Section 10.2.2 に NFS の更なる 情報があります。
#options GATEWAY # packet forwarding
ネットワークやネットワークインターフェース間でパケットのフォワードをする ルーターにしたければ、このオプションを設定することが必要です。 パケットフォワーディングのスイッチだけでなく、バッファーの増加もします。 詳しくは options(4) をご覧ください。
options INET # IP + ICMP + TCP + UDP
これでカーネル中の TCP/IP コードが有効になります。 ネットワークを使わない/使いたくない場合でさえ、 X Window System のようなサブシステムのマシン内部の通信のために やっぱり必要でしょう。 より詳しいことは inet(4) をご覧ください。
options INET6 # IPV6
IPv6 を利用したければ必要です。 IPv6 がいらなければ、このオプションは NetBSD 1.5 release 以降は標準で含まれているので、消す/コメントアウトすることができます。 次世代インターネットプロトコルの更なる情報は inet6(4) マニュアルページと Section 9.1.7 を ご覧ください。
#options IPSEC # IP security
鍵とポリシー管理、認証、圧縮が含まれている IPsec プロトコルのサポートをいれます。 IPv4 で IPsec を使いたいだけなら、 このオプションは上のオプション、 INET6 なしに使うことができます。 より詳しいことは ipsec(4) をご覧ください。
#options IPSEC_ESP # IP security (encryption part; define w/IPSEC)
IPsec で暗号化が必要なら IPSEC に加えてこのオプションが必要です。
#options MROUTING # IP multicast routing
もし MBone サービスのようなマルチキャストサービスをルーティングするなら、 このオプションを入れることが必要です。註として、ルーティングそれ自体は mrouted(8) デーモンによって制御されます。
options NS # XNS #options NSIP # XNS tunneling over IP
このオプションは Xerox Network Systems(tm) プロトコル family のためのものです。 これは TCP/IP プロトコルスタックの関連ではなく、今日では使われることはまれです。 ns(4) マニュアルページにいくらか詳しいことが書いてあります。
options ISO,TPIP # OSI #options EON # OSI tunneling over IP
このオプションは OSI プロトコルスタックを入れるもので、 長いことネットワークの前途だと言われていました。 今日ではほとんど歴史です :-) 更なる情報は iso(4) マニュアルページを ご覧ください。
options CCITT,LLC,HDLC # X.25
これらのオプションでシリアルライン上のデータ転送で X.25 プロトコルを 使えるようになります。これは OSI プロトコルや WAN ネットワークに関連して 最もよく使われ ます/ました。
options NETATALK # AppleTalk networking protocols
AppleTalk プロトコルスタックのサポートをします。 利用するにはユーザーランドのサーバープログラムが必要です。 pkgsrc/net/netatalk や pkgsrc/net/netatalk-asun といったパッケージをご覧ください。 AppleTalk プロトコルとプロトコルスタックについての更なる情報は atalk(4) マニュアルページにあります。
options PPP_BSDCOMP # BSD-Compress compression support for PPP options PPP_DEFLATE # Deflate compression support for PPP options PPP_FILTER # Active filter support for PPP (requires bpf)
これらのオプションは Point-to-Point プロトコルのさまざまな を調節するためのものです。最初の2つは 利用する圧縮プロトコルを決めるもので、 3つめのは パケットのフィルタリングを有効にするものです。
options PFIL_HOOKS # pfil(9) packet filter hooks options IPFILTER_LOG # ipmon(8) log support
NetBSD で IPfilter を使ったファイヤーウォールをします。 IPfilter の operation についてのより詳しいことは ipf(4) と ipf(8) のマニュアルページをご覧ください。 設定例は Section 10.2.1.1 です。
# Compatibility with 4.2BSD implementation of TCP/IP. Not recommended. #options TCP_COMPAT_42
このオプションは、ネットワーク上に 4.2BSD か、 そのネットワークスタックが使われている機械がある場合に必要です。 ネットワーク上に1台以上 4.2BSD-systems があると、 正しいブロードキャストアドレスの設定に注意する必要があります。 4.2BSD はネットワークのコードのブロードキャストアドレス関係にバグがあり、 このバグは、ブロードキャストアドレス中の すべてのホストビットを "0" にすることを強要します。 この TCP_COMPAT_42 オプションで、これが確実にできます。
options NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM
これらのオプションは、カーネルが NFS ルートファイルシステムを使うと言った時に、 DHCP あるいは BOOTPARAM プロトコル経由のデータを見るようにします。 更なる情報は diskless(8) マニュアルページをご覧ください。
# Kernel root file system and dump configuration. config netbsd root on ? type ? #config netbsd root on sd0a type ffs #config netbsd root on ? type nfs
これらの行に、カーネルがおかれているルートファイルシステムの 場所とファイルシステムの種類を記述します。 もし、カーネルを tlp0 インターフェース経由の NFS ルートファイルシステムに置きたいならば、 "root on tlp0 type nfs" とします。デバイスやタイプの代わりに ? を使うと、 カーネルは自分のある場所だと 判断しようとします。
# ISA serial interfaces com0 at isa? port 0x3f8 irq 4 # Standard PC serial ports com1 at isa? port 0x2f8 irq 3 com2 at isa? port 0x3e8 irq 5
PPP や SLIP が使いたければ シリアルインターフェース (com) がいくつか必要です。 他に、 USB や PCMCIA 、 PUC で接続する方法もあります。
# Network Interfaces
この幾分長いリストにはすべてのネットワークドライバーが書かれています。 コメントに従って、ついているハードウェアーに適合するものを 選んでください。 大抵のデバイスに関しては、 マニュアルページがあります。たとえば tlp(4), ne(4), 等。
# MII/PHY support
このセクションはネットワークカードの media independent interfaces 一覧です。 ハートウェアにあわせたものを選んで書いてください。 わからない場合は、すべて有効にしておき、カーネルがどれを使うか見ます。 更なる情報は mii(4) マニュアルページをご覧ください。
# USB Ethernet adapters aue* at uhub? port ? # ADMtek AN986 Pegasus based adapters cue* at uhub? port ? # CATC USB-EL1201A based adapters kue* at uhub? port ? # Kawasaki LSI KL5KUSB101B based adapters
USB-ethernet アダプターは帯域幅は約 2MBit/s しかありませんが、 とても便利なものです。もちろん、ここでは扱っていない ハードウェアー関連のほかの USB 関連のオプションも必要です。 更なる情報は 該当するマニュアルページをご覧ください。
# network pseudo-devices pseudo-device bpfilter 8 # Berkeley packet filter
この擬似デバイスは全種類のパケットを嗅ぎまわることを許すものです。 tcpdump や、また、 rarpd や、ネットワークトラフィックを把握するための いくつかの他のアプリケーションにも必要になります。 更なることは bpf(4) をご覧ください。
pseudo-device ipfilter # IP filter (firewall) and NAT
これは、ファイヤーウォール・ NAT (IP Masquerading) 等に使われる IPfilter の パケットフィルター・カーネルインターフェースを有効にします。 更なる情報は ipf(4) と Section 10.2.1.1 をご覧ください。
pseudo-device loop # network loopback
これは、ルーティング同様、今日、多くのプログラムが使っている "lo0" ソフトウェアループバックネットワークデバイスで、 削るべきではありません。 より詳しくは lo(4) をご覧ください。
pseudo-device ppp 2 # Point-to-Point Protocol
PPP をシリアルインターフェース上、あるいはイーサネットで(PPPoE) 使いたければ、このオプションが必要です。 このインターフェースの より詳しいことは ppp(4) をご覧ください。
pseudo-device sl 2 # Serial Line IP
シリアル回線 IP はシンプルな IP over (well :) serial lines カプセル化です。 これには IP アドレスネゴシエーション等は含まれていないので、 今日では、そんなに広く使われているわけではありません。 sl(4) をご覧ください。
pseudo-device strip 2 # Starmode Radio IP (Metricom)
もし、古い Metricon Ricochet パケット無線ワイヤレスネットワークデバイスを手 にすることになったら、それを使うには、この pseudo-device を使います。 詳しい情報は strip(4) マニュアルページをご覧ください。
pseudo-device tun 2 # network tunneling over tty
このネットワークデバイスは ネットワークパケットを デバイスファイル /dev/tun* にトンネルするのに使われます。 tun0 インターフェースにルーティングされたパケットは /dev/tun0 から読むことができ、 tun0 ネットワークインターフェースに送るには /dev/tun0 に書き込むことでできます。 これは、たとえばユーザーランドでの QoS ルーティングの実装に 使うことができます。 詳しくは tun(4) をご覧ください。
pseudo-device gre 2 # generic L3 over IP tunnel
GRE カプセル化は IP 上の任意のレイヤー 3 パケットトンネルに使います。 例えば VPNの実装に。 更なることは gre(4) をご覧ください。
pseudo-device ipip 2 # IP Encapsulation within IP (RFC 2003)
異なるカプセル化フォールマットを用いる、ほかの IP-in-IP カプセル化デバイス。 詳しくは ipip(4) マニュアルページをご覧ください。
pseudo-device gif 4 # IPv[46] over IPv[46] tunnel (RFC 1933)
GIF インターフェースを使うことでトンネルができ、 たとえば IPv6-capable uplink (ISP) が無いとき 接続性を得るのに使われる IPv6 over IPv4 などができます。 ほかの操作を混ぜることもできます。 いくつかの例を gif(4) マニュアルページでご覧ください。
#pseudo-device faith 1 # IPv[46] tcp relay translation i/f
faith インターフェースはユーザーランドでの IPv6-to-IPv4 TCP 中継、 たとえば プロトコル変換、の実装のために IPv6 TCP トラフィックをキャプチャーします。 このデバイスについてのより詳しいことは faith(4) マニュアルページをご覧ください。
#pseudo-device stf 1 # 6to4 IPv6 over IPv4 encapsulation
このネットワークデバイスは あらかじめ設定する必要のない IPv6 over IPv4 トンネルに使います。 外部向けのバケットのソースアドレスに IPv4 アドレスを含むことで IPv4 による戻りのルーティングがされます。 より詳しくは stf(4) マニュアルページと Section 10.2.4 をご覧ください。
pseudo-device vlan # IEEE 802.1q encapsulation
このインターフェースは IEEE 802.1Q バーチャル LAN のサポートのためのもので、 Ethernet フレームに "vlan" ID タグを打つことを許します。 正しく設定されたスイッチ(もちろん VLAN のサポートも)を使うことで 1セットとなる機械以外の機械から見ることのできない(ブロードキャストや、その他について) バーチャル LANを構築することができます。 これに関する更なる事は、 vlan(4) マニュアルページにあります。
ネットワーク設定に使われるファイルのリストは 次の通りです。 これらのファイルの利用法は、いくつかについては、 最初の章にすでに出ており、次の節に記述します。
ローカルホストデータベースのファイル。各行には わかっているホストの IP アドレス、そのホスト名とエイリアス名が 書かれています。 小規模ネットワークでは name server を使わずに hosts ファイルだけの設定で済ませられます。
このファイルは the Internet Domain Name System に アクセスする方法を指定します。 一般的に、ネームサーバーのアドレスを入れます。
このファイルは起動時に ネットワークカードの自動設定をするのに使われます。
ゲートウェイの IP アドレスを書きます。
Name service switch 設定ファイルです。これは ホスト名、ユーザー、グループ等についての情報を含む さまざまなデータベースの検索法を制御するものです。 特にこのファイルでは、 データベースの調べる順番を指定します。 たとえばこの行:
hosts: files dnsホストのデータベースとして2つの情報源を指定していて、 files (ローカルの /etc/hosts ファイル) と DNS (インターネット・ドメインネーム・システム ) であり、 DNS 検索の前に ローカルのファイルを検索します。
通常、このファイルを書きかえる必要はありません。
インターネット接続は多くの種類があり、: この節では 一般的な、電話線にモデムを使ってプロバイダーに PPP プロトコルでつなぐ方法について 書きます。 接続するには、 次のステップをする必要があり:
プロバイダーから必要な情報を入手します。
/etc/resolv.conf ファイルを編集し /etc/nsswitch.confを確認します。
もし /etc/ppp ディレクトリー及び /etc/ppp/peers ファイルが、なければ作ります。
接続スクリプト、 chat ファイル、 pppd オプションファイルを作ります。
ユーザー - パスワード認証ファイルを作ります。
上のリストを見ると、 面倒でとても多くの作業が必要に見えます。 実際は、各段階1つは非常に簡単で: いくつかの小さいテキストを作ったり 書き換えたり、簡単な確認をするだけです。 次の例では、モデムを 2番目のシリアルポート /dev/tty01 (DOS の COM2 )につないでいるものとします。
最初に、プロバイダーに接続に必要な情報を尋ねます これは:
最寄りの POP の電話番号
使われている認証法
接続ユーザー名とパスワード
ネームサーバーの IP アドレス
/etc/resolv.conf ファイルには、プロバイダーから知らされた情報、 特に DNS アドレスサーバーのアドレスを指定することが必要です。. この例では 2つの DNS は "194.109.123.2" と "191.200.4.52" です。
註: 最後の行 (lookup file bind) は/etc/hosts ファイルに無い名前だけに ネームサーバーを使うように 指示するものです。 この行はコメントアウトされていますが、それは NetBSD 1.4 からは 何も必要無いからで; この種の情報は現在では /etc/nsswitch.conf ファイルにて定義します。 new Name Service Switch で基本システム情報を調べるプログラムが使うデータベースの アクセスを変更します。
この /etc/nsswitch.conf ファイルの例です。
Example 10-2. nsswitch.conf
# /etc/nsswitch.conf group: compat group_compat: nis hosts: files dns netgroup: files [notfound=return] nis networks: files passwd: compat passwd_compat: nis
註: 1行、 "hosts:" で始まる行だけ変更していて; ホスト名の解決時に DNS を使った検索の前に、 ローカルの hosts ファイルを引くようにします。
/etc/ppp ディレクトリーと /etc/ppp/peers ディレクトリーに PPP 接続の設定ファイルを置きます。 新規インストールしたばっかりの NetBSD には存在しないので、 作らなければなりません (chmod 700 で)。
接続スクリプトには pppd コマンドラインのパラメーターが使え; スクリプトは /etc/ppp/peers に置き、 普通はファイル名にプロバイダー名をつけます。 たとえば、プロバイダー名が BigNet で、プロバイダーの 接続ユーザー名が alan なら 接続スクリプトの例は:
Example 10-3. 接続スクリプト
# /etc/ppp/peers/bignet connect '/usr/sbin/chat -v -f /etc/ppp/peers/bignet.chat' noauth user alan remotename bignet.it
上の例では、接続に使うスクリプトを chat ファイル に書きます。スクリプト中のオプションの詳細は pppd(8) マニュアルページに 書かれています。
註: 接続に問題が起こっているなら、接続スクリプトに次の2行を 追加してみます。
debug kdebug 4すると、 接続しようとしたときにシステムが実行した操作の 記録がとられます。 pppd(8) や syslog.conf(5) をご覧ください。
接続スクリプトは 物理接続 (モデムの初期化、ダイヤル発信、 ...)をするために chat アプリケーションを呼び出します。 chat のパラメーターは 接続スクリプト中にインラインで指定できますが、 別のファイルに分けるほうが良いでしょう もし、 たとえば POP の電話番号が 02 99999999 とすると chat スクリプトの例は:
Example 10-4. chat ファイル
# /etc/ppp/peers/bignet.chat ABORT BUSY ABORT "NO CARRIER" ABORT "NO DIALTONE" REPORT CONNECT SAY "Calling BigNet" '' ATDT0299999999 CONNECT ''
註: chat ファイルに 問題があるなら、 cu プログラムで手動で POP に接続してみて 受信した文字列を厳密に確かめてください。 cu(1) をご覧ください。
認証の間、2つのシステムは互いに相手の身元を確かめますが、 でも実際にはあなたがプロバイダーを 認証することはなくて、次に示す方法の1つを使って プロバイダーから確認されれば良いだけです。
login
PAP/CHAP
ほとんどのプロバイダーが PAP 認証か CHAP 認証を使います。
PAP の認証情報は /etc/ppp/pap-secrets に置かれ、 CHAP のは /etc/ppp/chap-secretsに置かれます。 これは次のフォーマットの行で:
user * password
例えば:
alan * pZY9o
註: セキュリティの為に pap-secrets ファイルと chap-secrets ファイルは root の所有にしてパーミッションを "600" にして置くべきっす。
この認証方式は今日ではあまり使われなくなりました; もしプロバイダーが login 認証を使うなら、 PAP/CHAP ファイルの代わりに chat ファイル中にユーザー名とパスワードを書きます。 それによって対話式のログインをシミュレートします。 この場合、 chat ファイルはふさわしいパーミッションを設定してください。
次の例は login 認証の chat ファイルです:
pppd オプションファイルの作成は /etc/ppp/options にします (chmod 644)。
オプションの意味は pppd(8) マニュアルページをご覧ください。
接続する前に、モデムの簡単な試験すると言うことは 良い考えで、物理的な接続と、 コンピューターとモデムが通信できることを確認しましょう。テストには cu プログラムが使え、 次のようにします。
次の内容で /etc/uucp/port ファイルを作ります:
type modem port modem device /dev/tty01 speed 115200(/dev/tty01 は接続されているデバイスの場所に合わせて 替えてください)
モデムにコマンドの送信を始めるために cu -p modem と入力します。 例えば:
# cu -p modem Connected. ATZ OK ~. Disconnected. #上の例ではモデムにリセットコマンド (ATZ) を送り、 OK と応答がありました: 通信ができています。 cu を抜けるには、例の中にあるように ~ (チルダ) と引き続き . (ドット) を入力してください。
モデムが動作しなければ、正しいポートに接続されているか 確認してください (つまり、正しいポートに対して cu を使います。 ケーブルも、ちょくちょくトラブルの元となります。
註: cu の起動時に "Permission denied" と言うメッセージが出るなら、 /dev/tty## デバイスの所有者を確認してください、それは uucp であるべきです。 例えば:
$ ls -l /dev/tty00 crw------- 1 uucp wheel 8, 0 Mar 22 20:39 /dev/tty00所有者が root だと、次のようなことが起こります:
$ ls -l /dev/tty00 crw------- 1 root wheel 8, 0 Mar 22 20:39 /dev/tty00 $ cu -p modem cu: open (/dev/tty00): Permission denied cu: All matching ports in use
準備が整ったので、 次のコマンドでプロバイダーに接続します:
# pppd call bignet
ここで、 bignet は すでに書かれた 接続スクリプト名です。 pppd の接続メッセージを見るには、 次のコマンドで:
# tail -f /var/log/messages
切断するには、 pppd を kill -HUP して ください。
接続動作がきちんと動くなら、 毎回コマンドを打たずに、それをスクリプトにしましょう。 このスクリプト2つを、例えば、 ppp-up と ppp-down と名付けます。
ppp-up をプロバイダーへ接続するのに使い:
Example 10-7. ppp-up
#!/bin/sh MODEM=tty01 POP=bignet if [ -f /var/spool/lock/LCK..$MODEM ]; then echo ppp is already running... else pppd call $POP tail -f /var/log/messages fi
ppp-down を接続を切るときに使います:
Example 10-8. ppp-down
#!/bin/sh MODEM=tty01 if [ -f /var/spool/lock/LCK..$MODEM ]; then echo -f killing pppd... kill -HUP `cat /var/spool/lock/LCK..$MODEM` echo done else echo ppp is not active fi
この2つのスクリプトの利点は、 pppd がアクティブになると /var/spool/lock ディレクトリーに LCK..tty01 ファイルが作られることで、 このファイルには pppd プロセスの pid が記録されています。
この2つのスクリプトは実行可能にしておきます:
# chmod u+x ppp-up ppp-down
ネットワーキングは文句なしに Unix と NetBSD の主な強みで: ネットワーク構築は、強力で、設定が簡単で、さらに、安価にできます。 なぜなら、通信なりサーバーを構築するのに、追加ソフトウェアを 購入する必要が無いからです。 Section 10.2.1 では、 NetBSD マシンをネットワークのゲートウェイとして 動かすための説明をします: IPNAT を使うと、 ゲートウェイマシンによる1本の接続で ネットワーク上の全ホストがインターネットに到達できます。 ネットワーク構築前にすることは、購入するネットワークカードが NetBSD でサポートされているか調査することだけです ( INSTALL ファイルにサポートされているデバイスの一覧があるので調べます)。
最初に、ネットワークカードがインストールされていて、 ケーブルでハブ、スイッチングハブあるいは直接に繋がれている必要があります (Figure 10-1 をご覧ください)。
次に、ネットワークカードが カーネルに検出されているか調べます。 dmesg コマンドの出力を調べてください。 次のはカーネルが NE2000 クローンとして正しく検出されている例で:
... ne0 at isa0 port 0x280-0x29f irq 9 ne0: NE2000 Ethernet ne0: Ethernet address 00:c2:dd:c1:d1:21 ...
カードがカーネルに検出されていなければ、 カーネルコンフィグレーションファイルで有効になっているのをチェックし、 カードとカーネルの IRQ 設定が揃っているのを確かめてください。 例えば、これはコンフィグレーションファイルの isa NE2000 の行で、 ; カーネルは、カードが IRQ 9 を使うことを期待しています。
... ne0 at isa? port 0x280 irq 9 # NE[12]000 ethernet cards ...
カードの設定が違うと、起動した時、発見されないでしょう。 この場合、カーネルコンフィグレーションファイルを書き換えて 新しいカーネルをコンパイルするか、カードの設定を変更します (たいてい、セットアップディスクを使うか、古いカードでは、 カード上のジャンパースイッチを変える必要があります)。
次のコマンドで、ネットワークカードの現在の設定が出てきます:
# ifconfig ne0 ne0: flags=8822<BROADCAST,NOTRAILERS,SIMPLEX,MULTICAST> mtu 1500 media: Ethernet 10base2
ネットワークカードの設定のソフトウェア部分はとても簡単です。 IP アドレス "192.168.1.1" (これは内部ネットワーク用に 予約されています) がそのカードに割り当てられました。
# ifconfig ne0 inet 192.168.1.1 netmask 0xffffff00
さきのコマンドをもう一度繰り返すと、今度は別の結果になります:
# ifconfig ne0 ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500 media: Ethernet 10base2 inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
ifconfig の出力が変わりました: the IP アドレスが表示され、2つのフラグ "UP" と "RUNNING" が出ました。 インターフェースが "UP" でなければ、 システムはパケットを送信しません。
このホストには 192.168.1.1 という内部ネットワーク用の IP アドレスが与えられました。これは インターネットからは到達できません。 設定が終わったので、テストをします; ネットワーク上に、アクティブなホストが他にあれば ping でテストができます。 例えば、アクティブなホストが 192.168.1.2 とすると:
# ping 192.168.1.2 PING ape (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=1.286 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=255 time=0.649 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=255 time=0.681 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=255 time=0.656 ms ^C ----ape PING Statistics---- 4 packets transmitted, 4 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.649/0.818/1.286/0.312 ms
この設定では、次に起動した時に ネットワークカードの設定を繰り返す必要があります。 起動毎に設定し直さなくて済むようにするには 2つのことをする必要があって: 最初に、 /etc/ifconfig.ne0 ファイルを作り、 次の行を書きます:
inet 192.168.1.1 netmask 0xffffff00
次に、 /etc/rc.conf ファイルで 次のオプションを設定します。
auto_ifconfig=YES
次に起動したときには、 設定は自動的に行われます。
/etc/hosts ファイルは IP アドレスと文字による別名のデータベースで: 内部ネットワークに属する全てのホストのアドレスを書いておきます。 例えば:
Example 10-9. /etc/hosts
# $NetBSD: hosts,v 1.4 1997/01/09 05:33:14 mikel Exp $ # # Host Database # This file should contain the addresses and aliases # for local hosts that share this file. # It is used only for "ifconfig" and other operations # before the nameserver is started. # # 127.0.0.1 localhost # # RFC 1918 specifies that these networks are "internal". # 10.0.0.0 10.255.255.255 # 172.16.0.0 172.31.255.255 # 192.168.0.0 192.168.255.255 192.168.1.1 ape.insetti.net ape 192.168.1.2 vespa.insetti.net vespa 192.168.1.0 insetti.net
/etc/nsswitch.conf は Example 10-2 に説明されているように 変更します。
註: この例では、ネットワークカードがカーネルによって ne0 と認識されているので、 /etc/ifconfig.ne0 と言うファイルを作りました。 他のカードを使う場合は、 ファイル名の ne0 と言う部分を カードに合わせて適切な名前にしてください。
要約すると、ネットワーク設定には次のことを行うことが必要です: ネットワークカードを装着し、物理的に接続します。 次にそれらを設定し (ifconfig で)、 最後に、 /etc/hosts ファイルと /etc/nsswitch.conf ファイルを変更します。 この種のネットワーク管理は非常に簡単で、 手の込んだ事を必要とせず、小規模ネットワークに適しています。
ネットワークに繋いでいない2台のコンピューター間でファイル転送が 必要な時、特にフロッピーを使ってファイルをコピーするのが実用的では ない時には、2台のコンピューターを シリアルケーブル ( null modem ケーブル(訳註:クロスケーブル))でネットワークすることができます。 次の節に設定について記述します。
両方の機械で NetBSD が走っている場合 が一番簡単で: SLIP プロトコルで接続するのが非常に簡単です。 1台目の機械に次のコマンドを入力し:
# slattach /dev/tty00 # ifconfig sl0 inet 192.168.1.1 192.168.1.2
2台目の機械には、次のコマンドを入力し:
# slattach /dev/tty00 # ifconfig sl0 inet 192.168.1.2 192.168.1.1
接続試験には ping が使え; 例えば、 2台目の機械でこうします:
# ping 192.168.1.1
これが全部動いていれば、 2台間のネットワーク接続が動いていて、 ftp や telnet や、他、 同様なコマンドを実行できます。 文字列によるホスト名は /etc/hosts ファイルに書いておくことができます。
上の例では、両方のパソコンで最初のシリアルポート (/dev/tty0) を使いました。 他のポートを使う場合、 デバイス名を置き換えてください。
192.168.x.x といったIP アドレスは "内部" ネットワークの為に予約されています。 1台目のパソコンを 192.168.1.1 、 2台目には 192.168.1.2にしました。
接続を高速化するために slattach に -s speed オプションを指定できます。
inetd が動いていて ftpd サーバーが有効になっているだけで ftpでファイルの転送ができます。
Linux: 2台のうち1台が Linux 機なら、 Linux 側のコマンドが若干違うだけです。 Linux 機にアドレス 192.168.1.2 をつけるなら、 次のコマンドで:
# slattach -p slip -s 115200 /dev/ttyS0 & # ifconfig sl0 192.168.1.2 pointopoint 192.168.1.1 up # route add 192.168.1.1 dev sl0最初のコマンドで "&" を忘れないようにしてください。
NetBSD と Windows NT は (大抵) シリアル クロス ケーブルでネットワークを組めます。 基本的には、 Windows NT 上で "Remote Access" 接続を行い、 NetBSD 上では pppd を起動します。
/root に .ppprc ファイルを作ってから、 root で pppd を実行します。 次の例を元に 手を加えてください。
connect '/usr/sbin/chat -v CLIENT CLIENTSERVER' local tty00 115200 crtscts lock noauth nodefaultroute :192.168.1.2
最初の行については、この節の後ろで説明します; 192.168.1.2 は Windows NT 機につなぐ NetBSD の IP アドレスで; tty00 は接続に使うシリアルポート (1番目のシリアルポート)です。
NT 側の null modem デバイスをコントロールパネル(モデムのアイコン) からインストールし、そのモデムを使って Remote Access 接続を作る必要があります。 null modem ドライバーは Windows NT 4 では標準ですが、ですが、それは 100% null modem ではなく: 接続がアクティブになってから、 NT は CLIENT と言う文字列を送信し、 CLIENTSERVER と言う応答が帰ってくるのを待ちます。 これは、 .ppprc ファイルの最初の行: chat が、接続が activated か、落ちるかの時に NT に応答する必要があるということです。
Remote Access 接続の設定の中でつぎの指定をする必要があり: null modem を使う、 電話番号を "1" (とにかく、使われていないもの)、 PPP サーバー、 TCP/IP プロトコルだけを有効に、 IP アドレスとネームサーバーはサーバー (この場合 NetBSD)からのものを使う。 ハードウェア転送制御を選び、ポートの設定は 115200 8N1 とします。
これで接続のための準備が整いました。
2台のシリアルポートを クロスケーブルで繋ぎます。
NetBSD の pppd を起動します。 pppd のメッセージを見るには: tail -f /var/log/messages)。
Windows NT の Remote Access をアクティブにします。
Windows 95 の設定も Windows NT の場合と同様で: Windows 95 のリモートアクセスと NetBSD の PPP サーバーを使います。 ほとんどの (全部ではないかもしれませんが) Windows 95 リリースでは null modem ドライバーが入っていないので、 少し面倒なことになります。 一番簡単な解決法はインターネット上で null modem ドライバーを探して (それは小さな .INF ファイルです)、 Windows NT の場合と同様にすることです。 唯一違うのは .ppprc ファイルの最初の行 ( chat 呼び出し) が無くても良いことです。
Windows 95 で real null modem ドライバーが見つからなかった場合でも、 ちょっとしたトリックで可能です:
Section 10.1.5.2 に書かれているような Remote Access 接続を "Standard Modem" を使用して作ります。
.ppprc 中の chat の呼び出し行を次のように書き換えます。
connect '/usr/sbin/chat -v ATH OK AT OK ATE0V1 OK AT OK ATDT CONNECT'
Section 10.1.5.2 に書かれているようにして接続をします。
この方法では chat プログラムは接続されるときに呼ばれ Windows 95 に標準モデムと思わせるような エミュレートをし、 Windows 95 に対して 標準モデムがするだろう応答と同じ応答をします。 Windows 95 がモデムコマンド文字列を送出すれば chat は必ず OK を返します。
この章 (Introduction to TCP/IP Networking) は Hubert Feyrer <hubert@feyrer.de> による寄稿です
わかりにくい頭字語 IPNAT は Internet Protocol Network Address Translation のことで、 内部ネットワークをインターネットに繋ぐものです。 この意味は たった1つの "本物の" IP アドレス、 スタティック(静的) あるいは ダイナミック(動的) IP アドレスで、 IPNAT が走っているゲートウェーによって 内部ネットワークの全てのホストが同時にインターネットに接続できる にするものです。
IPNAT の利用法の例が /usr/share/examples/ipf ディレクトリーに幾つか有りますので: BASIC.NAT ファイル及び nat-setup を見てください。
この節で記述する設定例の詳細は Figure 10-1 の通りで: host 1 はモデムでプロバイダーに電話をかけ、 ダイナミック IP アドレスを貰ってインターネットに接続します。 host 2 及び host 3 は 通常設定ではインターネットに接続できませんが: IPNAT がそれを 可能にし: host 1 が hosts 2 及び 3 のゲートウェーとして働きます。
IPNAT を使うにはカーネルコンフィグレーションファイルの "pseudo-device ipfilter" を有効にしたカーネルを 使う必要があります。 現在のカーネルが有効になっているかを調べる方法は:
# sysctl net.inet.ip.forwarding net.inet.ip.forwarding = 1
上の例のように結果が "1" にならば有効になっていて、そうではなく、 "0"ならば、このオプションが無効になっています。 2通りの方法があって:
デフォルトで GATEWAY オプションを有効になっている 新しいカーネルをコンパイルする。
次のコマンドで、現在のカーネルのそのオプションを 有効にする:
# sysctl -w net.inet.ip.forwarding=1
追加される sysctl 設定は /etc/sysctl.conf に書いておく事で、起動時に自動的に設定されます。 この場合書いておくのは
net.inet.ip.forwarding=1
この節の残りでは PPP 接続によりプロバイダーに接続される度に 自動的にがかかるようになる IPNAT の設定を書きます。 この設定では、(例えば)家庭ネットワークの全てのホストが、 それが NetBSD を使ってなくても、ゲートウェー機を通じて インターネットに接続できるようになります。
最初に、 /etc/ipnat.conf ファイルを作り、次のルールを書きます:
map ppp0 192.168.1.0/24 -> 0/32 proxy port ftp ftp/tcp map ppp0 192.168.1.0/24 -> 0/32 portmap tcp/udp 40000:60000 map ppp0 192.168.1.0/24 -> 0/32
192.168.1.0/24 は割り当てたネットワークアドレスです。 この設定ファイルの1 行目はオプションで: active FTP がゲートウェー越えで動けるようにするものです。 2行目は tcp パケット及び udp パケットを正しく扱えるようにするもので; 複数対1 の通信関係の為に portmapping は重要です。) 3行目は ICMP, ping 等を有効にします。
/etc/ppp/ip-up ファイルを作ります; これは PPP 接続が動き出す毎に 自動的に呼び出されます。
#!/bin/sh # /etc/ppp/ip-up /etc/rc.d/ipnat forcestart
/etc/ppp/ip-down ファイルを作ります; これは PPP 接続が閉じられたとき 自動的に呼び出されます。
#!/bin/sh # /etc/ppp/ip-down /etc/rc.d/ipnat forcestop
ip-up と ip-down は共に実行可能であることが必要です :
# chmod u+x ip-up ip-down
ゲートウェイ機の準備ができました。
ゲートウェイ機上に /etc/resolv.conf ファイルのようなものを つくります。
次のコマンドを入力して:
# route add default 192.168.1.1
192.168.1.1 は前節で設定したゲートウェイ機の アドレスです。
もちろん、毎回打ちこむことはしたくないでしょうから、 良い方法があって、/etc/rc.conf ファイルの "defaultroute" エントリーで 定義するか、 /etc/mygate ファイルにゲートウェイのアドレスを 書くかの どちらかででき: /etc/mygate (または defaultroute オプション) の内容を route add default コマンドの引数として使うことで、 デフォルトルートはシステム初期化中に自動的に設定されます。
クライアント機が NetBSD を使っていなければ、設定は変わります。 Windows パソコンでは、TCP/IP プロトコルのプロパティ、ゲートウェイで NetBSD ゲートウェイの IP アドレスを ゲートウェイとして設定します。
以上がクライアント機に必要なことです。
次のコマンドが、問題の診断に便利です:
ルーティングテーブルの表示 ( route show と同様)
クライアント上で、 行き先までのパケットのルートを追跡して表示します
ゲートウェイ上で TCP/IP traffic のモニターに使います
これで、 NFS を使って、ネットワークを通じてファイルやディレクトリーの 共有するための準備ができました。 ファイル共有の視点で見て、ファイルやディレクトリーの アクセスを提供するコンピューターを server と呼び、それらのファイルやディレクトリーを 使うコンピューターを client と呼びます。 1台のコンピューターでサーバーとクライアントに同時になることができます。
カーネルはクライアント及びサーバーそれぞれにふさわしいオプションで コンパイルされている必要があります (そのオプションは、カーネルコンフィグレーションファイル 中に簡単に見つけられます。 NFS 関係のカーネルオプションに関する詳しいことは Section 10.1.1 を ご覧ください。
サーバーでは /etc/inetd.conf の RPC サービスが有効になっている必要があります。
サーバーの /etc/rc.conf では inetd と portmap デーモン、 nfs_server オプションが有効になっている必要があります。
クライアントの /etc/rc.conf では inetd と nfs_client が有効になっている 必要があります。
サーバーはエクスポートするディレクトリーを /etc/exports に list してから、 kill -HUP `cat /var/run/mountd.pid コマンドを実行します。
クライアント機が NFS でリモートディレクトリーにアクセスできるようになるには:
サーバーがそのディレクトリーをエクスポートしている
クライアント機が次のコマンドでリモートディレクトリーをマウントしている mount server:/xx/yy /mnt
mount コマンドはリモートディレクトリーに関するオプションが 豊富にあって、あまり直感的に判るものでは有りません (控えめに言っても)。
警告: この複雑な設定例は NetBSD メーリングリストで 仕入れましたが、 私は試していません; NFS を働かせる方法のアイデアにはなるでしょう。
シナリオは次の通り: クライアント機が5台 (cli1, ..., cli5) で、サーバー (buzz.toys.org) の幾つかのディレクトリーを使います。 幾つかのディレクトリーは 各クライアント専用にエクスポートしていて、 他のディレクトリーを 全てのクライアント機で 共有します。
サーバーからエクスポートされているディレクトリーは:
5つのクライアントマシンそれぞれの 固有のルートディレクトリー。
5つのクライアントマシンそれぞれのスワップディレクトリーで5つ。
/usr ディレクトリー; 全クライアント共通。
全クライアントマシンで共通の /usr/src ディレクトリー 。
次のファイルシステムがサーバー上にあり
/dev/ra0a on / /dev/ra0f on /usr /dev/ra1a on /usr/src /dev/ra2a on /export
各クライアントは次のファイルシステムが必要です
buzz:/export/cli?/root on / buzz:/export/common/usr on /usr buzz:/usr/src on /usr/src
サーバーの設定は次のように:
# /etc/exports /usr/src -network 123.45.67.0 -mask 255.255.255.0 /export -alldirs -maproot=root -network 123.45.67.0 -mask 255.255.255.0
クライアントマシンでは /etc/fstab の中身を
buzz:/export/cli?/root / nfs rw buzz:/export/common/usr /usr nfs rw,nodev,nosuid buzz:/usr/src /usr/src rw,nodev,nosuid
上の例の最初の行の "?" 文字 は クライアント機ごとにつけた番号です。
NFS (や他の) マウントの問題 は、 通常、それをするのに root 権限になる必要があって、 ユーザーには不便です。 amd を使うことで、 certain ディレクトリー (ここでは /net)を だれもが一般ユーザーで NFS-mount でき、 NFS サーバーに長いこと実際にエクスポートされているファイルシステムのようにアクセスできる設定が できます。
certain サーバーがファイルシステムの エクスポートをしているか、また、それはどれか、調べるには、 showmount コマンドに -e (export) スイッチを付けて:
% showmount -e wuarchive.wustl.edu Exports list on wuarchive.wustl.edu: /export/home onc.wustl.edu /export/local onc.wustl.edu /export/adm/log onc.wustl.edu /usr onc.wustl.edu / onc.wustl.edu /archive Everyone
あるディレクトリー (例えば /archive/systems/unix/NetBSD) の下をアクセスするためにディレクトリーをマウントしたければ、 単にそのディレクトリーに行くだけで:
% cd /net/wuarchive.wustl.edu/archive/systems/unix/NetBSD
ファイルシステムは ( amd によって) マウントされ、 ディレクトリーが システムのスーパーユーザーによって マウントされたように、あらゆるファイルの アクセスができます。
/net ディレクトリーの設定は 次のようにしてできます (基本 amd 設定も含みます):
/etc/rc.conf で、次の変数を設定し:
amd=yes
mkdir /amd
mkdir /net
/usr/share/examples/amd/master より 、 /etc/amd/masterに次の通り書き:
/net /etc/amd/net
/usr/share/examples/amd/net を 例に、 /etc/amd/net に次の通り書きます:
/defaults type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root * host==${key};type:=link;fs:=/ \ host!=${key};opts:=ro,soft,intr,nodev,nosuid,noconn
リブートするか、amd を手動で (再)起動 し:
# sh /etc/rc.d/amd restart
この節では話題を IPv6 ネットワーク接続のしかたについてに集中しますが、 - ネイティブ接続をするのは まだ簡単なことではなく - ネイティブの IPv6 ピアーが出てくるまでの間の ネイティブ IPv6 接続 の代わりについて記述します。
IPv6 ネイティブを提供する ISP を見つけるにはかなりの幸運が必要です。 次に必要なものは、 traffic を扱えるルーターです。 現在のところ、 全てのルーターメーカーが IPv6 のサポートをしているわけではなく、 もし、サポートしていても、ハードウェアで高速化された IPv6 ルーティングやスイッチングがあると言うわけでは有りません。 今日、むしろルーターハードウェアーの 安い代替案として、普通のパソコンをルーターとして設定して使われるのが一般的です。 例えば、とある Linux や BSD 、 NetBSD のような、 を使い、ルーティングプロトコルの扱いに Zebra のようなソフトウェアを使うことです。 このソリューションは、今日、 IPv6 接続性を求むサイトで一般的なことです。 この欠点は、 IPv6 をサポートする ISP が必要なことで、 IPv6 だけの uplink が必要なことです。
これが、あなたの選択肢に入る余地が無いとしても、 まだ IPv6 接続性を得る方法があって、 トンネルを使うという方法です。 Figure 10-2 にあるように、ケーブル上を IPv6 が流れる代わりに、 IPv4 のカプセルに包まれた IPv6 パケットが流れるものです。現存している IPv4 インフラを使い、 カプセル化されたパケットを IPv6 が使える uplink に送り、 そこでカプセルを解いて、ネイティブ IPv6 経由で IPv6 パケットを発送してもらいます。
トンネルを使うとき、2つの可能性があります。 1つはいわゆる "configured" トンネルの利用で、 もう1つは "automatic" トンネルの利用です。 "configured" トンネルはトンネルの両端で準備をすることが必要で、 設定情報を交換する何らかの登録のようなものとともに用いられます。 例えばこのような configured トンネルに [RFC1933] に書かれている IPv6-over-IPv4 encapsulation があり 例えば NetBSD では gif(4) デバイスに実装されています。
"automatic" トンネルは なんらかの種類の IPv6 接続性を持つ public サーバーから成り、例えば 6Bone 経由です。 サーバーは public な 接続性情報をつくり、 特に登録をすることもなしにアップリンクに使える トンネルプロトコルを動かしてています。 このようなプロトコルで良く使われているものに [RFC3056] に書かれている 6to4 メカニズムがあり、 NetBSD では stf(4) デバイスの中に実装されています。 IPv6-情報を登録することを要求されないメカニズムには、ほかに 6over4 があり、 IPv6 を 例えばイーサネットや FDDI の代わりに、 マルチキャストが有効な IPv4 ネットワークの上で運ぶ実装です。 6over4 のドキュメントは [RFC2529] です。 この主な欠点はマルチキャスト infrastructure が必要なことです。. もし、マルチキャスト環境が使えなければ、 直接 configured IPv6 トンネルを設定すればよく、 この場合、そんなに困ることではありません。
6to4 は IPv4 uplink だけを持つホストで IPv6 接続性を手に入れる 簡単な方法です。 とくに、 Section 9.1.7 に書いてある background を have るならば。 ダイナミックに割り当てられた IPv4 アドレスと同様にスタティックなものが用いられ、 例えば、今日ではモデムダイアルアップ方式でも見つけられます。 ダイナミック IPv4 アドレスなら、 IP アドレス変化によって、 データの受信に問題が起こり、 つまり、 永続性のサービスを run できません。
この節の設定例は NetBSD 1.5.2 用のものです。
あなたのサイトの 6to4 IPv6 設定は1つの IPv6 アドレスから 成り立っておらず; その代わり、 /48 ネットワーク全体が手に入ります! その IPv6 アドレスは、あなたの (1つの) IPv4 アドレスから 導き出されます。アドレスプリフィックス "2002:" は 6to4 ベースの アドレスの為に予約されています (すなわち、 IPv6 アドレスは IPv4 アドレスから得ます) 次の 32 bit はあなたの IPv4 アドレスです。 この方法によって、 /48 ネットワークがあなた自身の用途に使えます。 16 bit の空間 によって、 それぞれ 264 ノードを持つことのできる IPv6 サブネットを 216 与えられます。 Figure 10-3 に IPv4 アドレスから得られる IPv6 アドレス (範囲) を示します。
6to4 プリフィックスと、 ワールドワイドでユニークな IPv4 アドレスのおかげで、このアドレスブロックはユニークで、 該当 IPv4 アドレスを持ったあなたの機械に割り当てられます。
configured "IPv6-over-IPv4 tunnel" 設定 とは違って、 6bone ゲートウェーへの登録は必要なく、 全ての ( IPv4 でカプセル化された) IPv6 trafficが送られます。 代わりに、 IPv6 アドレスは、あなたの IPv4 から導かれたもので、 全ての応答はあなたの一番近くの 6to4 ゲートウェーを通って 送られます。 パケットのカプセル開放は 6to4-capable ネットワークインターフェースによって行われ、 結果の IPv6 パッケージはあなたの経路設定に従って配送されます。 ( 6to4 を割り当てたネットワークに2台以上の機械がある場合)。
IPv6 パケットの送出では、 6to4-capable ネットワークインターフェース が IPv6 パケットを取って、 IPv4 パケットにカプセル化します。 uplink には 6bone に接続された 6to4 ゲートウェーが必要で、 それがカプセル開放をし、 6Bone に転送します。 Figure 10-4 にこれが描かれています。
"configured tunnel" 設定と対照的に、普通、あなたは 6to4 をきちんと動作させれるようには認証されていない出所からの 6to4 パケットを ブロックするようにパケットフィルターを設定することができません。 それなりに、悪意のあるユーザーは 無効な/有害な IPv6 ペイロードのパケットを送ることができます。 もし、まだ境界ゲートウェーでフィルターしてなくても、 以下に示す特徴のパケット は正当な 6to4 パケットとするべきではなくて、 いくつかのファイヤーウォールはそれらを正当であるとするようです:
未指定 IPv4 始点/終点 アドレス: 0.0.0.0/8
outer (v4) 始点/終点の ループバックアドレス: 127.0.0.0/8
始点/終点 の IPv4 マルチキャスト : 224.0.0.0/4
limited ブロードキャスト: 255.0.0.0/8
始点/終点のサブネットブロードキャストアドレス : あなたの IPv4 設定に依存
NetBSD stf(4) マニュアルページにはフィルタリングに関するいくつかの更なるアドバイス と同様に、デフォルトの KAME スタックが遮る いくつかの一般的な設定間違いについて書かれています。 ですが、これらのフィルターの要求に対して 6to4 は完全に安全でないことを覚えておいてください。 さらに、 捏造された 6to4 パケットが問題を起こすなら、 IPv6 パケットが 改変されていないことを保証するのに IPsec 認証 を使うことができます。
IPv6 over 6to4 のセットアップと設定には、 あらかじめ、いくらかの設定情報を知っておく必要があります。 これらは:
あなたの ローカル IPv4 アドレス。 ほとんどの Unix システムで 'ifconfig -a' か 'netstat -i' コマンドのどちらででも調べられます。 NAT を使った ゲートウェー等を使っているなら、 プライベートアドレス (10/8 や 192.168/16) ではなく、 外から見ることのできる official のアドレスを使ってください。
この例では、ローカル IPv4 アドレスとして 62.224.57.114 を使います。
あなたのローカル IPv6 アドレスは IPv4 アドレスから得るものです。 方法については Figure 10-3 を ご覧ください。
この例では、 これは 2002:3ee0:3972:0001::1 (62.224.57.114 == 0x3ee03972, 0001::1 は任意 に選んだもの)。
利用したい 6to4 uplink ゲートウェイの IPv6 アドレス。 IPv6 アドレスには、通常の 6to4 translation では そのIPv4 アドレスも含まれています。
ここでは 2002:c25f:6cbf::1 (== 194.95.108.191 == 6to4.ipv6.fh-regensburg.de) を使います。
6to4 パケットを処理するには、 オペレーティングシステムのカーネルが それらのことについて知っている必要があります。 6to4 のことを知っていてそれを扱えるドライバーが入っていなければなりません。
NetBSD カーネルについては、 IPv6 と 6to4 を使うために kernel config ファイルに次のものを入れてください。 例、 NetBSD では:
options INET6 # IPv6 pseudo-device stf # 6to4 IPv6 over IPv4 encapsulation
註 stf(4) デバイスはデフォルトでは有効化されていません。 カーネルを再構築して、新しいカーネルでリブートしてください。 新しいカーネルの設定と構築、インストールについて の更なる情報は Chapter 7 を 見てください!
この節では 6to4 設定のコマンドについて記述します。 簡単に言うと、それのステップはこうで:
インターフェースの設定
デフォルトルートの設定
必要ならば ルーター通知(Router Advertisement:RA)の設定
6to4 設定の最初の段階は 6to4 インターフェースに IPv6 アドレスを割り当てることです。 これは ifconfig(8) コマンドで行います。 上の例では、割り当てをする NetBSD のコマンドは:
# ifconfig stf0 inet6 2002:3ee0:3972:1::1 prefixlen 16 alias (ローカル)
これらのコマンドで 6to4 デバイスの設定後、 すべての IPv6 traffic を 6to4 (uplink) ゲートウェイに フォワードするのにルーティングの設定が必要です。 この一番良い方法はデフォルトルートを設定することで、 NetBSD ではそのコマンドは:
# route add -inet6 default 2002:cdb2:5ac2::1 (remote)
註 NetBSD の stf(4) デバイスは 6to4 uplinkの IPv4 アドレス を ルーティングテーブルから決めます。 この特徴により、 例えば via 6Bone 経由の IPv6 uplinkがあれば あなた自身の 6to4 (uplink) ゲートウェイが簡単に設定できます。
これらのコマンドを実行すれば、 IPv6-enabled 世界につながります - おめでとう! name resolution は、まだ IPv4 でですが、 IPv6-site like www.kame.net や www6.netbsd.org のような IPv6-site に ping をかけることができ:
# /sbin/ping6 www.kame.net
6to4 経由の IPv6 設定の最後のステップとして、 あなたがネットワーク上にいくつかのホストを持っている場合 ルーター通知をしたくなるでしょう。 ノードごとに 6to4 設定することができますが、 ノードから他へのルーティングは非常に高くなるでしょう - パケットが6to4 ゲートウェーに送られて、隣のノードに帰ってくる ということになります。 代わりに、1台に 6to4 を設定し、ケーブル上は IPv6 ネイティブでお話する方法のほうが、 handling things よりもよいでしょう。
この最初のステップは、イーサネットに IPv6 アドレスを 振ることです。次の例では IPv6 の サブネットが "2" で、 イーサネットインターフェースの MAC アドレス が 12:34:56:78:9a:bc 、 つまり ローカルゲートウェイイーサネットインターフェースの IP アドレスが 2002:3ee0:3972:2:1234:56ff:fe78:9abc だとします。 このアドレスをイーサネットインターフェースに割り当てるには、 例えば
ifconfig ne0 inet6 alias 2002:3ee0:3972:2:1234:56ff:fe78:9abc
ここで、 'ne0' はイーサネットカードインターフェースの例です。 これは、どの種類のカードを使っているかによって、 各自変わるでしょう。
次に必要なことは、パケットがローカル 6to4 デバイスから イーサネットデバイス に送られ戻ってくるように ルーターをきちんと設定することです。 IPv6 パケットフォワーディングを有効にするには、 NetBSD の /etc/rc.conf で "ip6mode=router" を設定します。これによって、 sysctl によって "net.inet6.ip6.forwarding" を "1" に設定されます:
# sysctl -w net.inet6.ip6.forwarding=1
BSD でルーター通知の設定をするには、 /etc/rtadvd.conf ファイルのチェックが必要です。 いろいろ設定することができるようになっていますが、 通常、何も入っていないデフォルト設定で大丈夫です。 デフォルト状態で、ルーターのネットワークインターフェース すべての上で見つかった IPv6 アドレスが通知されます。
チェックすることで、ルーター通知設定は正しく、 IPv6 forwarding が有効になり、デーモンでの 取り扱いが始められるようになります。 NetBSDでは、 'rtadvd'と呼ばれます。 起動は手動(初回のテストに) または システムのスタートアップスクリプトを通してのどちらでもでき、 全てのローカルノードが、既存のリンクローカルアドレス以外に、 通知されたサブネットアドレスで自動的に設定されます。
# rtadvd
ここまで、 6to4 の働きとて手動設定法を書いてきました。 自動設定法では、 例えば online になったとき、 '6to4' パッケージは便利です。 プロバイダから割り当てられた IPv4 アドレスから IPv6 アドレスを決定し、 設定して接続されます。
pkgsrc/net/6to4 パッケージの設定のステップは:
6to4-1.1nb1 パッケージを pkgsrc からコンパイルするか、 pkg_add を使って インストールしてください。
# cd /usr/pkgsrc/net/6to4 # make install
上の解説を見て、カーネルに stf(4) 擬似デバイスが入っているか 確認してください。
'6to4' パッケージの設定をします。 最初に/usr/pkg/etc/6to4.conf-example を /usr/pkg/etc/6to4.conf にコピーし、それから変数を調整します。 このファイルは perl 文法であることに注意してください。
# cd /usr/pkg/etc # cp 6to4.conf-example 6to4.conf # vi 6to4.conf
6to4.conf に設定できる全ての変数についての説明は、 6to4(8) マニュアルページをご覧ください。 PPP 経由のダイアルアップ IP で、 家庭あるいは仕事場ネットワークの他の IPv6 マシンに Router Advertizing をしようと思わないならば、 何も設定する必要がありません。 Router Advertising を設定したければ、 in_if に 内部向け (イーサネット) インターフェースを設定することが必要で、 例えば
$in_if="rtk0"; # Inside (ethernet) interface
ダイヤルアップをし、それから、手動で 6to4 コマンドを起動します:
# /usr/pkg/sbin/6to4.pl start
それで接続されるはずなので、 ping6(8) 等を使って 動いていることを確認してください。 動くなら、 /etc/ppp/ip-up スクリプトに次の行を入れることで online になる毎にコマンドが実行されます :
logger -p user.info -t ip-up Configuring 6to4 IPv6 /usr/pkg/sbin/6to4.pl stop /usr/pkg/sbin/6to4.pl start
LAN の IPv6 route にしたければ、 Router Advertising の設定として 6to4.pl を次のように使うこともでき:
# /usr/pkg/sbin/6to4 rtadvd-start
常に変わらない設定として /etc/ppp/ip-up に 書きこむと良いでしょう。
6to4 設定が自動で行われるように /etc/ppp/ip-up に手を加えたなら、 /etc/ppp/ip-down も書き換えて、 offline になったときに それが止まるようにしたいと思います。 /etc/ppp/ip-down に書き加えるものは次の通りで:
logger -p user.info -t ip-down Shutting down 6to4 IPv6 /usr/pkg/sbin/6to4.pl rtadvd-stop /usr/pkg/sbin/6to4.pl stop
現在、公開 6to4 ゲートウェイは多くはなく、 少ない中からも、 ネット上で最も近いものを使いたいでしょう。 動作が知られている 6to4 ゲートウェイのリストは http://www.kfu.com/~nsayer/6to4/ にあります。 テストでは 6to4.kfu.com と 6to4.ipv6.microsoft.com だけが動いてました。 Cisco は他に持っていて、それは利用前に登録が必要です。 http://www.cisco.com/ipv6/ をご覧ください。
ドイツにも 6to4 実験サーバーがあり、 6to4.ipv6.fh-regensburg.de. です。 このサーバーは NetBSD 1.5 で動いていて、 上に書かれた設定法が使われています。この機械の設定全体は http://www.feyrer.de/IPv6/netstart.local で見ることができます。
Compared to where IPv4 is today, IPv6 is still in it's early steps. It is working, there are all sort of services and clients available, only the userbase is missing. It is hoped the information provided here helps people better understand what IPv6 is, and to start playing with it.
A few links should be mentioned here for interested parties:
An example script to setup 6to4 on BSD based machines is available at http://www.netbsd.org/packages/net/6to4/. The script determines your IPv6 address and sets up 6to4 and (if wanted) router advertising. It was designed to work in dialup setups with changing IPv4 addresses.
Given that there isn't a standard for IPv6 in Linux land today, there are different setup instructions for most distributions. The setup of IPv6 on Debian Linux can be found at http://people.debian.org/~csmall/ipv6/setup.html and http://www.mailgate.org/linux/linux.debian.ipv6/msg00137.html.
The BSD Unix implementations have their own IPv6 documentation each, interresting URLs are http://www.netbsd.org/Documentation/network/ipv6/ for NetBSD, http://www.freebsd.org/doc/en_US.ISO_8859-1/books/handbook/ipv6-implementation.html for FreeBSD and pages 61 and 62 of the BSD/OS Administrator's Guide at http://www.bsdi.com/products/internet/release-notes/rn42.pdf.
Projects working on implementing IPv6 protocol stacks for free Unix like operating systems are KAME for BSD and USAGI for Linux. Their web sites can be found at http://www.kame.net/ and http://www.linux-ipv6.org/. A list of host and router implementations can be found at http://playground.sun.com/pub/ipng/html/ipng-implementations.html.
Besides the official RFC archive at ftp://ftp.isi.edu/in-notes, information on IPv6 can be found at several web sites. First and foremost, the 6Bone's web page at http://www.6bone.net/ must be mentioned. 6Bone was started as the testbed for IPv6, and is now an important part of the IPv6-connected world. Other web pages that contain IPv6-related contents include http://www.ipv6.org/, http://playground.sun.com/pub/ipng/html/ and http://www.ipv6forum.com/. Most of these sites carry further links - be sure to have a look!