この章では Debian でのネットワーク管理に焦点を当てています。 GNU/Linux
のネットワークに関する一般的な紹介は Net-HOWTO
をごらんください。
Debian ホストのインターネットへのアクセスを可能にするには、 ネットワークインターフェースが kernel によりサポートされ、適切に 設定される必要があります。
まず必要なことは、イーサネットカード、無線 LAN カードやモデムのような ネットワークインターフェースデバイスを kernel がサポートすることです。 これらのサポートを有効にするには、 Debian での Linux kernel, 第 7 章 に記述しているように kernel を再構築してモジュールを追加する必要があるかもしれません。
ネットワークデバイスの設定は以降で説明します。 本章の情報は Sarge のために更新中ですので、Woody 以前には適用できません。
Debian ホストはそれぞれが異なった Internet Protocol (IP) アドレスを持った 複数のインターフェースを持つことができます。 インターフェースは次に挙げるいくつかの異なるタイプかもしれません。
SLIP, PLIP (srrial line IP と pararell line IP), 特定のデバイスで トラフィックを制御するための "shaper" なデバイス, フレームリレー, Ax.25, X.25, ARCnet そして LocalTalk のような他のさまざまな種類の ネットワークデバイスが使用可能です。
インターネット (又は IP ベースのネットワーク) に直接接続された全ての ネットワークインターフェースはユニークな 32 ビットの IP アドレスにより 識別されます。 [53] IP アドレスネットワークを示す部分とホストを示す部分に分割できます。 IP アドレスのネットワークアドレスの部分を 1 に、ホストアドレスの 部分を 0 にするとネットワークのネットマスクを得られます。
伝統的に、IP ネットワークはそれぞれ 8 ビット、16 ビット、24 ビットの長さの ワークアドレス部分を持つクラスに分類されています。 [54]
IP アドレス ネットマスク 長さ クラス A 1.0.0.0 - 126.255.255.255 255.0.0.0 = /8 クラス B 128.0.0.0 - 191.255.255.255 255.255.0.0 = /16 クラス C 192.0.0.0 - 223.255.255.255 255.255.255.0 = /24
以上の長さを持たない IP アドレスは特別な目的に用いられます。
各クラスのためにローカルエリアネットワーク (LAN) で使用するために予約された アドレスの範囲が存在します。 これらのアドレスはインターネット上のあらゆるアドレスと衝突しないことが 保証されています。 (同じトークンにより、これらのアドレスの 1つがホストに割り当てられた場合、 そのホストはインターネットに直接アクセスしてはいけませんが、 個別のサービスのためのプロキシとして機能するゲートウェイを通して アクセスするか、ネットワークアドレス変換を通じてアクセスする 必要があります。) これらのアドレスの範囲はそれぞれのクラスにあるアドレスの数に応じて、 次のテーブルに示すように与えられています。
ネットワークアドレス 長さ 数 クラス A 10.x.x.x /8 1 クラス B 172.16.x.x - 172.31.x.x /16 16 クラス C 192.168.0.x - 192.168.255.x /24 256
IP ネットワークの最初のアドレスはネットワーク自身のアドレスです。 最後のアドレスはネットワークのブロードキャストアドレスです。 [55] 他の全てのアドレスはネットワーク上のホストに割り当てられます。 これらのうち、最初又は最後のアドレスは通常ネットワークの インターネットゲートウェイに割り当てられます。
ルーティングテーブルは kernel の目的地への IP パケットの送信方法 についての情報を含んでいます。 ここに IP アドレス 192.168.50.x/24 を持つローカルエリアネットワーク (LAN) 上の Debian ホストのためのサンプルのルーティングテーブルを示します。 ホスト 192.168.50.x (LAN 上にもある) は企業ネットワーク 172.20.x.x/16 のためのルータであり、192.168.50.254 (LAN 上にもある) はインターネット 用のルータです。
# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 127.0.0.0 * 255.0.0.0 U 0 0 2 lo 192.168.50.0 * 255.255.255.0 U 0 0 137 eth0 172.20.0.0 192.168.50.1 255.255.0.0 UG 1 0 7 eth0 default 192.168.50.254 0.0.0.0 UG 1 0 36 eth0
テーブル上の IP アドレスは /etc/networks
を調べるか C
ライブラリのリゾルバを用いて得られる名前としても表せます。
ルーティングに加え、kernel はネットワークアドレス変換、トラフィック整理 やフィルタリングも行えます。
より詳しい背景情報については Net-HOWTO
と
other
networking HOWTOs
をごらんください。
GNU/Linux システム上での伝統的な低レベルネットワーク設定ツールとしては
net-tools
パッケージに収録されている ifconfig
や
route
プログラムがあります。 これらのツールは公式に
iproute
パッケージに収録 されている ip
により取って代われています。 ip
プログラムは Linux 2.2
以上で動き、旧式のツールよりも
より機能的です。しかしながら、旧式のツールもまだ動き、多くのユーザにより
親しまれています。
ifconfig
と route
ここにインターフェース eth0 の IP アドレスを
192.168.0.3 から 192.168.0.111
に変更し、192.168.0.1 経由で 10.0.0.0
ネットワークに通すように eth0 を設定 する方法を示します。
現在の全てのネットワークインターフェースとルーティングの状況を表示するため、
まずはインターフェース引数無しで ifconfig
と route
を起動することから始めましょう。
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.3 Bcast:192.168.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:23363 errors:0 dropped:0 overruns:0 frame:0 TX packets:21798 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:13479541 (12.8 MiB) TX bytes:20262643 (19.3 MiB) Interrupt:9 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:230172 errors:0 dropped:0 overruns:0 frame:0 TX packets:230172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:22685256 (21.6 MiB) TX bytes:22685256 (21.6 MiB) # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.0.0 U 0 0 0 eth0 default 192.168.0.1 255.255.255.255 UG 0 0 0 eth0
まずインターフェースをダウンさせます。
# ifconfig eth0 inet down # ifconfig lo Link encap:Local Loopback ... (eth0 エントリはもはや存在しない) # route ... (ルーティングテーブルのエントリももはや存在しない)
次に eth0 を新しい IP アドレスと新しいルーティングを用いて立ち上げます。
# ifconfig eth0 inet up 192.168.0.111 \ netmask 255.255.255.0 broadcast 192.168.0.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
結果は次のようになります。
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ... # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * 255.255.255.0 U 0 0 0 eth0 10.0.0.0 192.168.0.1 255.0.0.0 UG 0 0 0 eth0
より詳しい情報は、ifconfig(8)
と route(8)
をごらんください。
ip
前記の ifconfig
や route
コマンドと等価な
ip
コマンドは次のようになります。
ip
プログラムは引数 help 付きで起動するとその
コマンド文法を表示します。例えば、ip link help は次を表示します。
Usage: ip link set DEVICE { up | down | arp { on | off } | dynamic { on | off } | multicast { on | off } | txqueuelen PACKETS | name NEWNAME | address LLADDR | broadcast LLADDR | mtu MTU } ip link show [ DEVICE ]
ip(8)
をごらんください。
無線 LAN インターフェースの設定には、wireless-tools
パッケージに収録されている iwconfig
プログラムが
ifconfig
と ip
の両方に加えて使われます。
iwconfig(8)
をごらんください。
インターネットにダイアルアップ電話線を接続したモデム経由でアクセス する場合、Point-to-Point Protocol (PPP) を用いて接続をネゴシエイト します。そのような接続はネットワークインターフェース ppp0, ppp1, などとしてアクセスされます。
PPP インターフェースは ppp
パッケージに収録されている PPP デーモン
pppd
により管理されます。 それゆえ、ユーザにとっては、PPP
インターフェースを設定するのは pppd
を設定することを意味します。
pppd
を手動で設定する
ネットワークリンクを確立するには、通信ポート (通常シリアルポート)
を開き、コマンドを通信デバイス (通常モデム) に送信し、
電話番号をダイアルし、外の PPP デーモンへの認証を行い、 PPP
インターフェースが作成されてルーティングテーブルが
トラフィックがリンクを通じて送られるように修正される必要があります。
pppd
はこれらの仕事の全てをこなし、その結果として
非常に長い操作オプションのリストを持ちます。 これらのオプションは
pppd(8)
に記述されています。
Debian システムでは、汎用のオプションは /etc/ppp/options
にセットされています。ユーザが指定するオプションは ~/.ppprc
にセットします。使用する通信ポートに依存するオプションは
/etc/ppp/options.portname
に保存されます。
例えば、二つのモデム — 組込みの /dev/LT-modem を通じてアクセス される
Lucent LT モデムと外付けの /dev/ttyS0 を通じてアクセスされる
モデムを持っていると仮定します。 次の 2 つのオプションファイルを作成します。
# cat > /etc/ppp/options.LT-modem <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-LT-modem" EOF # cat > /etc/ppp/options.ttyS0 <<EOF 115200 init "/usr/sbin/chat -f /etc/chatscripts/setup-ttyS0" EOF
これらは次のチャットスクリプトを参照しています。まず、
/etc/chatscripts/setup-LT-modem
です。
ABORT ERROR '' ATZ OK 'ATW2X2 S7=70 S11=55' OK AT
次に、/etc/chatscripts/setup-ttyS0
です。
ABORT ERROR '' ATZ OK 'ATL1M1Q0V1W2X4&C1&D2 S6=4 S7=70 S11=55 S95=63 S109=1 +FCLASS=0' OK AT
これらのファイルの内容はもちろんハードウェアに依存している必要があります。
オプションは pppd
に引数としても与えられます。
Debian では、pppd
は普通 pon
コマンドを
用いて起動されます。pon
が起動されると、その第一引数は
pppd
によっても読まれる /etc/ppp/peers/
に
あるオプションファイルと同じ名前です。 [56] こうして特定の
peer—例えば、特定のインターネットサービスプロバイダ (ISP)
を指定するオプションを設定できます。
例えば、アムステルダムとハーグの間を通信したいとします。 それぞれの町には 2つの ISP サービス—Planet と KPN を持っています。 まず各 ISP 用の基本的なオプションファイルを作ります。
# cat > /etc/ppp/peers/KPN <<EOF remotename KPN noauth user kpn noipdefault ipparam KPN EOF # cat > /etc/ppp/peers/Planet <<EOF remotename Planet auth user user3579@planet.nl noipdefault mru 1000 mtu 1000 ipparam Planet EOF
これらのファイルは 2つの ISP 間で異なるオプションを設定します。 両方の ISP
に共通のオプションは /etc/ppp/options
又は適切なインターフェース独自のオプションファイルのどちらかに 置きます。
次にそれぞれの町のための各 ISP 用のオプションファイルを作成します。 この例では片方の場所の ISP へ接続するのと他の場所の ISP に 接続する時の違いのみを必要なチャットスクリプトにします。 (ローカルのアクセス電話番号が異なるので、チャットスクリプトは異なります。)
# cat > /etc/ppp/peers/KPN-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-Amsterdam" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/KPN-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/KPN-DenHaag" file /etc/ppp/peers/KPN EOF # cat > /etc/ppp/peers/Planet-Amsterdam <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-Amsterdam" file /etc/ppp/peers/Planet EOF # cat > /etc/ppp/peers/Planet-DenHaag <<EOF connect "/usr/sbin/chat -v -f /etc/chatscripts/Planet-DenHaag" file /etc/ppp/peers/Planet EOF
それぞれの file 指示は早く示されるオプションファイルの一つ
の一つを含みます。 connect 指示は接続を確立するために
pppd
が使う コマンドを指示します。 通常この目的には
chat
プログラムを使い、 チャットスクリプトを ISP に適応させます。
アムステルダムは電話番号を除いて同じかもしれませんし、ISP が
他の会社を通じてサービスを提供しているならば、異なるかもしれません。
# cat > /etc/chatscripts/KPN-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676012321 CONNECT \d\c EOF # cat > /etc/chatscripts/Planet-DenHaag <<EOF ABORT BUSY ABORT 'NO CARRIER' ABORT VOICE ABORT 'NO DIALTONE' ABORT 'NO DIAL TONE' ABORT 'NO ANSWER' ABORT ERROR OK-AT-OK ATDT 0676002505 CONNECT \d\c EOF
これらの ISP と接続を確立できるようにするには、pppd
が peer
に要求に応じて供給するクライアント名とパスワードが必要です。 これらの情報は
/etc/ppp/pap-secrets
(PAP プロトコル使用時) 又は
/etc/ppp/chap-secrets
(CHAP プロトコル使用時) に保存されます。
CHAP はより安全ですが、PAP は依然広く使われています。
これらのファイルには秘密が含まれているので、グループと他人が読み書きできない
ファイルアクセス権限を設定しなくてはなりません。
これらのファイルのフォーマットは pppd(8)
で 説明されています。
"secret" (3 番目のフィールド) はファイル中のクライアント名
(最初のフィールド) および/又は サーバ名 (2 番目のフィールド)
を検索することにより調べられます。 ISP
に接続している場合、一般にサーバ名は知りませんので、クライアント名を
代わりに供給します。これは上に示した peers/KPN
と
peers/Planet
にある user 行で行われます。
# client name server name secret kpn * kpn user3579@planet.nl * myfavoritepet
詳細は /usr/share/doc/ppp/README.Debian.gz
をごらんください。
pppconfig
を用いて pppd
を設定する
pppd
を設定する手軽な方法は同名のパッケージにより 供給される
pppconfig
を使うことです。 pppconfig
はメニュインターフェースを通じてユーザが質問
に答えた後に上に示したようなファイルを設定します。
wvdial
を用いて PPP インターフェースを設定する
pppd
を用いる異なるアプローチとしては、 wvdial
パッケージに収録されている wvdial
から pppd
を起動することです。 pppd
の代わりに、chat
を起動してダイアルし、 接続のネゴシエイトを行います。wvdial
はダイアルと最初のネゴ シエイトを行い、そして残りの作業を行うために
pppd
を起動します。
電話番号、ユーザ名、そしてパスワードを与えるだけで wvdial
は
ほとんどの場合接続を確立できます。
Debian システムは時々自分自身を名前で識別する必要があります。 この目的のため、hostname が kernel により維持されています。
initscript /etc/init.d/hostname.sh
は hostname を ブート時に
(hostname
を用いて) /etc/hostname
に保存されている名前に設定します。 このファイルには完全修飾ドメイン名 (FQDN)
ではなく、 hostname のみ が含まれていなくてはなりません。
現在の hostname を表示するには、引数無しで hostname
を起動してください。
ホストの mailname はホストを識別するためにメール関連の
プログラムが使用する名前です。 /etc/mailname
ファイルには名前に続いて改行を持つ行が 含まれます。 mailname
は通常ホストの完全修飾ドメイン名の一つです。 mailname(5)
をごらんください。
Debian ホストにより送信されるメールの From: ヘッダにある 受取人が何かは Mail User Agent (MUA) や Mail Transfer Agent (MTA) がどのように設定されているかに依存します。 ローカルユーザ foo がメールを mailname myhost.dom から送ると仮定します。 すると、送信されるメールの From: ヘッダは次のようになります。
MUA が From: ヘッダをセットしたとしても、MTA が "Sender:foo@herman.dom" ヘッダを 本当の発信源を示すために追加するかもしれません。
もちろん Exim の元で存在しないメールアドレスのための物置を設定する, 第 9.6.1.3 節 や Exim の元で送信メールに対してアドレス書き換えを設定する, 第 9.6.1.4 節 で議論 したように、関連する MTA がアドレスの書き換えを行った時、受取人が見る メールアドレスはどうにでも変えられ得ます。
ホストは IP アドレスに加え、ドメイン名によっても参照されます。 DNS
はネームリゾルバがドメイン名を IP アドレスや他のホストの属性と
関連付けるためにネームサーバを勤めるクライアントサーバシステムです。 GNU C
ライブラリ resolver(3)
もファイルにある IP
アドレスの検索を行えますし、Network Information Services (NIS)
の役目も勤めます。
ローカルのホストに関連づけられているドメインが何かを知るには、 hostname --fqdn コマンドを使いましょう。このコマンドはリゾルバが ローカルの hostname に対して捜し出した最初の FQDN を表示します。 [57]
特定のドメイン名に関連づけられた IP アドレスを捜し出す仕事は、リゾルバ
の仕事です。最も良く使われているリゾルバは GNU C ライブラリにある リゾルバ
(resolver(3)
) により実現される
関数群です。他のリゾルバとしては、libfiredns
パッケージに収録されている FireDNS リゾルバがあります。
どのように LIBC リゾルバが名前を解決するかは /etc/nsswitch.conf
設定ファイル中の hosts 行により制御されています。
この行は名前を解決するために使われるサービス、例えば dns,
files, nis, nisplus をリストしています。
[58]
nsswitch.conf(5)
をごらんください。 files
サービスが使用されている範囲については、リゾルバの挙動は
/etc/hosts
設定ファイルによっても制御されています。
hosts(5)
をごらんください。
上の全てのファイルは静的であり、お好みのエディタで編集できます。
dns サービスが使用される範囲においては、リゾルバの挙動は
/etc/resolv.conf
設定ファイルによっても制御されています。
resolv.conf(5)
をごらんください。 resolv.conf
の重要な機能のひとつは、名前を解決するために 接続されるネームサーバの IP
アドレスをリストすることです。
このリストはたびたびネットワーク環境に依存し、ネットワーク環境はコンピュータ
を起動する間時にふれて変化します。 pppd
や dhclient
のようなプログラムは resolv.conf
内の行を追加したり削除する操作を行えますが、
これらの機能は常に適切に動くとは限らず、お互いに衝突しかねません。
resolvconf
パッケージはこのファイルを更新するための
標準的なフレームワークを供給することにより、よりうまくこの問題を解決します。 ネームサーバ情報の管理 –
resolvconf
, 第 10.4.2 節 をごらんください。
resolvconf
resolvconf
パッケージは利用可能なネームサーバ
に関する情報の動的な管理のためのフレームワークを供給します。 リゾルバや DNS
キャッシュが使うためのネームサーバのリストを動的に管理
する方法についての長年の問題を解決します。 resolvconf
は自身をネットワークインターフェースを制御するプログラムと
ネームサーバ情報を供給するプログラム、そしてネームサーバ情報を必要とする
アプリケーションの間の仲介人として設定します。
resolvconf
は手動の設定を必要とせずに動作するように
設計されています。しかしながら、パッケージはまだ非常に新しく、
適切に動作させるためには、まだ手動の介入をいくらか必要とするかもしれません。
あなたが /etc/resolv.conf
を更新するようにパッケージを
カスタマイズしたならば、これは確実に当てはまります。ですので、
カスタマイズを無効にする必要があります。 詳細は /usr/share/doc/resolvconf/README.gz
をごらんください。
nscd
, dnsmasq
, pdnsd
, bind9
もしネームサーバの反応が遅い場合は libc6
リゾルバ
を用いて検索される結果を nscd
を用いてキャッシュしたくなる
でしょう。
もしあなたのローカルネットの他のホストのために検索結果をキャッシュしようと
するなら、dnsmasq
や pdnsd
のような
キャッシュフォワーディングネームサーバを使うのがいいでしょう。
bind9
の named
も
キャッシュフォワーディングネームサーバとして使えない事はありません。
ただ重いプログラムなので、その先進的機能を使わないなら、
先程述べた他のプログラムを使う方が賢明です。 resolvconf
と連係しうまく動きます。
bind
あるドメインのための信頼できるネームサービスを供給する必要がある場合、
bind9
パッケージ による named
のような完全に一人前のネームサーバが必要です。
新たにインストールする場合、bind9
がお薦めです。
bind9
をインストールした際には、dnsutils
もインストールしましょう。 次に、bind9-host
,
dns-browse
, dnscvsutil
, nslint
のような
ユーティリティパッケージもインストールしたいかもしれません。
さらに、bind9-doc
のようなドキュメントパッケージも
インストールしたいかもしれません。そして、libbind-dev
や
libnet-dns-perl
のような開発用パッケージもインストール
したいかもしれません。 DHCP
を用いたインターフェースを設定する場合、dhcp-dns
パッケージを見つけるかもしれません。
基本的な設定を行うには、bind9
をインストールするか、
dpkg-reconfigure
を実行しましょう。設定は named.conf
を編集することです。 Debian では、このファイルは /etc/bind/
にあり、 主に基本的な DNS ゾーンの定義のために用いられます。 このファイルには
named.conf.local
というローカルゾーンを定義する
ファイルと、named.conf.options
という設定オプションのために
用いられるファイルという二つの別ファイルが 含まれます。 (後者は
/var/run/bind/named.options
ファイルを生成するために
resolvconf
によって処理されます。この生成ファイルは
forwarders 指定が現在利用できるローカルではないネームサーバの
リストであるという点を除いてオリジナルと同じです。
これを利用するには、named.conf
の include 行が
/var/run/bind/named.options
を含むように変更してください。 ネームサーバ情報の管理 –
resolvconf
, 第 10.4.2 節 をごらんください。)
完全なパス名無しで named.conf*
という名前のデータベースファイル が
/var/cache/bind/
に保存されます。 これは named
により生成されるファイルを保存する正しい場所です。
例えば、デーモンが働いているセカンダリゾーン用のデータベースファイルです。
/etc/bind/
にある静的なデータベースファイルは、 フルパス名により
named.conf
にあるものと参照 されなくてはなりません。詳細は
/usr/share/doc/bind9/README.Debian.gz
をごらんください。
低レベルのネットワークインターフェースの設定は Dynamic Host Configuration Protocol (DHCP) を用いて自動化できます。 ファイアーウォールやルータボックス、そしてあなたが使っているブロードバンド ISP は IP アドレスや他のパラメータをこの方法で提供しているかもしれません。
DHCP を動かすには、次のパッケージのうち一つをインストールする必要があります。
dhcp3-client
(version 3, Internet Software Consortium による)
dhcpcd
(Yoichi Hariguchi と Sergei Viznyuk による)
pump
(Red Hat による)
pump
はシンプルで広く使われています。 dhcp3-client
は複雑ですがより広範な設定が可能です。 [59]
ネットワーク設定をより容易にするため、Debian は ifup
と
ifdown
プログラムと /etc/network/interfaces
ファイル
から構成される標準の高レベルネットワーク設定ツールを供給します。 [60] ネットワークの設定に
ifupdown
を使おうとした場合、
通常低レベルのコマンドを同時に使うべき ではありません。 [61] ifupdown
プログラムはこのプログラム単独でネットワーク
インターフェースの設定や設定解除に利用されるという意図を持って書かれました。
インターフェースの設定を更新するには、次のようにします。
# ifdown eth0 # editor /etc/network/interfaces # お好きなようにいじる # ifup eth0
より詳しい情報は interfaces(5)
, /usr/share/doc/ifupdown/examples/network-interfaces.gz
,
と ifup(8)
をごらんください。
192.168.0.111 の固定 IP アドレスを持った Ethernet インタフェース
の設定を行いたいと仮定します。このアドレスは 192.168.0
から始まるので、LAN 上にある必要があります。さらに、LAN
のインターネットへのゲートウェイの アドレスを 192.168.0.1
と仮定します。 次のような行を含むように /etc/network/interfaces
を編集しましょう。
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1
"up" や "down" 行の適切なコマンドを指定することにより、インターフェースの 他の面についての設定ができますし、インターフェースを 立ち上げた後又は落とした後に他のアクションを取ることもできます。
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE down route del -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.2 dev $IFACE up echo Interface $IFACE going up | /usr/bin/logger -t ifup down echo Interface $IFACE Going down | /usr/bin/logger -t ifdown
その代わりに、/etc/network/if-up.d
や
/etc/network/if-down.d
ディレクトリにスクリプトを挿入できます。
そのようなスクリプトは拡張オプションも実装できます。 詳細は
interfaces(5)
をごらんください。 例えば、resolvconf
パッケージには インターフェースを立ち上げるときに /etc/resolv.conf
に含まれるような DNS 情報を指定するオプションを追加できます。
iface eth0 inet static address 192.168.0.111 netmask 255.255.255.0 gateway 192.168.0.1 dns-search somedomain.org dns-nameservers 195.238.2.21 195.238.2.22
dns-search オプションの somedomain.org 引数は
resolv.conf(5)
にある search
オプションの引数に対応します。 dns-nameservers オプションの
195.238.2.21 および 195.238.2.22 引数は
nameserver オプションの引数に 対応します。
他の利用可能なオプションとしては、dns-domain と
dns-sortlist があります。 ネームサーバ情報の管理 –
resolvconf
, 第 10.4.2 節 をごらんください。
DHCP を用いてインターフェースを設定するには、 次のような行を含めるように
/etc/network/interfaces
を編集してください。
iface eth0 inet dhcp
これを機能させるには、 DHCP を用いてネットワークインターフェースを設定する, 第 10.5 節 で言及した DHCP クライアント のうちいずれかをインストールする必要があります。
wireless-tools
パッケージには、インターフェースを
立ち上げる前に無線 LAN (802.11a/b/g) ハードウェアの設定を可能とする
フックスクリプト /etc/network/if-pre-up.d/wireless-tools
が含まれます。 設定は iwconfig
プログラムを通じて行われます。
iwconfig(8)
をごらんください。 iwconfig
に与えることが可能なコマンドパラメータそれぞれ に対して、"wireless-"
接頭辞を付けたパラメータのような名前で /etc/network/interfaces
内にオプションとして含めることが できます。 例えば、DHCP を用いて
eth0 を立ち上げる前に eth0 の ESSID を
myessid に、暗号鍵を 123456789e
に設定するには、次のような行を含むように /etc/network/interfaces
を編集しましょう。
iface eth0 inet dhcp wireless-essid myessid wireless-key 123456789e
このインターフェースに対して waproamd
を走らせている場合、 ESSID
と暗号鍵を設定するこの方法を用いるべきではありません。 ifup
が起動された時、waproamd
は既に ESSID と暗号鍵を設定済みです。 ネットワーク設定のトリガを設定する –
waproamd
, 第 10.10.4 節 をごらんください。
ifup
と ifdown
プログラムは PPP
インターフェースの追加と削除のために pon
と poff
を使います。ですから、まずは PPP インターフェースの設定,
第 10.2.4 節 を読みましょう。
peer myisp に対して動くように PPP
を設定する必要があると仮定します。 次のような行を含むように
/etc/network/interfaces
を 編集しましょう。
iface ppp0 inet ppp provider myisp
この一区切りが正しい位置にあれば、ifup ppp0
は次を実行します。
pon myisp
不運なことに、/etc/network/interfaces
にある ppp 節に
pppd
オプションをさらに供給することはいまのところ できません。 [62]
現在 PPP インターフェースの補助的な設定を行うために ifupdown
を使うことはできません。pon
は pppd
が接続を
確立する前に存在するため、ifup
は インターフェースの
準備ができる前に up スクリプトを起動します。 このバグ [63]
が修正されるまでは、/etc/ppp/ip-up
又は
/etc/ppp/ip-up.d/
にある補助的な設定を実行する必要性が 残ります。
たとえ、カスタマのマシンが Ethernet や ATM ネットワーク経由でつないでいた
としても、多くのブロードバンドインターネットサービスプロバイダ (ISP) は PPP
を接続のネゴシエイトを行うために使用します。 これは PPP over Ethernet (PPPoE)
により実現されます。この技術は PPP ストリームを Ethernet
フレーム内にカプセル化する技術です。 ISP が myisp
と呼ばれていると仮定します。 まず peer myisp のための
PPP と PPPOE を設定します。 最も簡単な方法は pppoeconf
パッケージをインストールし、 コンソールから pppoeconf
を起動することです。 次に、下に示す行を含むように
/etc/network/interfaces
を編集します。
iface eth0 inet ppp provider myisp
時々 PPPoE over DSL を用いた時の Maximum Transmit Unit (MTU)
についての問題が発生します。 詳細は DSL-HOWTO
をごらんください。
ブロードバンドモデムがルータ機能を持っている場合、モデム/ルータは それ自身で PPPoE 接続を操作し、LAN 側では単なる インターネットへの Ethernet ゲートウェイにしか見えないことに注意してください。
eth0
が DHCP により設定した IP アドレスを用いてインターネット
に接続し、eth1
が固定 IP アドレス 192.168.1.1
を用いて LAN に接続していると仮定します。 次に示すような行を含むように
/etc/network/interfaces
を編集しましょう。
iface eth0 inet dhcp iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
ゲートウェイルータを構築する, 第 10.14 節 に記述しているようにホストの NAT を有効にしている 場合、LAN 上の全てのホストでインターネット接続を共有できます。
仮想インターフェースを用いると、1つの Ethernet カードを複数の IP
サブネットへのインターフェースとして設定できます。 例えば、ホストが
192.168.0.x/24 の LAN ネットワーク上にあると仮定 します。ホストを既存の
Ethernet カードを用いて DHCP を用いて供給される パブリックな IP
アドレスを用いてインターネットに接続したい場合、 次に示すような行を含むように
/etc/network/interfaces
を編集しましょう。
iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 iface eth0:0 inet dhcp
インターフェース eth0:0 は仮想インターフェースです。 これが立ち上がると、親の eth0 も立ち上がります。
次の章では、読者は 物理インターフェース と 論理インターフェース の違いを理解することが重要に なります。 [64] 物理インターフェースは私達が 通常"インターフェース" と呼んでいる物でカーネルによって eth0, ppp1 などと名付けられるものです。 論理インターフェースは物理インターフェースの 変数パラメータに割り当てられる値のセットのことです。 この説明が分かりにくいなら、 "論理インターフェース X として設定する" という表現を "インターフェースプロファイル X を用いて設定する" に置き換えます。
/etc/network/interfaces
にある iface 定義は
実際は物理インターフェースの定義ではなく、論理インターフェースの 定義です。 [65]
インターフェースを絶対再設定したくない場合、物理インターフェース X
は標準では論理インターフェース X として設定されるので無視できます。
しかしながら、あなたのコンピュータが仕事場と家の間を持ち運ぶノート PC である と仮定しましょう。コンピュータを職場のネットワークに接続した時と 家庭内 LAN に接続したときでは、接続する場所に従い eth0 を再設定 する必要があります。
まず (以前行ったように eth0 ではなく) 二つの論理インターフェース home と work を定義し、インターフェースが家庭内 LAN と職場ネットワークのために設定されるかをそれそれ記述します。
iface home inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 iface work inet static address 81.201.3.123 netmask 255.255.0.0 gateway 81.201.1.1
そして、物理インターフェース eth0 をコマンドラインで、次のように 適切な設定ファイルを指定して立ち上げます。
# ifup eth0=home
職場ネットワークのために eth0 を再設定するには、次のコマンド を実行します。
# ifdown eth0 # ifup eth0=work
上記で書かれた interfaces
ファイルを用いると、もはや ifup
eth0 を用いるだけで eth0 を立ち上げる
ことができることに注意してください。 この理由としては、ifup
は物理インターフェースの名前を
標準の論理インターフェースの名前として使用しており、私達の例では
eth0 という論理インターフェースを定義していないためです。
インターフェース名は ifup
が起動する時に他の 名前に
"マップ" できます。
どのような名前にマップされるかは状況に依存して変更できます。
それゆえ、ifup
は前もって定義された候補の中から適切な
論理インターフェースとして与えられた物理インターフェースを立ち上げる
ように設定できます。
論理インターフェースの名前のマッピングは次のように発生します。
ifup
コマンドラインに
与えられていない場合、物理インターフェース名は論理インターフェース名
の初期値として使用される。
/etc/network/interfaces
に定義されている論理インターフェースの定義のラベルである場合、
物理インターフェースが論理インターフェースとして立ち上げられる。
上記に当てはまらない場合は、ifup
が "Ignoring unknown
interface" というメッセージを表示して終了する。
mapping 行の文法は次のとおりです。
mapping glob-pattern script script-name [map script input]
mapping 行で示されたスクリプトは 物理インターフェース名を引数にし、 "map" 行の "map" に続く ("map"自身を除く) 全ての内容を標準入力に送り込み 毎回起動されます。 スクリプトは終了前に標準出力にマッピングの結果を表示します。
例えば、次の mapping 行は eth0 を home
論理インターフェースとして ifup
を立ち上げさせます。
mapping eth0 script /usr/local/sbin/echo-home
ここで /usr/local/sbin/echo-home
の内容は次のようなものです。
#!/bin/sh echo home
マッピングはスクリプトを用いて行われるので、ある種のテストに基づいて 論理インターフェースを選択することが可能です。 この例は guessnetを使った論理インターフェース選択, 第 10.8.1 節 を参照ください。
guessnet
をインストールして /etc/network/interfaces
に次のような行を 追加しましょう。
mapping eth0 script guessnet-ifupdown map home map work
ifup eth0
すると、guessnet
は eth0 が
home と work のどちらで立ち上げられたかを
チェックします。これには、論理インターフェースの定義内に保存された情報を
用います。
laptop-net
パッケージはネットワークの再設定に
異なる手法を取っています。laptop-net は ifupdown
の
論理インターフェースを利用していませんが、その代わり、固有の 設定
"スキーム" とシステム "プロファイル"
というシステムを持っています。
しかしながら、物理インターフェースを設定するために、laptop-net は依然
ifup
と ifdown
を使用しています。
詳細な情報は、laptop-net-doc
にある良質な情報に 当たってください。
eth0, eth1 などの名前は kernel がインターフェースを作成する 順番に従い kernel により割り当てられます。 一方、ブート時に検知されるアダプタは通常毎回同じ順番で検知され、それゆえ 毎回同じ名前が割り当てられます。 ホットプラグされたアダプタにはこれは当てはまりません。ホットプラグされた アダプタはあらゆる順序で検知され、異なる状況下では kernel により結局異なる 名前が割り当てられる結果となります。
この事実により、ネットワークアダプタがホットプラグされるシステムでは eth0, eth1 などのデフォールトマッピングに 頼るべきではありません。むしろ論理インターフェースに独自の名前を与え、 論理インターフェースにどのアダプタが割り当てられるかを制限する次の二つの 方法を利用すべきです。
最初の方法は、 kernel がアダプタに内在する特性に従いインターフェースに
名前を割り当てるように、(net-tools
パッケージにある )
nameif
ユーティリティ又はより柔軟性のある (ifrename
パッケージにある) ifrename
ユーティリティを利用することです。
この命名手順を用いる事で、物理インターフェース名がどのアダプタを指すか
に用いられるようになります。
もう一つの方法は、ifup
のマッピング機構を利用し、
物理インターフェースが立ち上がる際に内在するアダプタの特性に従って
論理インターフェースが選択されるようにする方法がある。
例えば net1 と net2 各々のネットワークで使う 2 つの
ネットワークアダプタを持っていると仮定しましょう。
/usr/share/doc/ifupdown/examples/
ディレクトリには アダプタの
Media Access Controller アドレス (MAC アドレス)
に基づいて論理インターフェースが選択されるマッピングスクリプト
があります。まずスクリプトを適当なディレクトリにインストールします。
# install -m770 /usr/share/doc/ifupdown/examples/match-mac-address.sh \ /usr/local/sbin/
/etc/network/interfaces
に以下の行を追加する。
mapping eth0 script /usr/local/sbin/match-mac-address.sh map 02:23:45:3C:45:3C net1 map 00:A3:03:63:26:93 net2
もう少し複雑な例は 多段マッピング, 第 10.11 節 を参照してください。
どちらの方法を適用する場合でも、アダプタを認識するために最も広く用いられる 特性は MAC アドレスです。
インターフェースがどのように設定や再設定されるのかを見てきました。 これらは適切な時期に行われる必要があります。
伝統的にネットワークは /etc/rcS.d/S40networking
initscript
経由でブートシーケンスの間に設定され、滅多に再設定されませんでした。
ネットワークに依存するサービスはブートシーケンスで後に起動されました。
シャットダウン又はリブート時に initscript は逆の順番で起動されました。
しかしながら、現在 GNU と Linux において動的に変化するハードウェアと状況
のサポートがトレンドです。前者のサポートはホットスワップ可能な PCMCIA
カードのために追加されました。より最近では、hotplug 機構が
追加され、多くの周辺機器がコンピュータの起動中に抜き差しできるように
なりました。 これにはネットワーク関連のハードウェアが含まれます。
ハードウェアに依存するホットスワップされるハードウェアはハードウェアが
挿入された後に起動され、ハードウェアが外された時に停止する必要がある
ことに注意してください。 これはこの種のサービスが System V init
システムの制御から外され、 その代わりに ifupdown
の制御下に置かれる必要がある ことを意味しています。
例えば、initscript /etc/init.d/foo
により制御される サービス
foo が動的に再設定されるネットワークインターフェース
eth0 に依存するとします。
sysv-rc
init システムを利用している場合、 次を行います。 [66]
# rm /etc/rc[2345].d/S??f00
/etc/network/interfaces
にある eth0
行に追加することにより foo を ifupdown
の制御の元に置きます。
iface eth0 inet dhcp up /etc/init.d/foo start down /etc/init.d/foo stop
ブート時に /etc/rcS.d/S40networking
init スクリプトは ifup
-a
コマンドを起動します。 これは /etc/network/interfaces
の
auto 節にリスト
されている全ての物理インターフェースを立ち上げます。
最近動的な方法を用いてネットワーク設定を操作する方がより良いことが
たびたびあります。
いったん動的に変化するハードウェアのサポートメカニズムが機能すると、
まるで動的であったかのように静的なハードウェアを扱うことがシンプルになります。
ブートはもう 1つの hotplug イベントとして扱えます。 (ネットワーク設定のトリガを設定する –
hotplug
, 第 10.10.2 節 参照)
しかしながら、ほとんど全ての場合、少なくともループバックデバイス
lo はブート時に立ち上げておきたいでしょう。
それゆえ、/etc/network/interfaces
に次の行が含まれている
ことを確認してください。
auto lo iface lo inet loopback
ブート時に他の物理インターフェースも立ち上げたい場合、 auto
行にさらに物理インターフェースを追加できます。 auto 行に
決して PCMCIA インターフェースを
リストしてはなりません。PCMCIA cardmgr
はブートシーケンス において
/etc/rcS.d/S40networking
が起動する時よりも後に 起動されます。
hotplug
hot-plug のサポートを追加するには、hotplug
パッケージ
をインストールしてください。
ネットワークハードウェアはブート時や、カード (例えば PCMCIA カード) を
マシンに挿入した時、 discover
が起動され、必要なドライバ
モジュールをロードした時にもホットプラグできます。
kernel が新しいハードウェアを検知すると、ハードウェアのドライバを初期化し、
設定を行うために hotplug
プログラムを起動します。
その後、ハードウェアが削除されると、kernel は異なる環境変数設定を 用いて
hotplug
を再び起動します。 Debian では、hotplug
が呼ばれると、/etc/hotplug/
と /etc/hotplug.d/
にあるスクリプトを起動します。 詳細は hotplug(8)
をごらんください。
新たに挿入されたネットワークハードウェアはスクリプト
/etc/hotplug/net.agent
により設定されます。 [67] PCMCIA
ネットワークカードが挿入され、eth0 が利用可能になる と仮定します
[68] 。
ifup eth0=hotplug
/etc/network/interfaces
に論理インターフェースの定義を追加するか、
hotplug という名のマッピングをしなければ、このコマンドは
何もしません。 コマンドが eth0 を設定するようにするには、次の行を
/etc/network/interfaces
に追加しましょう。
mapping hotplug script echo
論理インターフェース定義によるネットワーク設定, 第 10.7 節 で説明したように、これは次と等価になるように 上に示したコマンドをマップします。
ifup eth0=eth0
もしインターフェースをコントロールするために hotplug
によってスタートした ifplugd
や waproamd
のインスタンスを用いている場合、このようなマッピング行を
追加しないでください。
eth0 のみを使いたく、他のインターフェースをホットプラグ時に
立ち上げたくない場合、次のように echo
の代わりに grep
を使いましょう。
mapping hotplug script grep map eth0
さらに小技を学ぶには、魔法のようなネットワーク設定, 第 10.8 節 と
/usr/share/doc/hotplug/README.Debian
をごらんください。
ifplugd
ifplugd
デーモンはハードウェアがネットワークに
接続されているかどうかによりインターフェースの立ち上げや切断を行います。
このプログラムは Ethernet インターフェースに接続されている通信中の
ケーブルや無線 LAN インターフェースとつながったアクセスポイントを検知します
(無線 LAN インターフェースの場合は実際には waproamd
を使うのでしょうが) 。 ifplugd
がリンクの状態の変化を検知すると、標準では インターフェースに対して
ifup
や ifdown
を呼び出します。
waproamd
waproamd
デーモンは ifplugd
と 無線 LAN
カードと一緒に使うように設計されている以外は同じです。 無線 LAN
ハードウエアがつながるアクセスポイントをアクティブに
スキャンします。つながった場合には、waproamd
は ifup
を起動します。
もし waproamd
を使っている場合には、無線 LAN カードは
waproamd
を通じて設定されます。つまり、
/etc/network/interfaces
の wireless-*
オプションは使いません。
PCMCIA ネットワークインターフェース (2.4 と 2.6 カーネル) を設定するための可能なアプローチはいくつか存在します。
ifupdown
が hotplug
によりコントロールされる。
hotplug
, 第 10.10.2 節 に記述されているように、
/etc/network/interfaces
にマッピング行を追加
することにより、ifupdown
への hotplug
の制御をローカルで有効にする 必要があります。
pcmcia-cs
を用いて
hotplug
により制御された ifupdown
/etc/pcmcia/network
の先頭に exit 0 を
加えることにより、ローカルで無効にする必要があります。 また、ネットワーク設定のトリガを設定する –
hotplug
, 第 10.10.2 節 に記述されているように、
/etc/network/interfaces
にマッピング行を追加
することにより、ifupdown
への hotplug
の制御をローカルで有効にする 必要があります。
/etc/pcmcia/network
経由で pcmcia-cs
により制御される ifupdown
/etc/pcmcia/network.opts
にある特別なコードを 経由して
pcmcia-cs
により制御される低レベルツール
/etc/pcmcia/network.opts
を編集することにより
特別なコードが有効にされます。
16 ビットカードに関する推奨アプローチは Linux 2.4 のホットプラグ サブシステムが PCMCIA もサポートするようになった事を利用しています。 [69] PCMCIA ネットワークカードはホットプラグ可能です。 従って、PCMCIA カードを通じてネットワークを要求するあらゆるサービスは カードの挿入時にサービスを開始し、カードを抜いた時にサービスを停止 するように設定されなければなりません。 これは通常サービスが ifup で起動され、ifdown で停止される ように調整することにより実現されます。 しかしながら、PCMCIA ネットワークカードをコールドプラグするように 設定するのを選択する人も中にはいます。 システムをブートする前にカードを挿入し、ブートシーケンス中で カードを通じたネットワークを要求するサービスを起動するのです。 サービスの開始前にカードが完全に設定されるのを保証するため、 次に示す設定を行う必要があります。
cardmgr
がフォアグラウンドで走るように
/etc/default/pcmcia
中で CARDMGR_OPTS="-f"
と設定します。
/etc/rc?.d/S20pcmcia
を /etc/rc?.d/S12pcmcia
などとリネームします。
16 ビットの PCMCIA カードを使っている場合は pcmcia-cs
がまだ必要なことに注意して下さい。 このパッケージに含まれる
cardmgr
デーモンは
ソケットの管理やドライバーモジュールの起動に必要です。 ネットワークの設定を
/etc/pcmcia/network
を通して行いたく無いだけです。
cardmgr
が正常に動作するには、 16 ビット PCMCIA
カードにリソースを割り当てるよう、 /etc/pcmcia/config.opts
を編集する必要があるかもしれません。 より詳しい情報は PCMCIA, 第 7.2.1 節 と Linux PCMCIA
HOWTO
をごらんください。
あなたのネットワークカードがホットプラグされ ネットワーク設定のトリガを設定する –
hotplug
, 第 10.10.2 節 に書かれている
自動設定が有効になっていると仮定しましょう。 さらに論理インターフェースを、 (カーネルによる一貫性のないインターフェースの命名を扱う,
第 10.9 節 に書かれたように)アダプタ固有の
物理インターフェースの特徴に従かうか、 (例えば guessnetを使った論理インターフェース選択, 第 10.8.1
節 に書かれたように)
インターフェースがつながれているネットワークの特徴に従って
「物理」インターフェースにマップする必要が有ると仮定しましょう。
第一段階のマッピングは hotplug のグループ名が 与えられると、インターフェースがホットプラグされると kernel が割り当てたしたインターフェース名を出力します。 第二段階のマッピングは kernel が割り当てたインターフェース名が 与えられると、アダプタの名前を出力します。 第三段階のマッピングはアダプタの名前が与えられると、 ネットワーク環境に基づく論理インターフェース名を出力します。
# hotplug にインターフェースを起動させる mapping hotplug script echo # インターフェースが有線か無線 LAN かを決定 mapping eth? script /usr/local/sbin/match-mac-address.sh map 02:23:45:3C:45:3C wired map 00:A3:03:63:26:93 wifi # どの有線ネットワークが使えるかを決める mapping wired script guessnet-ifupdown map work-wired map home # どの無線 LAN ネットワークが使えるかを決める mapping wifi script ifscout map starbucks map work-wireless iface work-wired inet static ...
デスクトップやホームサーバ環境における典型的なネットワークサービスの設定には 次が挙げられます。
/etc/inetd.conf
ssh
: OpenSSH secure shell。SSH, 第
9.5 節 参照。
/etc/ssh/ssh_config
/etc/ssh/sshd_config
exim
: メール転送エージェント。 Mailname, 第
10.3.2 節 および Mail transport agents
(MTAs), 第 9.6.1 節 参照。
/etc/exim/exim.conf
/etc/mailname
/etc/aliases
/etc/email-addresses
fetchmail
: POP3 アカウントからメールを取得。 メールを取得する – Fetchmail, 第 9.6.2
節 参照。
/etc/fetchmailrc
procmail
: ローカルのメール配達およびフィルタプログラム。メール処理 – Procmail, 第 9.6.4 節
参照。
~/.procmailrc
/etc/host.conf
/etc/hostname
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/resolv.conf
/etc/bind/named.conf
(編集)
/etc/bind/db.lan
(LAN ホスト用に追加)
/etc/bind/db.192.168.0
(LAN の逆引き用に追加)
/etc/dhcp3/dhclient.conf
(DHCP クライアント)
/etc/default/dhcp3-server
(DHCP サーバ)
/etc/dhcp3/dhcpd.conf
(DHCP サーバ)
cvs
: バージョン管理システム。Concurrent Versions System (CVS), 第 12.1 節
参照。
/etc/cvs-cron.conf
/etc/cvs-pserver.conf
nfs-kernel-server
: ネットワークファイルシステム。 NFS 設定, 第 3.4 節 参照。 (unix
ライクシステム用)
/etc/exports
samba
: Windows
用のネットワークファイルシステムおよびプリンタ共有。Samba の設定, 第 3.5 節 および Samba, 第 8.6.38 節 参照。
/etc/samba/smb.conf
/etc/printcap
(lpr 用)
apache
と apache2
ウェブサーバ。
/etc/apache/*
/etc/apache2/*
squid
: ウェブプロキシキャッシュサーバ。
/etc/squid/*
ネットワークに関する問題に直面したら、次の出力を最初の真偽の確認として チェックしてください。
# ifconfig # cat /proc/pci # cat /proc/interrupts # dmesg | more
又、ネットワークテストの基礎, 第 8.6.29 節 をごらんください。
特定のウェブサイトを見れない問題に直面した場合は、いくつかのウェブサイトにアクセスした時の奇妙な挙動, 第 3.7.5 節 をごらんください。
Debian ホストはネットワークアドレス変換 (NAT、マスカレードとしても知られる) 、メール転送、DHCP、DNS キャッシング、HTTP プロキシキャッシング、CVS サービス、NFS サービス、そして Samba サービスを行う多目的の ゲートウェイマシンにできます。これらの設定の例は LAN を使用するためのホストと IP, 第 3.1.9 節 をごらんください。
netfilter/iptables プロジェクトは Linux 2.4 以降のための
ファイアーウォールサブシステムです。 Netfilter
をごらんください。
この文書では多くのネットワーク設定例が説明されています。
Netfilter は五つの組込みチェイン、すなわち PREROUTING, INPUT, FORWARD, OUTPUT そして POSTROUTING を使うパケットを処理します。
ルーティング 方向 IN ------> PRE ---> ------> FORWARD -----> ----> POST -----> OUT interface ROUTING \ filter / ROUTING interface DNAT | tracking ^ SNAT REDIRECT | | MASQUERADE v | INPUT OUTPUT | filter ^ filter,DNAT v | \--> ローカルのプロセス --/ ユーザスペースのプログラム
パケットはそれぞれの組込みチェインにて次のテーブルを用いて処理されます。
ファイアーウォールのルールにはいくつかのターゲットがあります。
--to-source ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
--to-destination ipaddr[-ipaddr][:port-port]
--to-ports port[-port]
iptables
の基本的なコマンドは次のようになります。
iptables -N chain #chain を作成 iptables -A chain \ # chain にルールを追加 -t table \ # table を使用 (filter, nat, mangle) -p protocol \ # tcp, udp, icmp, 又はこれら全て -s source-address[/mask] \ --sport port[:port] \ # -p が tcp 又は udp の場合は送信元ポート -d destination-address[/mask] \ --dport port[:port] \ # -p が tcp 又は udp の場合は送信先ポート -j target \ # マッチした場合の行動 -i in-interface-name \ # INPUT, FORWARD, PREROUTING 用 -o out-interface-name # FORWARD, OUTPUT, POSTROUTING 用
LAN 上のマシンは LAN 上の IP アドレスをインターネット上で使える IP アドレスに変換するゲートウェイを経由してインターネットのリソースに アクセスできます。
# apt-get install ipmasq
ipmasq
の防護を強化するためにサンプルルールを追加してください。
/usr/share/doc/ipmasq/examples/stronger/README
をごらんください。 woody にある Debian の kernel-image-2.4
の場合、適切なモジュールが ロードされていることを確認してください。
設定方法については Network 機能, 第
7.2.3 節 をごらんください。
Debian の kernel-image-2.2 の場合、/etc/masq/rules
にある
Z92timeouts.rul
を次に示すように編集し、リモートサイトへの
より長い接続を保証するようにしてください。(大きなメールなどのために役立ちます)
# tcp, tcp-fin, udp # 2hr, 10 sec, 160 sec - default # 1 day, 10 min, 10 min - longer example $IPCHAINS -M -S 86400 600 600
又、ネットワークに PCMCIA NIC 経由でアクセスしている場合、ipmasq
が /etc/pcmcia/network.opts
(/usr/share/doc/ipmasq/ipmasq.txt.gz
参照) 又は /etc/network/interfaces
(ネットワーク設定と PCMCIA, 第 10.10.5 節 と ネットワーク設定のトリガを設定する, 第 10.10 節 参照)
から起動される必要があります。
他の LAN 環境で利用するように設定しているノート PC を持っており、 再設定せずにノート PC 上でメーラを使いたいとします。
ゲートウェイマシンに iptables
を通じて次のルールを 追加し、SMTP
接続をゲートウェイマシンにリダイレクトします。
# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j REDIRECT \ -p tcp --dport smtp --to-port 25 # smtp=25, INPUT is open
より徹底的なリダイレクトルールセットが必要な場合は、 ipmasq
パッケージをインストールし、 /etc/ipmasq/rules/
ディレクトリに
を
追加することを考えてください。
M30redirect.def
[FIXME] Policy routing (by Phil Brutsche pbrutsch@tux.creighton.edu
):
詳細は iproute manual
をごらんください。 トラフィックコントロール (tc) にも興味が湧くかもしれません。
次のような環境を考えます。
eth0: 192.168.1.2/24; gateway 192.168.1.1 eth1: 10.0.0.2/24; gateway 10.0.0.1 このマシン上でマスカレードは行いません。
特別な魔法を施します。
[FIXME] これを試したことはありません。オートダイアル機能を使わないで 高速な接続のバックアップとしてダイアルアップをどうやって設定しますか? パッチを送ってください。:)
Debian リファレンス
CVS, 2005年 4月 3日 月曜日 22時59分00秒 UTC時間osamu@debian.org
tsuno@ngy.1st.ne.jp