次のページ 前のページ 目次へ

6. それぞれのネットワーク技術についての情報

以下の各セクションでは特定のネットワーク技術について扱います。それぞれの セクションは独立していますので、あるセクションを読むのに別のセクション の情報は特に必要ありません。

6.1 ARCNet

ARCNET のデバイス名は `arc0s'、`arc1e'、, arc2e' などになります。最初に検出されたカードが `arc0s' で、以下は検出された順に番号が振られます。最後の s か e はパケットをイーサネットにカプセル化するか RFC1051 の形式にするかを を示します。

カーネルコンパイル時のオプション:

Network device support  --->
    [*] Network device support
    <*> ARCnet support
    [ ]   Enable arc0e (ARCnet "Ether-Encap" packet format)
    [ ]   Enable arc0s (ARCnet RFC1051 packet format)

ARCnet カードをサポートするようにカーネルを作成すれば、カードの設定は 簡単です。

設定は、通常、以下のように行います。

# ifconfig arc0e 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 arc0e

詳細については /usr/src/linux/Documentation/networking/arcnet-hardware.txt を御覧ください。

ARCNet の機能は Avery Pennarrun apenwarr@foxnet.net が開発しまし た。

6.2 Appletalk (AF_APPLETALK)

Appletalk 機能は既存のネットワークデバイスを使うので特別のデバイス名は 不要です。

カーネルのコンパイル時のオプションでは:

Networking options  --->
    <*> Appletalk DDP
を指定します。

Appletalk 機能を使えば、Linux を Apple のネットワークと協働させ、プリ ンタやディスクといったリソースを Linux と Apple 製のコンピュータの間で 共有できます。この機能を使うには netatalk と呼ばれ るソフトが別途必要です。ミシガン大学で `Research System Unix Group' と いうチームを率いている Wesley Craig netatalk@umich.edu が、 Appletalk のプロトコルスタックとその他有益なプログラムをまとめた netatalk と呼ばれる プログラムを開発しました。 netatalk パッケージは Linux の配布パッケージに含まれているか も知れませんし、見つからなければ ミシガン大学から FTP で入手できます。

このパッケージをコンパイルしてインストールするには以下のようにします。

# cd /usr/src
# tar xvfz .../netatalk-1.4b2.tar.Z
-この時点で必要ならば `Makefile' を修正します。特に、プログラムのイン
ストール先である DESTDIR に注意してください。デフォルトでは 
/usr/local/atalk にインストールされます。

# make
- root になって:
# make install

Appletalk 用ソフトウェアの設定

通常、最初にしなければいけないことは /etc/services の設定です。 以下のエントリを追加します。

rtmp    1/ddp   # Routing Table Maintenance Protocol
nbp             2/ddp   # Name Binding Protocol
echo    4/ddp   # AppleTalk Echo Protocol
zip             6/ddp   # Zone Information Protocol

次に /usr/local/atalk/etc ディレクトリ(か、あなたの選んだイン ストール先のディレクトリ)に appletalk の設定ファイルを作ります。

最初に作成すべきファイルは/usr/local/atalk/etc/atalkd.confファ イルです。このファイルには Apple のマシンのネットワークが接続している ネットワークデバイス名のみを登録しておきます。

eth0

Appletalk デーモンプログラムが自動的にこのファイルに設定情報を追加しま す。

Linux のファイルシステムを Appletalk 経由で提供するには。

linux マシンのファイルシステムを提供して、ネットワーク上の Apple のマシ ンから使えます。

このためには /usr/local/atalk/etc/AppleVolumes.system ファイ ルを作成します。もう一つ、 /usr/local/atalk/etc/AppleVolumes.default と言うファイルもあ り、このファイルは AppleVolumes.system と同じ形式でゲストアカ ウントのみで利用できるファイルシステムを設定します。

これらのファイルを設定する際の詳細や各種のオプションについては afpd の man ページを御覧ください。

以下に簡単な例を示します。

/tmp Scratch
/home/ftp/pub "Public Area"

この例では /tmp ファイルシステムを `Scratch' と言う名で、ftp の public ディレクトリを `Public Area' と言う名で、それぞれ AppleShare に提供しています。`Scratch' や `Public Area' といったボリューム名は必 須ではなく、指定しなければデーモンが自動的に命名してくれますが、付けて おいても問題はありません。

AppleTalk 経由で Linux のプリンタの共有

Linux マシンに接続されたプリンタを Apple 製のマシンと共有するのも簡単 で、AppleTalk のプリンタ・アクセス・プロトコル・デーモン papd を使います。このプログラムは、Apple マシンからのプリントリクエストを受 けつけてスプールし、lpr デーモンに渡して Linux マシンのプリンタに出力 します。

papd の設定には /usr/local/atalk/etc/papd.conf ファ イルを使います。このファイルの書式は /etc/printcap ファイルと 同じで、登録したプリンタ名が Appletalk の命名プロトコル NBP を使って Appletalk 上に設定されます。

papd.conf は以下のような形式です。

TricWriter:\
   :pr=lp:op=cg:

この設定で `TricWriter' というプリンタ名が Appletalk 上に設定され、そ のプリンタに送られた出力は lpd を使って linux の `lp' プリンタ(lpというプリンタは /etc/printcap ファイルで設定されています)に出力されます。 `op=cg' の指定は linux マシンのユーザ `cg' がプリン タの使用者になることを意味します。

appletalk ソフトウェアの起動

さて、これで基本的な設定を試す準備ができました。netatalk パッ ケージには rc.atalk ファイルが含まれていますので、 netatalk を起動するには以下のようします。

# /usr/local/atalk/etc/rc.atalk

これで必要なデーモン類が全て起動するはずです。エラーが出なければ、ソフ トウェアはコンソールにそれぞれの段階のメッセージを示していくはずです。

appletalk ソフトウェアのテスト

netatalk が正しく機能しているかを確認するには、Apple のマシンを使って、 アップルメニューから「セレクタ」を選び、AppleShare をクリックして Linux の表示が見えるか確かめます。

netatalk の注意点

更なる情報源

Linux における AppleTalk の設定方法のより詳細な説明は thehamptons.com で公開されている Anders Brownworth の Linux Netatalk-HOWTO を参照してください。

6.3 ATM

Werner Almesberber <werner.almesberger@lrc.di.epfl.ch> は Linux で ATM(Asynchronous Transfer Mode)をサポートするための計画を 統括しています。この計画の現状については lrcwww.epfl.chに紹 介されています。

6.4 AX25 (AF_AX25)

AX.25 デバイスの名称は 2.0.* カーネルでは `sl0' や `sl1' ですが、2.1.* カーネルでは `ax0' や `ax1' になっています。

Kernel Compile Options:

カーネルを再構築する際に指定すべきオプションは:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2

です。

AX25 と Netrom、Rose プロトコルは AX25-HOWTO に解説されています。世界中のアマチュマ無線の愛好家 がこれらのプロトコルをパケット無線の実験につかっています。

これらのプロトコルの大部分の実装は Jonathon Naylor jsn@cs.not.ac.uk の手によるものです。

6.5 DECNet

DECNet のサポートも現在開発中です。将来の 2.1.* シリーズで公 開されるはずです。

6.6 EQL - multiple line traffic equaliser EQL - 複数回線のトラフィック・イコライザー

EQL のデバイス名は `eql' です。標準のカーネルソースでは一台の マシンで一つの EQL デバイスしか使えないかも知れません。EQL を使えば、 PPP や slip、plip といった二点間接続を複数用意して、それらを一つの論理 的な接続のように利用できます。たいていの場合、高速の専用線よりも低速回 線を複数まとめた方が安価に回線速度を稼げます。

カーネルの再構築時には、

Network device support  --->
    [*] Network device support
    <*> EQL (serial line load balancing) support
を指定します。

この機能を使うためには、接続先のマシンも EQL 機能を持っていなければい けません。Linux と Livingstone Portmaster シリーズ、最新のダイアルイン サーバなどはこの機能を持っています。

EQL を設定するには、 sunsite.unc.edu から入手できる EQL 用ツールが必要になりま す。

EQL の設定はごく簡単で、他のネットワークデバイスと同じ形式で eql イン ターフェイスを設定するところから始まります。IP アドレスや mtu は ifconfig を用いて下記のように設定します。

ifconfig eql 192.168.10.1 mtu 1006
route add default eql

次に、使おうとしている回線それぞれを手動で起動します。これらは二点間接 続を複数用意したものになるでしょう。どのように起動するかは使う接続の種 類に依存しますので、詳しい情報はそれぞれの接続形態について説明した章を 御覧ください。

最後にシリアル接続を EQL デバイスに結びつけます。これは「スレーブ化 (enslalving)」と呼ばれ、eql_enslave コマンドで以下のように設 定します。

eql_enslave eql sl0 28800
eql_enslave eql ppp0 14400

eql_enslave コマンドに与える「推定回線速度(estimated speed)」 パラメータは、直接の影響は及ぼしません。このパラメータは EQL デバイス がデータグラムをそれぞれの回線からどのような割合で受けるかを決定するた めに使われるので、この数字を適当に調整して最適値を探してください。

EQL デバイスから回線を開放するには、以下のように eql_emancipate コマンドを使います。

eql_emancipate eql sl0

他の二点間接続同様、EQL デバイスを使った経路制御も可能ですが、その場 合、実際のシリアルデバイスではなく eql デバイスを経路に使いま す。例えば、以下のように経路を設定できます。

route add default eql0

EQL ドライバは Simon Janes simon@ncm.com が開発しました。

6.7 Ethernet

Ethernetのデバイス名は `eth0'、`eth1'、 `eth2'のようになります。カーネルが検出した最初のカードが `eth0'で、以下、カードが検出する順に番号が振られていきます。

Linux で ethernet カードを使う方法の詳細については Ethernet-HOWTO を参照してください。

お使いの ethernetカードをサポートするようにカーネルをきちんと再構築し てしまえば設定そのものは簡単です。

通常、以下のように設定します。

# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
# route add 192.168.0.0 netmask 255.255.255.0 eth0

ほとんどの ethernet デバイスは Donald Becker becker@CESDIS.gsfc.nasa.gov が開発しました。

6.8 FDDI

FDDI のデバイス名は `fddi0'、`fddi1'、 `fddi2' などになります。カーネルが検出した最初のカードが `fddi0' で、その後は検出した順に番号が振られていきます。

Lawrence V. Stefani stefani@lkg.dec.com が DEC 製の EISA バスと PCI バスの FDDI カード用のドライバを開発しました。

カーネルの再構築の際には以下のオプションを指定します:

Network device support  --->
    [*] FDDI driver support
    [*] Digital DEFEA and DEFPA adapter support

FDDI ドライバを組み込んだカーネルを構築すれば、FDDI インターフェイスの 設定は ethernet インターフェイスの設定とほぼ同じです。適切な FDDI イン ターフェイスの名称を指定して ifconfigroute コマ ンドで設定します。

6.9 フレームリレー

フレームリレーのデバイス名のうちDLCI にカプセル化するデバイス名は `dlci00'、`dlci01' 等で、FRAD のデバイス名は `sdla0'、`sdla1 等になります。

フレームリレーは新しいネットワーク技術で、「突発的」に膨大なデータ転送 が起こるような種類の通信向けにデザインされています。フレームリレーネッ トワークに接続するにはフレームリレー・アクセス・デバイス(FRAD : Frame Relay Access Device)を使います。Linux では RFC-1490 に定義されている、 フレームリレー上に IP 接続を乗せる機能がサポートされています。

カーネルの再構築の際に指定すべき項目は:

Network device support  --->
    <*> Frame relay DLCI support (EXPERIMENTAL)
    (24)   Max open DLCI
    (8)   Max DLCI per device
    <*>   SDLA (Sangoma S502/S508) support

フレームリレー機能と設定用ツールは Mike McLagan mike.mclagan@linux.org が開発しました。

現在サポートされている FRAD は Sangoma Technologies 製のS502AS502ES508のみです。

カーネルに必要な機能を組み込んで再構築後、FRAD と DLCI デバイスを設定 するにはフレームリレー設定用プログラムが必要になります。これらは ftp.invlogic.com から入手できます。このプログラムをコンパ イルしてインストールするのは簡単ですが、大元の Makefile が無いために多 くを手動でやる必要があります。

# cd /usr/src
# tar xvfz .../frad-0.15.tgz
# cd frad-0.15
# for i in common dlci frad; do cd $i; make clean; make; cd ..; done
# mkdir /etc/frad
# install -m 644 -o root -g root bin/*.sfm /etc/frad
# install -m 700 -o root -g root frad/fradcfg /sbin
# install -m 700 -o root -g root dlci/dlcicfg /sbin

必要なファイルをインストール後、/etc/frad/router.conf ファイ ルを作る必要があります。以下に、例として付いてきたファイルを多少修正し たバージョンを雛型として紹介します。

# /etc/frad/router.conf
# これはフレームリレー用の設定ファイルの雛型です
# 設定可能な項目を全て含んでいます。指定しているデフォルト値は Sangoma
# S502A カード用の DOS ドライバに基づくものです。

# '#' 以下はコメントと見なされます。
# 空白は無視されます(タブコードを使ってインデントしても構いません)
# 定義されていない [] フィールドやキーは無視されます

[Devices]
Count=1                 # number of devices to configure
Dev_1=sdla0             # the name of a device
#Dev_2=sdla1            # the name of a device

# ここでの設定は全てのデバイスに適用される。また、それぞれのデバイスご
# との設定で上書きすることも可能
#
Access=CPE
Clock=Internal
KBaud=64
Flags=TX
#
# MTU=1500              # Maximum transmit IFrame length, default is 4096
# T391=10               # T391 value    5 - 30, default is 10
# T392=15               # T392 value    5 - 30, default is 15
# N391=6                # N391 value    1 - 255, default is 6
# N392=3                # N392 value    1 - 10, default is 3
# N393=4                # N393 value    1 - 10, default is 4

# この指定は全てのボードのデフォルト値
# CIRfwd=16             # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511


#
#
# デバイスごとの設定
#
#

#
# 最初のデバイスは Sangoma S502E
#
[sdla0]
Type=Sangoma            # Type of the device to configure, currently only 
                        # SANGOMA is recognised
#
# 以下は 'Sangoma' タイプのボード用の設定
#
# ボードの種類 - S502A, S502E, S508 のいずれか
Board=S502E
#
# Sangoma  ボードのテスト用ファームウェア名
# Testware=/usr/src/frad-0.10/bin/sdla_tst.502
#
# FR 用ファームウェア名
# Firmware=/usr/src/frad-0.10/bin/frm_rel.502
#
Port=360                # Port for this particular card
Mem=C8                  # Address of memory window, A0-EE, depending on card
IRQ=5                   # IRQ number, do not supply for S502A
DLCIs=1                 # Number of DLCI's attached to this device
DLCI_1=16               # DLCI #1's number, 16 - 991
# DLCI_2=17
# DLCI_3=18
# DLCI_4=19
# DLCI_5=20
#
# Specified here, these apply to this device only, 
# and override defaults from above
#
# Access=CPE            # CPE or NODE, default is CPE 
# Flags=TXIgnore,RXIgnore,BufferFrames,DropAborted,Stats,MCI,AutoDLCI
# Clock=Internal        # External or Internal, default is Internal
# Baud=128              # Specified baud rate of attached CSU/DSU
# MTU=2048              # Maximum transmit IFrame length, default is 4096
# T391=10               # T391 value    5 - 30, default is 10
# T392=15               # T392 value    5 - 30, default is 15
# N391=6                # N391 value    1 - 255, default is 6
# N392=3                # N392 value    1 - 10, default is 3
# N393=4                # N393 value    1 - 10, default is 4

#
# The second device is some other card
#
# [sdla1]
# Type=FancyCard        # Type of the device to configure.
# Board=                # Type of Sangoma board
# Key=Value             # values specific to this type of device


#
# DLCI Default configuration parameters
# These may be overridden in the DLCI specific configurations
#
CIRfwd=64               # CIR forward   1 - 64
# Bc_fwd=16             # Bc forward    1 - 512 
# Be_fwd=0              # Be forward    0 - 511
# CIRbak=16             # CIR backward  1 - 64
# Bc_bak=16             # Bc backward   1 - 512
# Be_bak=0              # Be backward   0 - 511

#
# DLCI Configuration
# These are all optional. The naming convention is
# [DLCI_D<devicenum>_<DLCI_Num>]
#

[DLCI_D1_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=64
# Bc_fwd=512
# Be_fwd=0
# CIRbak=64
# Bc_bak=512
# Be_bak=0

[DLCI_D2_16]
# IP=
# Net=
# Mask=
# Flags defined by Sangoma: TXIgnore,RXIgnore,BufferFrames
# DLCIFlags=TXIgnore,RXIgnore,BufferFrames
# CIRfwd=16
# Bc_fwd=16
# Be_fwd=0
# CIRbak=16
# Bc_bak=16
# Be_bak=0

/etc/frad/router.conf ファイルが設定できれば、残る作業は実際 のデバイスを設定するだけです。これは通常のネットワークデバイスより も多少複雑で、DLCI カプセル化デバイス以前に FRAD デバイスを設定するこ とをお忘れなく。

# Configure the frad hardware and the DLCI parameters
/sbin/fradcfg /etc/frad/router.conf || exit 1
/sbin/dlcicfg file /etc/frad/router.conf
#
# Bring up the FRAD device
ifconfig sdla0 up
#
# Configure the DLCI encapsulation interfaces and routing
ifconfig dlci00 192.168.10.1 pointopoint 192.168.10.2 up
route add 192.168.10.0 netmask 255.255.255.0 dlci00
#
ifconfig dlci01 192.168.11.1 pointopoint 192.168.11.2 up
route add 192.168.11.0 netmask 255.255.255.0 dlci00
#
route add default dev dlci00
#

6.10 IP アカウンティング

カーネルに組みこまれた IP アカウント機能を使えばネットワークの使用記録 を取ることができます。記録できるデータは、最後にカウンタをリセットして からやりとりしたパケット数とデータのバイト数です。カテゴリごとに異なる ルールを指定可能で、目的に応じた設定が可能です。

カーネルのコンパイル時のオプション:

Networking options  --->
    [*] IP: accounting

カーネルに必要な機能を組みこんで再起動した後、ipfwadm コマン ドを使って IP アカウント機能を設定します。アカウント情報を細分するため の方法はいろいろあります。以下に実際に使えそうな簡単な設定例を示してみ ます。詳細については ipfwadm の man ページを読んでください。

条件: PPP 経由でインターネットに接続された ethernet のネットワークがあ るとします。ethernet のネットワーク上にはさまざまなサービスを提供して いるマシンがあり、telnet や rlogin、ftp、WWW といったトラフィックがど れくらい生じているかを知りたいとします。

そのためには以下のようなコマンドを実行します。

#
# Flush the accounting rules
ipfwadm -A -f
#
# Add rules for local ethernet segment
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 20
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 20
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 23
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 23
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 80
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 80
ipfwadm -A in -a -P tcp -D 44.136.8.96/29 513
ipfwadm -A out -a -P tcp -S 44.136.8.96/29 513
ipfwadm -A in -a -P tcp -D 44.136.8.96/29
ipfwadm -A out -a -P tcp -D 44.136.8.96/29
ipfwadm -A in -a -P udp -D 44.136.8.96/29
ipfwadm -A out -a -P udp  -D 44.136.8.96/29
ipfwadm -A in -a -P icmp -D 44.136.8.96/29
ipfwadm -A out -a -P icmp -D 44.136.8.96/29
#
# Rules for default
ipfwadm -A in -a -P tcp -D 0/0 20
ipfwadm -A out -a -P tcp -S 0/0 20
ipfwadm -A in -a -P tcp -D 0/0 23
ipfwadm -A out -a -P tcp -S 0/0 23
ipfwadm -A in -a -P tcp -D 0/0 80
ipfwadm -A out -a -P tcp -S 0/0 80
ipfwadm -A in -a -P tcp -D 0/0 513
ipfwadm -A out -a -P tcp -S 0/0 513
ipfwadm -A in -a -P tcp -D 0/0
ipfwadm -A out -a -P tcp -D 0/0
ipfwadm -A in -a -P udp -D 0/0
ipfwadm -A out -a -P udp  -D 0/0
ipfwadm -A in -a -P icmp -D 0/0
ipfwadm -A out -a -P icmp -D 0/0
#
# List the rules
ipfwadm -A -l -n
#

最後のコマンドがそれぞれのアカウント記録ルールとトータルの結果を表示し ます。

採取した IP のアカウント記録を分析する際の注意点としては、指定した ルールに適合するデータのみが増加するという点で、必要なデータを得 るにはいくつかの換算が必要でしょう。例えば、ftp や telnet, rlogin, www 以外でやりとりしたデータ量を知るためには、全てのポートに適合するルール の転送量から、ftp や telnet といったプロトコルで転送したデータ量を引く 必要があります。

# ipfwadm -A -l -n
IP accounting rules
 pkts bytes dir prot source               destination          ports
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 20
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 23
    0     0 out tcp  44.136.8.96/29       0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 80
   10   572 out tcp  44.136.8.96/29       0.0.0.0/0            80 -> *
  242  9777 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> 513
  220 18198 out tcp  44.136.8.96/29       0.0.0.0/0            513 -> *
  252 10943 in  tcp  0.0.0.0/0            44.136.8.96/29       * -> *
  231 18831 out tcp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 out udp  0.0.0.0/0            44.136.8.96/29       * -> *
    0     0 in  icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 out icmp 0.0.0.0/0            44.136.8.96/29       *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 20
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            20 -> *
    0     0 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 23
    0     0 out tcp  0.0.0.0/0            0.0.0.0/0            23 -> *
   10  1166 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 80
   10   572 out tcp  0.0.0.0/0            0.0.0.0/0            80 -> *
  243  9817 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> 513
  221 18259 out tcp  0.0.0.0/0            0.0.0.0/0            513 -> *
  253 10983 in  tcp  0.0.0.0/0            0.0.0.0/0            * -> *
  231 18831 out tcp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 out udp  0.0.0.0/0            0.0.0.0/0            * -> *
    0     0 in  icmp 0.0.0.0/0            0.0.0.0/0            *
    0     0 out icmp 0.0.0.0/0            0.0.0.0/0            *
# 

6.11 IP エイリアス

1つのネットワークデバイスに複数の IP アドレスを設定できれば便利なアプ リケーションがあります。インターネットプロバイダ(ISP)は、よくこの機能 を使って WWW と ftp を顧客用に設定して提供しています。

カーネル設定時のオプションは::

Networking options  --->
    ....
    [*] Network aliasing
    ....
    <*> IP: aliasing support

IP_Alias 機能を組みこんだカーネルを構築してインストールすれば、この機 能を設定するのはごく簡単です。alias 機能は、実際のネットワークデバイス に仮想的なネットワークデバイスを関係づけます。仮想的なデバイスに割りあ てる名前は、<devname>:<virtual dev num> の形で、 eth0:0ppp0:10 のようになります。

たとえば、2 つの異なるサブネットを持った Ethernet ネットワークに接続し たマシンがあるとして、同時に双方のサブネットにアクセスしたい場合、以下 のようにします。

#
# ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 up
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0:0
#
# ifconfig eth0:1 192.168.10.1 netmask 255.255.255.0 up
# route add -net 192.168.10.0 netmask 255.255.255.0 eth0:0
#

エイリアスを削除する場合、仮想的なデバイス名の後に `-' を付けて ifconfig します。

# ifconfig eth0:0- 0

仮想デバイスを削除すれば、関連した経路も全て自動的に削除されます。

6.12 IP ファイアウォール

IP ファイアウォールとファイアウォール全般については Firewall-HOWTOがずっと詳しく扱ってい ます。IP ファイアウォールを使えば、許可した IP アドレスからのデータグ ラム以外は通さないように設定できます。ファイアウォールの設定には、入っ てくるデータグラムに対するもの、出ていくデータグラムに対するもの、内部 で転送(forward)するデータグラムに対するもの、の 3 つの種類があります。 入ってくるデータグラムに対するルールはネットワークデバイスが受けとった データグラムに対して適用され、出ていくデータグラムに対するルールはネッ トワークデバイスが送出するパケットに適用されます。転送するデータグラム に対するルールは、受けとったものの、自分宛てでは無いデータグラム、すな わち別の経路に送りだすデータグラムに適用されます。

カーネルコンパイル時の設定は:

Networking options  --->
    [*] Network firewalls
    ....
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: firewalling
    [ ] IP: firewall packet logging

IP ファイアウォール機能は ipfwadm コマンドを使って設定します。 以前にも白状しましたが、私はセキュリティについての専門家ではありません。 以下に応用可能な簡単な例を紹介しますが、セキュリティが重要な問題ならば、 ご自分で研究して、必要な設定を開発してください。

IP ファイアウォールが役に立つのは、Linux マシンをローカルなネットワー クとインターネットなどの外部ネットワークとのルータ兼ファイアウォール用 ゲートウェイにしている際に、外部のネットワークからの不正なアクセスを防 止する場合などでしょう。

以下の設定は Arnt Gulbrandsen <agulbra@troll.no> が報告 してくれたものに基づいています。

以下に用いる例では、下図のような設定で、Linux マシンをファイアウォール /ルータにしています。

-                                   -
 \                                  | 172.16.37.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |  172.16.174.30 | Linux |      |
NET =================|  f/w  |------|    ..37.19
    |    PPP         | router|      |  --------
   /                 ---------      |--| Mail |
  /                                 |  | /DNS |
 /                                  |  --------
-                                   -

ファイアウォールを設定するためのコマンドは通常 rc ファイルに まとめて、システムの起動時に自動的に実行するように設定します。セキュリ ティを最大限に強化するには、ネットワークインターフェイスが設定されてか らこれらの設定を行うべきですが、ファイアウォールマシンをリブートした際 に誰かがイタズラするのを防ぐため、ネットワークの設定以前に実行する必 要があるかも知れません。

#!/bin/sh

# IP forwarding に関するルールを初期化して
# default policy を 'accept' にする
#
/sbin/ipfwadm -F -f
/sbin/ipfwadm -F -p accept
#
#
# Incoming についても同様の設定をする。

/sbin/ipfwadm -I -f
/sbin/ipfwadm -I -p accept

# まず、PPP インターフェイスの封印を解く。私は '-a reject -y' よりも '-a
# deny' の方が好きだけど、その場合、そのインターフェイスから接続を開始す
# ることもできなくなる。-o を指定すると、拒否されたデータグラムは全て記
# 録される。これはにはかなりのディスク領域が必要なので、設定ミスによって
# 攻撃されているかどうかを知る必要がある場合にのみ設定すべき。

#
/sbin/ipfwadm -I -a reject -y -o -P tcp -S 0/0 -D 172.16.174.30

# ある種の偽装パケットは即座に拒否する。multicast/anycast/broadcast アド
# レスからのパケットは受けつけない。

#
/sbin/ipfwadm -F -a deny -o -S 224.0/3 -D 172.16.37.0/24
#
#
# 加えて、ループバックネットワークのアドレスを持つパケットも、回線経由で
# 来ることはない。

/sbin/ipfwadm -F -a deny -o -S 127.0/8 -D 172.16.37.0/24

# accept incoming SMTP and DNS connections, but only
# to the the Mail/Name Server

Mail/Name サーバに限って SMTP と DNS 接続を受けつける。

#
/sbin/ipfwadm -F -a accept -P tcp -S 0/0 -D 172.16.37.19 25 53
#

# DNS は TCP と同様 UDP も使うので、内部のネームサーバの
# 問い合わせ用に設定する

/sbin/ipfwadm -F -a accept -P udp -S 0/0 -D 172.16.37.19 53
#
# しかしながら、NFS や Larry McVoy 作の拡張 NFS のような危険なポートへの
# パケットには応答しない。squid を動かしている場合、そのポートもここに記
# 述すること。

/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 53 \
        -D 172.16.37.0/24 2049 2050

# それ以外の非特権ポートへの接続は許可する。

#
/sbin/ipfwadm -F -a accept -P udp -S 0/0 53 \
        -D 172.16.37.0/24 53 1024:65535

# identd に送られてきたパケットは reject する。ここでは 
# 'reject' を使い、接続元のホストに接続できないことを明
# 示して、再接続を試みないようにさせる。そうしないと、
# ident がタイムアウトするまで時間がかかることになる。

/sbin/ipfwadm -F -a reject -o -P tcp -S 0/0 -D 172.16.37.0/24 113

# 192.168.64 と 192.168.65 のネットワークは信頼してい
# るので、一般的なサービスは許可する。

/sbin/ipfwadm -F -a accept -P tcp -S 192.168.64.0/23 \
        -D 172.16.37.0/24 20:23

# 内部のネットワークからの接続は全て許可する。

/sbin/ipfwadm -F -a accept -P tcp -S 172.16.37.0/24 -D 0/0

# 外部からの TCP 接続のほとんどは拒否して、ログを取る。
# (ftp がうまく動かなければ 1:1023 を追加してみる)
#
/sbin/ipfwadm -F -a deny -o -y -P tcp -S 0/0 -D 172.16.37.0/24

#
# UDP についても同様の設定をする。

/sbin/ipfwadm -F -a deny -o -P udp -S 0/0 -D 172.16.37.0/24

よいファイアウォールの設定は多少トリッキーになっているものですが、ここ に示した例は合理的にできており、様々な設定を追加する基本に使えるでしょ う。

設定方法の詳細については ipfwadm のマニュアルを参照してくださ い。ファイアウォールを設定する場合、周囲の人にたずねて、信頼するに足る 情報源からのアドバイスを可能な限り受けてください。そして、設定が正しく 機能しているかどうか、外部から確認してもらいましょう。

6.13 IPX (AF_IPX)

IPX プロトコルは Novell の NetWare(tm) LAN 環境で広く使われているプロ トコルです。Linux はこのプロトコルもサポートしており、ネットワークの端 末としても、IPX のルータとしても機能します。

カーネル構築時のオプションは:

Networking options  --->
    [*] The IPX protocol
    [ ] Full internal IPX network

IPX プロトコルと NCPFS については IPX-HOWTO に詳しく説明されています。

6.14 IPv6

やっと IP ネットワークについて理解し始めたところだというのに、ルールが 変ってしまうなんて…、と思われるかも知れません。IPv6 とは、Internet Protocol Version 6 のことです。IPv6 は、現在インターネットコミュニティ が直面している IP アドレスの枯渇問題に対応することを主目的に開発されて います。IPv6 のアドレスは 32 バイト長(128 bits)になっています。それ以 外にも、IPv6 では主として単純化のためのさまざまな変更が施されて、既存 の IPv4 ネットワークよりも管理しやすいようになっています。

Linux 2.1.*シリーズには、既に IPv6 の実装が動いていますが、ま だ完全ではありません。

この次世代のインターネット技術が必要な場合や試してみたい場合は www.terra.net から入手できる IPv6-FAQ をまず読んでみましょ う。

6.15 ISDN

ISDN(Integrated Services Digital Network)とは、汎用のディジタル・スイッ チ・ネットワークの規格の一種です。ISDN の `call' は、目的地との一対一 の同期的な接続を張ります。ISDN のデータは、通常、複数のチャネルに分割 された高速回線を経由して運ばれます。ISDN のチャネルには 2 つの種類があ り、`B チャネル' が実際のデータを転送し、`D チャネル' と呼ばれる回線が 接続の確立など各種の情報をやりとりするために使われます。

オーストラリアを例にとると、ISDN は 2Mbps の回線を使って送られますが、 その回線は 30 本の 64kbps B チャネルと 1 本の 64kbps D チャネルに分割 されており、これらのチャネルを同時にいくつでも使用可能です。すなわち、 30 本のチャネルをバラバラに使って 30 の接続先に 64kbps で接続可能です し、2 本のチャネルを同時使って 15 の接続先に 128kbps で接続することも 可能です。また、数本のチャネルだけを使って、残りはアイドルのままにして おくこともできます。一つのチャネルは送信にも受信にも使えます。ISDN の 元々の目的は、特別の設定変更をしなくても、電話会社が同じ回線で(音声を ディジタル化して)一般の電話と家庭や会社へのデータ通信サービスを行うた めに考案されました。

日本の NTT では、一般ユーザ用には 64kbps の B チャネル 2 本と 16kbps の D チャネルをまとめた「INSネット64」を、企業向けには B チャネル 23 本と D チャネル 1 本をまとめた「INSネット 1500」を提供しています。

コンピュータを ISDN サービスに接続するにはいくつかの方法がありますが、 TA(Terminal Adaptor)を使うのも一つの方法です。TA とは、ISDN サービスを 契約した際に回線業者が設置してくれるネットワークの終端ユニットに接続し て、複数のシリアルインターフェイスを提供する装置です。これらのインター フェイスの一つを使って接続と回線の確立のための設定コマンドをやりとりし、 残りのインターフェイスが実際のネットワークデバイスに接続して、接続の確 立後にデータをやりとりするために使われます。この種の設定の場合、Linux は特別の設定無しに ISDN を使えます。この場合は、TA のポートを他のシリ アルデバイスと同様に扱えます。もう一つ、Linux マシンに ISDN カードを装 着して、カーネルに ISDN 機能を組みこんで、Linux から直接プロトコルを操 作して接続を行うこともできます(ただし、日本国内で使用可能な ISDN カー ドはサポートされていません)。

カーネルコンパイル時のオプションは:

ISDN subsystem  --->
        <*> ISDN support
        [ ] Support synchronous PPP
        [ ] Support audio via ISDN
        < > ICN 2B and 4B support
        < > PCBIT-D support
        < > Teles/NICCY1016PC/Creatix support

Linux の ISDN 機能は以下に示すような内蔵 ISDN カードをサポートしていま す。これらはカーネルの設定オプションとして選択します。

必要なソフトウェアをダウンロードしなければならないカードもありますが、 そのためには専用のプログラムが必要です。

Linux の ISDN 機能をどのように設定するかの詳細については /usr/src/linux/Documentation/isdn/ にある各文書と www.lrz-muenchen.de にある isdn4linux という FAQ を御覧ください(英語版を見るためには English を選ぶことをお忘れなく)。

PPP についてのメモ。PPP プロトコルは非同期、同期を問わずに使 えますが、現在、広く使われている Linux 用の PPP デーモン pppd は非同期モードしかサポートしていません。PPP を ISDN 経由で使いたい場合、 特別に修正したバージョンが必要になります。そのバージョンがどこで入手で きるかも上記の文書中に触れてあります。

6.16 IP Masquerade

インターネットに接続するためにダイアルアップ接続を使っている人も多数い ることでしょう。通常、1 つのホストがネットワークに接続するためには 1 つの IP アドレスがあれば充分なので、このような接続の場合、ISP からは、 1 つの IP アドレスしか与えられません。IP Masquerade というのは、1 つの IP アドレスを複数のコンピュータが使うための賢い仕組みです。IP Masquerade を使えば、Masquerade(偽装)という名の通り、外部のホストから はダイアルアップ接続しているマシンと通信しているように見せながら、内部 の複数のマシンから通信を行うことが可能になります。

カーネルコンパイル時のオプション:

Code maturity level options  --->
    [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
    [*] Network firewalls
    ....
    [*] TCP/IP networking
    [*] IP: forwarding/gatewaying
    ....
    [*] IP: masquerading (EXPERIMENTAL)

通常、ネットワークに接続していないマシンでも slip か PPP ダイアルアッ プ接続機能を組みこんでいることでしょう。IP Masquerade を使うには、それ に加えて別のネットワークデバイス、たいていの場合はイーサネットになるで しょう、を設定して、プライベートネットワーク用に用意されている IP アド レスを使って設定します。Masquerade 経由で接続するホストはこの 2 つめの ネットワーク上にあります。イーサネット・ネットワーク上にある各マシンで は、デフォルトの経路に IP Masquerade を組みこんでインターネットとのゲー トウェイになっている Linux マシンを指定します。

よくある IP Masquerade の設定は下図のようになります。

-                                   -
 \                                  | 192.168.1.0
  \                                 |   /255.255.255.0
   \                 ---------      |
    |                | Linux | .1.1 |
NET =================| masq  |------|
    |    PPP/slip    | router|      |  --------
   /                 ---------      |--| host |
  /                                 |  |      |
 /                                  |  --------
-                                   -

この環境でもっともふさわしい設定は、

# Network route for ethernet
route add 192.168.1.0 netmask 255.255.255.0 eth0
#
# Default route to the rest of the internet.
route add default ppp0
#
# Cause all hosts on the 192.168.1/24 network to be masqueraded.
ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0 

IP Masquerade 機能についての詳細は IP Masquerade Resource Pageにあります。

6.17 IP 透過プロキシ(IP Transparent Proxy)

IP transparent proxy 機能を使えば、別のマシンへのサービスリクエストや サーバへのアクセスをこのマシンにリダイレクトすることができます。この機 能は、Linux マシンをルータ兼プロキシー・サーバとして使っている場合に便 利で、外部のネットワークへ要求されたリクエストを全てローカルのプロキシー・ サーバで処理できるようになります。

カーネルコンパイル時のオプション:

Code maturity level options  --->
        [*] Prompt for development and/or incomplete code/drivers
Networking options  --->
        [*] Network firewalls
        ....
        [*] TCP/IP networking
        ....
        [*] IP: firewalling
        ....
        [*] IP: transparent proxy support (EXPERIMENTAL)

transparent proxy 機能は ipfwadm コマンドで設定します。

便利な設定は以下のとおり。

ipfwadm -I -a accept -D 0/0 80 -r 8080

この例では外部のあらゆるホストの 80 番のポート(www)への接続を全てこの マシンの 8080 番のポートへリダイレクトします。こうしておけば、ローカル のネットワークからの全ての WWW に関する接続リクエストが、自動的にこの マシンの WWW キャッシュプログラムへ送られます。

6.18 モバイル IP(Mobile IP)

「IP の可搬性(IP mobility)」とは、ある場所でインターネットに接続してい るホストが、別の場所に移っても IP アドレスを変更せずに接続できたり、接 続を切らずに場所を移動できることです。通常、IP アドレスを割りあてられ ているホストは、接続場所を変更すれば IP アドレスも変更しなければなりま せん。IP mobility 機能を使えば、ポータブルマシンにも決まった IP アドレ スを割りあて、自動ルーティング機能とIP カプセル化(トンネリング)機能を 使い、ポータブルマシン宛のデータグラムを、そのマシンが現在実際に使って いる IP アドレスに送ることできます。

Linux 用に IP mobility ツール一式を開発しようというプロジェクトが進行 中です。進行状況については Linux Mobile IP Home Page で公開されています。必要なツール もこのページからダウンロードできるかも知れません。

6.19 Multicast

通常、TCP/IP は接続先のマシンを指定した一対一の接続形態を取りますが、 IP マルチキャスト機能を使えば、異なる IP ネットワーク上にある任意の数 のホストへ、同時に IP データグラムを送ることが可能になります。この機能 はインターネット全体へ音声やビデオの素材を「放送」したり、その他新しい さまざまなアプリケーションのために開発されました。

カーネルコンパイル時のオプション:

Networking options  --->
        [*] TCP/IP networking
        ....
        [*] IP: multicasting

IP マルチキャストを使うには、そのためのプログラムとが必要で、ネットワー クにもいくつか特別の設定をする必要があります。Linux の場合にどのように 設定するかの説明は www.teksouth.com にあります。

6.20 NetRom (AF_NETROM)

NetRom のデバイス名は `nr0'、`nr1' になります。

カーネルコンパイル時のオプション:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    [*] Amateur Radio NET/ROM

AX25 と Netrom、 Rose プロトコルについては AX25-HOWTOで説明されています。これらのプロトコルはアマチュア無 線のオペレータの間のパケット通信によく使われています。

これらのプロトコルのほとんどは Jonathon Naylor jsn@cs.not.ac.uk が実装しました。

6.21 PLIP

PLIP のデバイス名は `plip0'、`plip1' のようになりま す。最初のデバイスが `0' 番になり、以後順に番号が付けられてい きます。

カーネルコンパイル時のオプション:

Networking options  --->
    <*> PLIP (parallel port) support

plip(Parallel Line IP)は、SLIP と同様に、2 台のマシンの間で 一対一 接続の機能を提供しますが、シリアルポートの代りにパラレ ルプリンタのポートを使って接続します。パラレルポートの場合、一度に複数 のビットを転送できるので、plip を使えば通常のシリアルポートを 使った接続よりは高速な接続が可能になります。加えて、SLIP の場合、(内蔵の シリアルポートが 16450 UARTならば)比較的高価な 16550AFN UART シリアル ポートを別途購入する必要がありますが、パラレルプリンタポートは通常の PC にはあらかじめ付いています。

ラップトップ機のなかには、プリンタでは使っていないけれど PLIP には必要 な信号を扱えないようなチップを使っているため、PLIP を使用できないもの もあります。

Linux の plip インターフェイスは Crynwyr Packet Driver PLIP と互換性があるので、Linux マシンと DOS マシンを PLIP 経由で 接続して、さまざまな TCP/IP ソフトウェアを使うことができます。

plip を使うためにカーネルのコンパイルする際、設定に関するファ イルが1つだけあります。それは/usr/src/linux/driver/net/CONFIG で、このファイルで plip のタイマを mS 単位で設定します。たい ていの場合はデフォルトの設定のままでいいはずですが、特に遅いコンピュー タを使っている場合はこの値を増した方がいいでしょう。実際にこのタイマの 設定を増さなければいけないのは、遅いマシンの方です。

PLIP ドライバは以下のようなIOアドレスと IRQ をデフォルト値にしています。

device  i/o addr    IRQ
------  --------    -----
plip0   0x3BC           5
plip1   0x378           7
plip2   0x278           2 (9)

お使いのパラレルポートの設定が上記の組み合わせと異なる場合、 ifconfig コマンドの `irq' オプションを使ってポートの IRQ を変えることができます。ROM BIOS でプリンタポートが IRQ を使うか否 かを設定できる場合、忘れずに IRQ を使うように設定しておいてください。

plip インターフェイスを使うには、ネットワーク用の rc ファイルに以下のような設定を追加するのがいいでしょう。

#
# Attach a PLIP interface
#
#  configure first parallel port as a plip device
/sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End plip

ここで:

IPA.IPA.IPA.IPA

はあなたのマシンの IP アドレスで

IPR.IPR.IPR.IPR

は接続先のマシンの IP アドレスです

pointtopoint パラメータは SLIP の場合と同じ意味で、接続のもう 一方の端にいるマシンのアドレスを設定します。

ほとんどの場合、plip インターフェイスは SLIP インター フェイスと同様に使えますが、plip の場合、dipslattach を使う必要もなければ、使うこともできません。

PLIP ケーブルの結線図

plip は、MS-DOS 上で PC 間のファイル転送によく使われている (Interlink などの使う)ケーブルと同じケーブルが使えるように設計されています。

ピンの配線は以下の通りです(/usr/src/linux/drivers/net/plip.c より)

Pin Name    Connect pin - pin
---------   -----------------
GROUND      25 - 25
D0->ERROR   2 - 15
ERROR->D0   15 - 2
D1->SLCT    3 - 13
SLCT->D1    13 - 3
D2->PAPOUT  4 - 12
PAPOUT->D2  12 - 4
D3->ACK     5 - 10
ACK->D3     10 - 5
D4->BUSY    6 - 11
BUSY->D4    11 - 6
D5          7*
D6          8*
D7          9*
STROBE      1*
FEED        14*
INIT        16*
SLCTIN      17*

注意: アスタリスク `*' のマークの付いたピンは配線しません。 18,19,20,21,22,23,24 はアースに落します。

金属でシールドされているケーブルの場合、そのシールドは DB-25 コネクタ と一端でのみ接続していなければいけません。

警告 : ケーブルの配線を間違えるとコントローラカードが壊れるかも知 れません。 不要なトラブルや頭痛の種を残さないように、充分注意して 全ての配線を二重にチェックしましょう。

PLIP で長い距離を結びたくなるかも知れませんが、PLIP は長い距離では使わ ない方が安全です。PLIP のケーブルの仕様は、せいぜい 1 メートルくらいの 長さまでしか考慮していません。PLIP で長い距離を伸ばす場合、ケーブルの 近くに強い電磁場を出すような装置、例えば照明器具や電力線、無線の送信機 などを置かないようにしましょう。これらの器具は通信を妨害するだけでなく、 パラレルポートのコントローラにダメージを与える場合もあります。2 台のコ ンピュータを長い距離を隔てて接続しなければならない場合、thin net 用の イーサネットカードを使って、同軸ケーブルで接続するようにする方がいいで しょう。

6.22 PPP

PPP のデバイス名は `ppp0'、`ppp1' のようになります。 最初のデバイスが `0' で、以後は順に番号が付きます。

カーネルコンパイル時のオプション:

Networking options  --->
    <*> PPP (point-to-point) support

PPP の設定についての詳細は PPP-HOWTO に詳しい解説があります。

pppdを使ってインターネットと恒久的な接続をするには

シリアル回線を使って常にインターネットへ接続できる場合、以下に示す方法 で接続が切れた場合に自動的にリダイアルできます。

以下のコマンドでroot から起動できるように PPP を設定します。

# pppd

/etc/ppp/options ファイルに `-detach' オプションを指 定することを忘れずに。その上で、以下の行を /etc/inittab に加 え、getty の設定に用います。

pd:23:respawn:/usr/sbin/pppd

こうしておけば、init プログラムが spawn して pppd を モニターし、pppd が死んだ場合は自動的に起動できます。

6.23 Rose プロトコル (AF_ROSE)

2.1.* カーネルでは、Rose デバイスの名前は `rs0'、, rs1' などのようになります。Rose デバイスは 2.1.* カー ネルでないと使えません。

カーネルコンパイル時のオプション:

Networking options  --->
    [*] Amateur Radio AX.25 Level 2
    <*> Amateur Radio X.25 PLP (Rose)

AX25 と Netrom、Rose プロトコルについては AX25-HOWTOが詳しく説明しています。これらのプロトコルはパケット 通信の実験でアマチュア無線のオペレータがよく使っています。

6.24 SAMBA - `NetBEUI', `NetBios' 機能

SAMBA は Session Menagement Block プロトコルを実装したものです。Samba を使えば、Microsoft やその他のシステムから Linux のディスクをマウント したり、プリンタを使うことが可能になります。

SAMBA とその設定の詳細は SMB-HOWTOに詳しく解説されています。

6.25 SLIP クライアント

SLIP のデバイス名は `sl0'、`sl1' などになります。最 初のデバイスが `0' で、残りは順に番号が振られます。

カーネルコンパイル時のオプション:

Network device support  --->
    [*] Network device support
    <*> SLIP (serial line) support
    [ ]  CSLIP compressed headers
    [ ]  Keepalive and linefill
    [ ]  Six bit SLIP encapsulation

SLIP(Serial Line Internet Protocol)を使えば、モデム経由の電話回線やあ る種の専用線のようなシリアル回線上で TCP/IP 接続を実現できます。もちろ ん、SLIP を使うためには、地元の SLIP サーバ に接続しなければ いけませんが、世界中の大学や商用プロバイダが SLIP 接続を提供しています。

[訳注: 日本では SLIP 接続よりも PPP 接続の方が主流です。]

SLIP はシリアルポートを経由して IP データグラムを送りますので、シリア ルデバイスを制御する必要があります。SLIP のデバイス名は sl0sl1 などですが、これらがどのようにシリアルデバイスに関係する のでしょうか? SLIP のプログラムは ioctl (I/O control)システ ムコールを使ってシリアルデバイスを SLIP デバイスに変換しています。この ためのプログラムが dipslattach です。

dip

dip (Dialup IP)とは、シリアルデバイスの回線速度を設定したり、 モデムに電話をかけさせて自動的にリモートサーバにログインしたり、サー バから送られるログイン時のメッセージの中から割りあてられた IP アドレス を見つけたり、必要に応じて ioctl を使いシリアルポートを SLIP モードに変えたりする多機能なプログラムです。dip には強力なス クリプト機能があり、ログイン手続きを自動実行できます。

dip は sunsite.unc.edu にあります。

インストールするには、以下のようにしてください。

#
# cd /usr/src
# gzip -dc dip337o-uri.tgz | tar xvf -
# cd dip-3.3.7o

<edit Makefile>

# make install
#

このパッケージに入っている Makefileuucp というグ ループが存在することを前提にしています。しかし、環境によっては、このグ ループを dipSLIP にすることもできます。

slattach

slattachdip に比べるとずいぶん単純なプログラムで す。非常に簡単に使えますが、dip ほどの機能は持っていません。 slattach はスクリプト機能もなく、シリアルデバイスを SLIP デバ イスに変換する機能しか持っていません。slattach を使う場合、IP アドレスなどの情報はあらかじめ分っており、起動前にシリアル接続も成立し ていなければいけません。slattach は、シリアル回線を経由してサー バに直結していたり、シリアルの専用回線を使っている際に便利なプログラム です。

いつ、どちらを使うべきか?

dip は、モデムを経由して SLIP サーバに接続する場合か、一時的 な接続を張る場合に使います。専用回線でサーバと接続しており、接続のため に特別の処理が不要の場合は slattach が便利です。詳細について は「恒久的な SLIP 接続」の節を参照してください。

SLIP インターフェイスの設定は Ethernet インターフェイスの設定によく似 ています(既述の「ethernet デバイスの設定」の節を参照してください)。し かしながら、いくつか重要な違いもあります。

まず第一に、SLIP の場合は ethenet のネットワークとは異なり、接続の両端 に一台ずつのマシンしかありません。ethernet の場合はケーブルをつなげば すぐに使えますが、SLIP の場合、接続形態にもよりますが、ネットワーク接 続を開始するには何らかの初期化処理が必要です。

dip の場合、システムの起動時には設定できず、シリアル接続の準 備ができた段階で起動することになります。この手順は自動化できます。 slattach の場合、rc.inet1 の中で設定するのがいいでしょ う。この方法については後述します。

SLIP サーバには動的に IP アドレスを割りあてるタイプのサーバとあらかじ め決まった IP アドレスを使うタイプのサーバの 2 種があります。また、ほ とんどの SLIP サーバが、電話をかけてログインする時にはユーザ名とパスワー ドの入力を求めます。dip を使えば、この処理を自動化することが できます。

あらかじめ決まった IP アドレスを使う SLIP サーバ

あらかじめ割りあてておいた IP アドレスを使うタイプのサーバでは、事前に 専用の IP アドレスを各クライアントに割りあてて、各クライアントは接続の 際にその IP アドレスで SLIP ポートを設定します。この種の SLIP サーバで は、モデムからの着信に答えて、ユーザ名とパスワードの入力を促してユーザ を確認した後、あなた用の IP アドレス向けのデータグラムはすべてその SLIP デバイスに送るように経路制御情報を設定します。

この種のサーバを使っている場合、自分のホスト名と IP アドレスはあらかじ め決まっているので /etc/hosts に書いておくことも可能です。ま た、rc.inet2host.confresolv.conf/etc/HOSTNAME rc.local などを通常の ethernet 接続と 同様に設定することができます。rc.inet1 を設定する場合、SLIP 接続用に特別のコマンドを設定する必要はありません。ネットワークインター フェイスを設定するなどの作業は dip の仕事です。必要な情報は dip に与え、dip がモデムを使って電話をかけ、接続が成 立してから必要な設定を実行するようにします。

接続先の SLIP サーバがこの種の設定の場合、次に「DIP の使い方」の節に進 んで、dip の設定方法を調べてください。

接続時に IP アドレスを割りあてるタイプのサーバ

動的な SLIP サーバとは、あらかじめ用意してある複数の IP アド レスの中から、接続のたびに異なる IP アドレスをクライアントに割り当てる タイプのサーバです。この場合、接続のたびに割り当てられる IP アドレスは 異なり、あなたが今使っているアドレスも、ログアウト後は誰か別の人に割り あてられることになります。SLIP サーバを設定するネットワークの管理者は、 あらかじめ SLIP で使うための IP アドレスを複数個用意しておき、新しく接 続してきたマシンには使っていない IP アドレスを割りあてるように設定しま す。

この場合、ログインプロセスの中でウェルカム・メッセージとともに割り当て た IP アドレスが示され、その接続の間はその IP アドレスを使って通信しま す。

この種のサーバを使う場合もあらかじめ IP アドレスを割り当てるタイプのサー バとほぼ同じ設定になりますが、接続の度に割り当てられた IP アドレスを使っ て SLIP デバイスを設定するというステップが余計に必要になります。

ここでも dip がこの大変な作業を引き受けてくれます。dip はログイン処理をするだけでなく、ウェルカム・メッセージの中に示される IP アドレスを自動的に読みこんで、それを使って SLIP デバイスを設定してくれま す。

接続先の SLIP サーバがこの種の設定の場合、次に dip の設定の仕方を知 るために「DIP の使い方」の節へ進んでください。

DIP の使いかた

今までに述べてきたように、dip を使えば SLIP サーバへ電話をか けてログインするという処理が自動にできます。ログインすれば、 dip は自動的に ifconfigroute コマンドを 使って SLIP デバイスを設定します。

dip を使うためには、`dip スクリプト' を書く必要があります。 `dip スクリプト' は、基本的に dip が理解できるコマンドを並べ たもので、dip で実行したいコマンドを、どのように実行するかを 記述しておきます。どのように書くかは、dip プログラムに付属の sample.dip を御覧ください。dip は多数のオプションを 有する強力なプログラムなので、ここでその詳細に触れることはできないため、 dip のマニュアルページや README、サンプルファイルを調べてくだ さい。

パッケージに付属のsample.dip ファイルは、あらかじめ割り当てら れた IP アドレスを使うような設定になっています。動的に IP アドレスを割 り当てるタイプのサーバの場合、新しいバージョンの dip パッケー ジにある、自動的に割り当てられた IP アドレスを読みとって、その IP アド レスで SLIP デバイスを設定するようなコマンド例を参照してください。以下 に示すサンプルは dip337j-uri.tgz に付属の sample.dip をもとに修正したバージョンで、この例を元に設定していくのがいいでしょう。 以下の部分を /etc/dipscript ファイルにセーブして、お使いの環 境に合うように修正してください。

#
# sample.dip    Dialup IP connection support program.
#
# このファイルは DIP の使い方を示しています(いるべきです)。このファイル
# の設定で Annex タイプの動的 SLIP サーバと接続できるはずです。静的なア
# ドレスを使うタイプのサーバの場合、dip337-uri.tgz パッケージに付属の 
# sample.dip ファイルを使ってください。

#
#
# Version:      @(#)sample.dip  1.40    07/20/93
#
# Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# 次に接続先に名前とアドレスを設定します。私の使っているダイアルイン
# マシンは 'xs4all.hactic.nl'(== 193.78.33.42) です。

get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400

# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset

# Note! "Standard" pre-defined "errlevel" values:
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...

# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble

# We are connected.  Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:

# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error

# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error

# Get and Set your IP address from the server.  
#   Here we assume that after commanding the SLIP server into SLIP
#   mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error

# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default

# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit

prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error

login_trouble:
print Trouble waiting for the Login: prompt...
goto error

password:error:
print Trouble waiting for the Password: prompt...
goto error

modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit

exit:
exit

上記のサンプルスクリプトでは 動的に IP アドレスを割りあてるタイプの SLIP サーバに接続するように設定しています。あらかじめ IP アドレ スの分っている SLIP サーバでは、dip337j-uri.tgz に付属の dsample.dip を使ってください。

dipget $local コマンドを与えれば、 dip は接続先から送られてきたテキストの中から IP アドレスのよ うに見える文字列、〜例えば `.' で区切られた数字〜、を探します。この修 正は、動的に IP アドレスを割り当てるタイプの SLIP サーバ用で、 サーバから与えられる IP アドレスを読み取る過程を自動化できます。

上記の例では、自動的に SLIP 接続をデフォルトの経路に指定します。既に ethenet ネットワークに接続していて、デフォルトの経路はそちらにしたいな どの場合では、上記のスクリプトから default を指定している行を 削除してください。このスクリプトが終了してから ifconfig コマ ンドを使って sl0 デバイスができていることを確認します。これが SLIP デバイスです。必要ならば、dip コマンドが終了してから ifocnfigroute コマンドを使って手動で設定してくだ さい。

dip では mode コマンドを使って、複数のプロトコルの中 から使うべきプロトコルを指定できます。もっともよく使われているプロトコ ルは SLIP に圧縮機能を組みこんだ cSLIP です。接続の両端が同じ プロトコルを使う必要があるので、サーバの選んだプロトコルと同じものを使っ ているかを確認してください。

上記のスクリプトはたいていのエラーには耐えられるように頑丈に作ってありま す。より詳しい情報は dip のマニュアルページを御覧ください。少し 工夫をすれば、設定した時間内にサーバへ接続できなければ自動的にリダイアル したり、複数のサーバを順に試してみるような機能を組みこむことも可能です。

専用線と slattach を使って恒久的な SLIP 接続を行うには。

2 台のマシンをシリアルケーブルでつないでいたり、2 台のマシンを専用線や 常時接続しているシリアル回線で接続しているような環境ならば、シリアル接 続を設定するための dip を使う必要はありません。そのような接続 を機能させるには、より簡単な slattach が使えます。

専用回線の場合、起動時に実行される rc.inet1 で必要な設定を行 うのがいいでしょう。実際のところ、必要なのはシリアルデバイスを正しいス ピードに設定して、SLIP モードに変更するだけです。slattach を 使えば、この作業は一つのコマンドで実現できます。以下のコマンドを rc.inet1 ファイルに追加してください。

#
# Attach a leased line static SLIP connection
#
#  configure /dev/cua0 for 19.2kbps and cslip
/sbin/slattach -p cslip -s 19200 /dev/cua0 &
/sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
#
# End static SLIP.

Where:

ここで、

IPA.IPA.IPA.IPA

は、あなたのマシンの IP アドレスで、

IPR.IPR.IPR.IPR

接続先のマシンの IP アドレスです。

slattach は指定したシリアルデバイスに空いている最初の SLIP デ バイスを割りあてます。slattach の割りあてるデバイス名は sl0 から始まり、次に割りあてるデバイス名は sl1、、の ようになります。

slattach-p 引数を指定すれば、異なるプロトコルを 設定可能です。この機能を使って、圧縮の有無によって SLIPcSLIP を使い分ける場合がよくあります。注意:圧縮の有無は接続 の両端で同じ設定にする必要があります。

6.26 SLIP サーバ

インターネットなどのネットワークに接続したマシンがあり、電話を経由して 接続してきた他の人に各種のサービスを提供したい場合、あなたのマシンをサー バとして設定する必要があります。接続のためのシリアル回線のプロトコルに SLIP を使だ場合、設定の仕方には 3 種類の方法があります。それぞれの方法 を以下に示しますが、私のお薦めは最初の sliplogin を使う方法で す。この方法が一番設定も簡単で理解もし易くなっています。しかしながら、 その他の方法についても説明しますので、どの方法を使うかは御自分で判断し てください。

sliplogin を使った SLIP サーバの設定

sliplogin は通常の login シェルの代りに使う SLIP ユーザ用のプ ログラムで、端末の回線を SLIP モードに変更します。sliplogin を使えば、あらかじめユーザごとに割りあてておいた IP アドレスを使うサー バ(静的サーバ)にも、あらかじめ用意しておいた IP アドレスの中から接続の 度に IP アドレスを割りあてるサーバ(動的サーバ)にも設定可能です。

接続過程は通常のログインプロセスとほぼ同じで、まずユーザ名とパスワード が必要です。しかしながら、その後はログイン・シェルが立ちあがる代りに 設定ファイル(/etc/slip.hosts)に記述されたログイン名に従って sliplogin が実行されます。設定ファイルのユーザ名が確認されれ ば、回線を 8 ビットすべてが通過するように設定して、ioctl コー ルを使って回線を SLIP モードに変更します。その後、sliplogin はシェルスクリプトを起動して、指定した IP アドレスやネットマスクに従っ て SLIP デバイスを設定し、適切な経路を定義します。このためのスクリプト は通常 /etc/slip.login と呼ばれていますが、getty と 同様、ユーザごとに設定することもでき、そのような場合は /etc/slip.login.loginame にユーザごとの設定スクリプトを用意し ます。

sliplogin を使うためにはいくつかの設定ファイルが必要です。以 下に、それらをどこから入手してどのように設定するかを説明します。

必要なファイルは以下の通りです。

sliplogin の入手先

すでにインストールしたパッケージの一部として sliplogin をイン ストール済みかも知れませんが、そうでなければ sunsite.unc.edu. から入手できます。この tar ファイルには、ソー スとコンパイル済みのバイナリ、man ページが入っています。

sliplogin を実行できるのは、その権限を持ったユーザだけなので、 以下のようなエントリを/etc/group ファイルに登録する必要があり ます。

 ..
slip::13:radio,fred
 ..

sliplogin パッケージをインストールすれば、Makefile が自動的に sliplogin のグループを slipにし、このグルー プに属するユーザだけが sliplogin プログラムを実行できるように なります。上の例では radiofred のみが sliplogin を実行できます。

必要なバイナリを/sbin ディレクトリにインストールし、 manページをマニュアルの 8 章に登録するには以下のようにしてく ださい。

# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..edit the Makefile if you don't use shadow passwords..>
# make install

インストール前に自分でプログラムを再コンパイルする場合、make install の前に make clean してください。どこか別のディレ クトリにインストールする場合は Makefileinstall の指定を変更します。

詳しくは、パッケージに付属の README ファイルを御覧ください。

SLIP ホスト用の /etc/passwd

通常、SLIP で接続してくる人向けに特別のエントリを /etc/passwd に用意する必要があります。よく行なわれているのは、接続してくるホスト名 の頭に大文字の `S' を付けて登録する方法です。今回紹介した例の場合、 radio 用には以下のような /etc/passwd エントリを追加 します。

Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin

実際には、アカウント名は特に意味が無いので、分りやすい名前を付けるよう にてください。

注意:電話をかけて来る人はシェルを使うわけではないので、専用のホームディ レクトリを用意する必要はありません。/tmp あたりを指定しておけ ばいいでしょう。また、通常のログインシェルの代りに sliplogin を指定していることに注意してください。

/etc/slip.hosts の設定

/etc/slip.hosts ファイルは、sliplogin がチェックする ファイルで、電話をかけてくる人のログイン名と必要な設定を登録しておきま す。IP アドレスやネットマスクの設定をするのもこのファイルになります。 以下に示す例では 2 つのエントリがあり、radio にはあらかじめ IP アドレスを割りあて、albert には動的に IP アドレスを割りあ てます。

#
Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1
Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60
#

/etc/slip.hosts ファイルのエントリは:

  1. 電話をかけてきた人のログイン名
  2. サーバーマシン、すなわちこのマシンの IP アドレス
  3. 電話をかけてきたホストに割り当てる IP アドレス。この欄が DYNAMIC になっていれば、後述する /etc/slip.tty ファ イルにある情報に従って IP アドレスを割りあてます。注意 : この 機能を使うには、最低でもバージョン 1.3 以上の sliplogin が必要です。
  4. 電話をかけてきたマシンに設定するネットマスクは、クラス C の場合 255.255.255.0 のように、ドットで区切った 10 進表記で指定します。
  5. slip モードの設定によって圧縮の有無やその他の slip の機能を使う ことも可能です。
  6. timeout パラメータで指定した時間以上上データグラムのやりとりが無い場合、 自動的に接続を切ります。負の値を指定すれば timeout 機能は無効になりま す。
  7. その他の引数。

注意: 2 つめと 3 つめの欄にはホスト名でもドット区切の 10 進表記の IP アドレスでも指定可能です。ホスト名を指定した場合、そのホスト名が IP ア ドレスに変換できなければなりません。変換できない場合、スクリプトは 異 常終了します。あるホスト名が IP アドレスに変換できるかどうかを調べるに は、そのホスト名に対して telnet してみるのがいいでしょう。もし Trying nnn.nnn.nnn... というメッセージが出れば、そのマシンで は指定したホスト名を IP アドレスに変換できています。`Unknown host' というメッセージが出る場合、変換できていません。変換できな い場合はドット区切の 10 進表記を使うか、リゾルバの設定を修正しましょう (詳しくは 名前の解決(Name resolution) の節を参照してください)。

slip でよく使うモードには

normal

通常の非圧縮の SLIP

compressed

van Jacobsen のヘッダ圧縮を可能にするモード(cSLIP)

の 2 つ があります。

通常これらは排他的なので、どちらか一方のみを指定します。その他指定可能 なオプションについては man ページを参照してください。

/etc/slip.login ファイルの設定

sliplogin/etc/slip.hosts ファイルを調べて、電話 をかけてきたマシン名が見つかれば、その IP アドレスとネットマスクを使っ て /etc/slip.login スクリプトを実行して実際に SLIP インターフェ イスを設定します。

sliplogin パッケージと共に配布されている /etc/slip.login ファイルは以下のようになっています。

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line.  sliplogin invokes this with
# the parameters:
#     $1       $2       $3    $4, $5, $6 ...
#   SLIPunit ttyspeed   pid   the arguments from the slip.host entry
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 <hw_addr> pub
exit 0
#

お気づきのように、このスクリプトでは ifconfigroute を使って自分の IP アドレスと接続先の IP アドレス、ネッ トマスクを設定し、SLIP デバイスを使って接続先への経路を設定しているだ けです。必要な設定は slattach コマンドで設定することもできま す。

サーバマシンと同じイーサネット上にいるホストから、電話を経由して接続し てきているホストへ接続するために、arp コマンドで代理 ARP(Proxy ARP)を設定していることにも注意してください。 <hw_addr>欄は、このマシンのイーサネットカードのハードウェ アアドレスを指定します。イーサネットのネットワークに接続していないサー バの場合はこの行を指定する必要はありません。

/etc/slip.logout ファイルの設定

接続が切れた場合、シリアルデバイスを元の状態に戻して、再度電話を取れる ように設定しておきましょう。このために使うのが /etc/slip.logout ファイルです。このファイルの構造はごく単純で、 /etc/slip.login ファイルと同じ引数を取ります。

#!/bin/sh -
#
#               slip.logout
#
/sbin/ifconfig $1 down
arp -d $6
exit 0
#

このスクリプトがやっているのはインターフェイスを `down' させて、以前に 登録された経路を削除するだけです。同時に arp コマンドで設定し ていた代理 arp も削除します。この作業もサーバマシンがイーサネットに接 続していない場合は必要ありません。

/etc/slip.ttyファイル

動的に IP アドレスを割りあてる場合、すなわち、/etc/slip.hostsDYNAMIC というキーワードを指定したエントリを作った場合、割 りあてるポート用の IP アドレスを登録するための /etc/slip.tty ファイルを設定しなければなりません。

このファイルは SLIP 接続を受けつける tty デバイスのリストになっ ており、それぞれのポートに接続してきたユーザに割りあてる IP アドレスを 登録しておきます。

このファイルのフォーマットは以下のようになっています。

# slip.tty    tty -> IP address mappings for dynamic SLIP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

この例では /dev/ttyS0 に接続してきた /etc/slip.hosts ファイルのリモートアドレス欄に DYNAMIC と指定してあるホストに 192.168.0.100 の IP アドレスを割りあてます。

このように、固有のアドレスの不要なユーザにはポートごとに割りあてたアド レスを使うことが可能です。この機能を使えば必要な IP アドレスは少なくて 済みます。

dip を使った SLIP サーバ

以下に説明する情報のいくつかは dip のマニュアルページから引用 したことを最初に白状しておきます。このマニュアルには Linux を SLIP サー バにする方法について簡単に紹介してあります。また、以下の記述は dip337o-uri.tgz パッケージ用のもので、その他のバージョンの dip にはあてはまらないことも多いので御注意ください。

dip には input モードがあり、この機能を使えば、 /etc/diphosts ファイルの設定に従って、自動的にシリアル回線を SLIP 接続として設定可能です。このモードに入るには、 dipdiplogin という名前で起動します。この機能を使 えば dip を使って SLIP サーバを構築でき、その場合、 ログイン・シェルに diplogin を使います。

この方法を使う場合、まず以下のようにシンボリック・リンクを設定します。

# ln -sf /usr/sbin/dip /usr/sbin/diplogin

次に /etc/passwd/etc/diphosts ファイルの双方に必 要なエントリを追加します。必要なエントリの形式は以下に示します。

dip を使って SLIP サーバを作る場合、dip を(input モー ドで)ログイン・シェルとして使うための特別の設定が必要になります。SLIP 用のアカウントには、大文字の `S' を頭に付けた `Sfredm' などを使うのが いいでしょう。

SLIP ユーザ用の /etc/passwd ファイルのエントリはこのようにな ります。

Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ diplogin をログインシェルに
|          |         |   |    |    \_______ ホームディレクトリ
|          |         |   |    \____________ ユーザ名
|          |         |   \_________________ ユーザのグループ ID
|          |         \_____________________ ユーザ ID
|          \_______________________________ 暗号化したパスワード
\__________________________________________ SLIP を使うユーザ名

ユーザがログインした後、login(1) がユーザ名を確認し、 diplogin コマンドを実行します。dipdiplogin というコマンド名で起動されると、自動的にログイン・シェ ルとして機能します。diplogin は、まず getuid() ファ ンクション・コールを使って自分を起動したユーザのユーザ ID を調べます。 その後、/etc/diphosts ファイルの最初のエントリを見て、そのユー ザ ID か接続があったデバイスの tty 名を調べ、その設定にしたがっ て適切な設定を行います。diphosts にユーザ名のエントリを作るか、 サーバのデフォルトの設定を使って、ユーザごとに静的な IP アドレスの割り 当てと動的な割り当てを混在させるような方法を取るかは判断におまかせしま す。

dip コマンドは input モードで起動されれば、自動的に `Proxy-ARP' エントリを追加するので、arp コマンドを手動で実行 する必要はありません。

/etc/diphostsの設定

dip が接続してきたホストを設定するために、 /etc/diphosts ファイルをあらかじめ用意しておきます。このファ イルに設定するホストは電話をかけて接続してくるマシンの場合もあれば、あ なたのマシンが接続する先のホストの場合もあります。

/etc/diphosts の一般的な書式は以下の通りです:

 ..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
 ..

各欄の意味は :

  1. login name: は getpwuid(getuid()) で得た名前か tty 名が使われます
  2. unused: passwd との互換性のためのフィールドで、特に使ってはいません。
  3. Remote Address: 接続先のホストの IP アドレスを数字か名前で指定します。
  4. Local Address: このマシンの IP アドレスです。これも名前か数字で指定します。
  5. Netmask: はドット区切り 10 進表記で登録します。
  6. Comment field: には何を書いても構いません。
  7. protocol: SLIP, CSLIP など。
  8. MTU: 10進表記

SLIP でアクセスしてくる人用の /etc/net/diphosts のエントリの 例は以下のようになります。

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296

この例では 145.71.34.1 への SLIP 接続の MTU を 296 にしています。また、

Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006

この例では圧縮をかけた cSLIP を使って 145.71.34.1 のアドレスに MTU 1006 で接続します。

お分りのように、あらかじめ割り当てた IP アドレスを使って接続してくるユー ザ用には /etc/diphosts にエントリを設けておく必要があります。 また、特定のポートにアクセスしたユーザ全てに同じ IP アドレスを割りあて るような設定の場合は tty デバイスのエントリを用意して、ユーザ 名のエントリは作りません。少なくとも、どのモデムに当っても適切な設定が 行われるように、それぞれの tty デバイスごとの設定はしておくこ とをお忘れなく。

ユーザがログインしてくれば、通常のログイン名とパスワードの入力プロンプ トが表示されます。そのプロンプトに対して SLIP ログイン用のユーザ名とパ スワードを入力します。それらが正しければ特にメッセージは表示されず、自 動的に接続端を SLIP モードに変更し、diphosts ファイルの指定に 従って設定します。

dSLIPパッケージを使ったSLIPサーバ

Matt Dillton <dillon@apollo.west.oic.com> が着信のみならず、 SLIP の発信にも使えるパッケージを作りました。彼のパッケージでは、小さ なプログラムとスクリプトが集まって必要な設定を行います。スクリプトの一 つは tcsh を使うので、このパッケージを使うには tcsh をインストールする必要があります。また、Matt は少くとも一つのスクリプ トが使う expect のバイナリパッケージも配布しています。このパッ ケージを自由に使うには expect を使った経験が必要ですが、だか らといって後込みすることはありません。

このパッケージには、Matt が書いた詳しい README ファイルが付属している ので、ここではそれを繰り返すことはしません。

dSLIP パッケージは以下のサイトから入手できます。

apollo.west.oic.com

/pub/linux/dillon_src/dSLIP203.tgz

あるいは、以下のサイトからも入手できます。

sunsite.unc.edu

/pub/Linux/system/Network/serial/dSLIP203.tgz

make install する前に README ファイルを読ん で、適切な /etc/passwd/etc/group エントリを作る ことをお忘れなく。

6.27 STRIP (Starmode Radio IP) 機能

STRIP のデバイス名は `st0'、`st1' になります。

カーネルコンパイル時のオプション:

Network device support  --->
        [*] Network device support
        ....
        [*] Radio network interfaces
        < > STRIP (Metricom starmode radio IP)

STRIP プロトコルはスタンフォード大学の MosquitoNet Projectと呼ばれるリサーチプロジェクトが開発し た Metricom 社の無線モデム用のプロトコルです。

Metricom 社の無線装置は、シリアルポートに接続し、スペクトル拡散法を使っ て 100kbps での通信を可能にしています。Metricom の無線装置についての情 報は Metricom Web Serverを御覧ください。

現在のところ、標準のネットワークツールやユーティリティは STRIP ドライ バをサポートしていないので、MosquitoNet の web サーバから必要な改造版 のツールをダウンロードする必要があります。どのソフトウェアが必要かにつ いては MosquitoNet STRIP Pageを見てください。

設定方法を簡単に述べると、改造された slattach プログラムを使っ てシリアルの tty デバイスを STRIP 用に設定して、`st[0-9]' デ バイスを、一つの重要な例外を除いて、イーサネットのように設定します。重 要な例外とは、技術的な理由から STRIP では ARP プロトコルをサポートして いないことで、サブネットのホストごとに ARP エントリを手動で設定してや る必要があります。これはそれほど大変な仕事でないと分るでしょう。

6.28 Token Ring

トークン・リングのデバイス名は `tr0' や `tr1' のよう になります。トークン・リングは IBM の提案した LAN プロトコルで、一時に 1つの LAN 上のノードしかデータの転送をしないようにして、通信のコリジョ ン(衝突)を防ぐようになっています。このために使われるのが「トークン」で、 この「トークン」がそれぞれのノードを順に回り、「トークン」を持ったノー ドのみがデータを送ることができます。データを送り終ればトークンを次のノー ドに送ります。このように、トークンが全てのノードを順に巡るので「トーク ン・リング」という名前になっています。

カーネルコンパイル時のオプション:

Network device support  --->
        [*] Network device support
        ....
        [*] Token Ring driver support
        < > IBM Tropic chipset based adaptor support

トークン・リングの設定はネットワークデバイスの名称が異なるだけでイーサ ネットの場合と同じです。

6.29 X.25

X.25 はパケットスイッチングプロトコルで、C.C.I.T.T. (世界中の ほとんどの地域のテレコミュニケーション会社の標準規格を作る団体)が定義 しています。X.25 と LAPB プロトコルの実装は現在進行中で、最新の 2.1.* カーネルに進行中の作業が組みこまれています。

Linux における X.25 の実装については Jonathon Naylor jsn@cs.nott.ac.uk が開発のリーダになっており、専用のメーリン グリストもあります。メーリングリストに参加するには、 majordomo@vger.rutgers.edu 宛に 、本文に "subscribe linux-x25"とだけ書いたメールを送ってください。

設定用ツールも初期バージョンが Jonathon の ftp サイト ftp.cs.nott.ac.ukから 入手できます。

6.30 WaveLan Card

Wavelan のデバイス名は `eth0'、`eth1' のようになりま す。

Kernel Compile Options:

Network device support  --->
        [*] Network device support
        ....
        [*] Radio network interfaces
        ....
        <*> WaveLAN support

WaveLAN カードはスペクトラム拡散法(spread spectrum)を使った無線 LAN カー ドで、カードそのものはイーサネットと同じように扱え、イーサネットカード と同じ方法で設定できます。

Wavelan カードについての情報は Wavelan.comから入手できます。


次のページ 前のページ 目次へ