この章では 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 そして LocalTakl のような他のさまざまな種類の ネットワークデバイスが使用可能です。
インターネット (又は IP ベースのネットワーク) に直接接続された全ての ネットワークインターフェースはユニークな 32 ビットの IP アドレスにより 識別されます。 [49] IP アドレスネットワークを示す部分とホストを示す部分に分割できます。 IP アドレスのネットワークアドレスの部分を 1 に、ホストアドレスの 部分を 0 にするとネットワークのネットマスクを得られます。
伝統的に、IP ネットワークはそれぞれ 8 ビット、16 ビット、24 ビットの長さの ワークアドレス部分を持つクラスに分類されています。 [50]
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 ネットワークの最初のアドレスはネットワーク自身のアドレスです。 最後のアドレスはネットワークのブロードキャストアドレスです。 [51] 他の全てのアドレスはネットワーク上のホストに割り当てられます。 これらのうち、最初又は最後のアドレスは通常ネットワークの インターネットゲートウェイに割り当てられます。
ルーティングテーブルは 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.0.255 Mask:255.255.255.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.0.0 broadcast 192.168.255.255 # route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1 dev eth0
The result:
# ifconfig eth0 Link encap:Ethernet HWaddr 08:00:46:7A:02:B0 inet addr:192.168.0.111 Bcast:192.168.255.255 Mask:255.255.0.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.0.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/
に
あるオプションファイルと同じ名前です。 [52] こうして特定の
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
pppconfig
を用いて pppd
を設定する
pppd
を設定する手軽な方法は同名のパッケージにより 供給される
pppconfig
を使うことです。 pppconfig
はメニュインターフェースを通じてユーザが質問
に答えた後に上に示したようなファイルを設定します。
resolvconf
を使っている場合、 "Configure Nameservers"
スクリーンで "None" を選ぶことを忘れずに。
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 を表示します。 [53]
特定のドメイン名に関連づけられた IP アドレスを捜し出す仕事は、リゾルバ
の仕事です。最も良く使われているリゾルバは GNU C ライブラリにある リゾルバ
(resolver(3)
) により実現される
関数群です。他のリゾルバとしては、libfiredns
パッケージに収録されている FireDNS リゾルバがあります。
どのように LIBC リゾルバが名前を解決するかは /etc/nsswitch.conf
設定ファイル中の hosts 行により制御されています。
この行は名前を解決するために使われるサービス、例えば dns,
files, nis, nisplus をリストしています。
[54]
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
をご覧下さい。
dnsmasq
ネームサーバがドメインを信頼できなければ、キャッシングとフォワーデイング を行う
dnsmasq
のようなネームサーバを起動させるのが 賢明です。
resolvconf
と同時に用いてもうまく動きます。
bind
bind9
や bind
をキャッシングフォワーディング用のローカルネームサーバとしても使いたい場合、resolvconf
と同時に用いてもうまく動きます。しかし本文書の執筆時点 (2003年10月) では、、
この用途には手動で設定する必要があります。使用方法は /usr/share/doc/resolvconf/README.gz
をご覧下さい。
bind
あるドメインのための信頼できるネームサービスを供給する必要がある場合、
bind9
又は bind
パッケージのどちらか による
named
のような完全に一人前のネームサーバが必要です。
新たにインストールする場合、bind9
がお薦めです。
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
は複雑ですがより広範な設定が可能です。 [55]
ネットワーク設定をより容易にするため、Debian は ifup
と
ifdown
プログラムと /etc/network/interfaces
ファイル
から構成される標準の高レベルネットワーク設定ツールを供給します。 [56] ネットワークの設定に
ifupdown
を使おうとした場合、
通常低レベルのコマンドを同時に使うべき ではありません。 [57] Ifupdown
はネットワークインターフェースの設定と
解除のために使われるのは自分自身だけという仮定の元に書かれています。
インターフェースの設定を更新するには、次のようにします。
# ifdown eth0 # editor /etc/network/interfaces # お好きなようにいじる # ifup eth0
より詳しい情報は interfaces(5)
, /usr/share/doc/ifupdown/examples/network-interfaces.gz
,
と ifup(8)
をご覧下さい。
192.168.0.123 の固定 IP アドレスを持った Ethernet インタフェース
の設定を行いたいと仮定します。このアドレスは 192.168.0
から始まるので、LAN 上にある必要があります。さらに、LAN
のインターネットへのゲートウェイの アドレスを 192.168.0.1
と仮定します。 次のような一区切りを含むように
/etc/network/interfaces
を編集しましょう。
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1
resolvconf
をインストールしている場合、次のように DNS
情報を指定する行を追加できます。
iface eth0 inet static address 192.168.0.123 netmask 255.255.255.0 gateway 192.168.0.1 dns-search nicedomain.org dns-nameservers 195.238.2.21 195.238.2.22
インターフェースが立ち上がった後、dns-search オプションと
dns-nameservers オプションの引数は resolvconf
が
resolv.conf
に含めることにより利用可能になります。
dns-search オプションの nicedomain.org 引数は
resolv.conf(5)
にある search
オプションの引数に対応します。 dns-nameservers オプションの
195.238.2.21 と 195.238.2.22 オプションは
resolv.conf(5)
にある 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.9.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
オプションをさらに供給することはいまのところ できません。 [58]
現在 PPP インターフェースの補助的な設定を行うために ifupdown
を使うことはできません。pon
は pppd
が接続を
確立する前に存在するため、ifup
は インターフェースの
準備ができる前に up スクリプトを起動します。 このバグ [59]
が修正されるまでは、/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.12 節 に記述しているようにホストの 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 も立ち上がります。
次の章では、読者は 物理インターフェース と 論理インターフェース の違いを理解することが重要に なります。 [60] 物理インターフェースは私達が "インターフェース" と呼ぶ eth0, ppp1 などと名付けられるものです。 論理インターフェースは物理インターフェースの変数パラメータに割り当てられる 値のセットのことです。これに混乱する場合、 "論理インターフェース X として設定する" という表現を "インターフェースプロファイル X を用いて設定する" に置き換えます。
/etc/network/interfaces
にある iface 定義は
実際は物理インターフェースの定義ではなく、論理インターフェースの 定義です。 [61]
インターフェースを絶対再設定したくない場合、物理インターフェース 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" 行 の内容を引数として起動されます。 スクリプトは終了前に標準出力にマッピングの結果を表示します。
例えば、次の mapping 節は eth0 を home
論理インターフェースとして ifup
を立ち上げさせます。
mapping eth0 script /usr/local/sbin/echo-home
ここで /usr/local/sbin/echo-home
の内容は次のようなものです。
#!/bin/sh echo home
マッピングはスクリプトを用いて行われるので、ある種のテストに基づいて
論理インターフェースを選択することが可能です。 例題を始めましょう。
家庭用と職場用で異なるネットワークカードを持っているとします。
/usr/share/doc/ifupdown/examples/
ディレクトリには Media Access
Controller address (MAC address) に基づき論理インターフェース
を選択するために用いられるスクリプトが含まれています。
まずスクリプトを適切なディレクトリにインストールします。
# 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 home map 00:A3:03:63:26:93 work
より洗練されたマッピングプログラムについては下の guessnet, 第 10.8.1 節, ifupdown-roam, 第 10.8.2 節 と laptop-net, 第 10.8.3 節 に記述しています。
guessnet
をインストールして /etc/network/interfaces
に次のような節を 追加しましょう。
mapping eth0 script guessnet-ifupdown map home map work
ifup eth0
すると、guessnet
は eth0 が
home と work のどちらで立ち上げられたかを
チェックします。これには、論理インターフェースの定義内に保存された情報を
用います。guessnet
はゲートウェイか tesgt-peer 行
で認識されるホストかどうかを識別するために ARP 要求を用います。
guessnet
はまだ開発中です。
ifupdown-roam
パッケージは guessnet のスーパーセット
であるマッピングスクリプトとしての能力を持つ ifscout
を含みます。ifscout
は Ethernet ネットワークで接続された
ホストを探すために guessnet
を呼び出します。しかし、DHCP
サーバや無線 LAN のアクセスポイントも検知できます。 ifscout
はシェルスクリプトですので、必要に応じてカスタマイズ できます。
現在 (2003年10月)、ifupdown-roam
は Debian の
パッケージではありません。あなたがこの文書を呼んでいる時点で Debian
アーカイブに upload されているかもしれません。そうではない場合は、 the ifupdown-roam
home page
経由で入手できます。ここでインストール方法や使用方法に関する情報も 得られます。
laptop-net
パッケージはネットワークの再設定に
異なる手法を取っています。Laptop-net は ifupdown
の
論理インターフェースを利用していませんが、その代わり、固有の 設定
"スキーム" とシステム "プロファイル"
というシステムを持っています。
しかしながら、物理インターフェースを設定するために、Laptop-net は依然
ifupdown
を使用しています。
詳細な情報は、laptop-net-doc
にある良質な情報に あたってください。
インターフェースがどのように再設定されるのかを見てきました。 再設定は適切な時期に行われる必要があります。
伝統的にネットワークは /etc/rcS.d/S40networking
initscript
経由でブートシーケンスの間に設定され、滅多に再設定されませんでした。
ネットワークに依存するサービスはブートシーケンスで後に起動されました。
シャットダウン又はリブート時に initscript は逆の順番で起動されました。
しかしながら、現在 GNU と Linux において動的に変化するハードウェアと状況
のサポートがトレンドです。前者のサポートはホットスワップ可能な PCMCIA
カードのために追加されました。より最近では、hotplug 機構が
追加され、多くの周辺機器がコンピュータの起動中に抜き差しできるように
なりました。 これにはネットワーク関連のハードウェアが含まれます。
ハードウェアに依存するホットスワップされるハードウェアはハードウェアが
挿入された後に起動され、ハードウェアが外された時に停止する必要がある
ことに注意してください。 これはこの種のサービスが System V init
システムの制御から外され、 その代わりに ifupdown
の制御下に置かれる必要がある ことを意味しています。
例えば、initscript /etc/init.d/foo
により制御される サービス
foo が動的に再設定されるネットワークインターフェース
eth0 に依存するとします。
sysv-rc
init システムを利用している場合、 次を行います。 [62]
# rm /etc/rc?.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.9.2 節 参照)
しかしながら、ほとんど全ての場合、少なくともループバックデバイス
lo はブート時に立ち上げておきたいでしょう。
それゆえ、/etc/network/interfaces
に次の節が含まれている
ことを確認してください。
auto lo iface lo inet loopback
ブート時に他の物理インターフェースも立ち上げたい場合、 auto
節にさらに物理インターフェースを追加できます。 auto 節に
決して PCMCIA インターフェースを
リストしてはなりません。PCMCIA cardmgr
はブートシーケンス において
/etc/rcS.d/S40networking
が起動する時よりも後に 起動されます。
hotplug
hotplug のサポートを追加するには、hotplug
パッケージ
をインストールしてください。
ネットワークハードウェアはブート時や、カード (例えば PCMCIA カード) を
マシンに挿入した時、 discover
が起動され、必要なドライバ
モジュールをロードした時にもホットプラグできます。
kernel が新しいハードウェアを検知すると、ハードウェアのドライバを初期化し、
設定を行うために hotplug
プログラムを起動します。
その後、ハードウェアが削除されると、kernel は異なる環境変数設定を 用いて
hotplug
を再び起動します。 Debian では、hotplug
が呼ばれると、/etc/hotplug/
と /etc/hotplug.d/
にあるスクリプトを起動します。 詳細は hotplug(8)
をご覧下さい。
新たに挿入されたネットワークハードウェアはスクリプト
/etc/hotplug/net.agent
により設定されます。 [63] PCMCIA
ネットワークカードが挿入され、eth0 が利用可能になる と仮定します。
ifup eth0=hotplug
/etc/network/interfaces
に論理インターフェースの定義を追加するか、
hotplug という名のマッピングをしなければ、このコマンドは
何もしません。 コマンドが eth0 を設定するようにするには、次の節を
/etc/network/interfaces
に追加しましょう。
mapping hotplug script echo
ネットワーク 再設定, 第 10.7 節 で説明したように、これは次と等価になるように 上に示したコマンドをマップします。
ifup eth0=eth0
(ネットワーク設定のトリガを設定する –
ifplugd
, 第 10.9.3 節
で述べているように、インターフェースを制御 するために hotplug
により起動される ifplugd
インスタンスを用いている場合、このようなマッピング節を
追加しないでください。)
eth0 のみを使いたく、他のインターフェースをホットプラグ時に
立ち上げたくない場合、次のように echo
の代わりに grep
を使いましょう。
mapping hotplug script grep map eth0
さらに小技を学ぶには、魔法のようなネットワーク再設定, 第 10.8 節 と
/usr/share/doc/hotplug/README.Debian
をご覧下さい。
ifplugd
ifplugd
はハードウェアがネットワークに接続されているか
どうかによりインターフェースの立ち上げや切断を行います。このプログラムは
Ethernet インターフェースに接続されている通信中のケーブルや無線
インターフェースとつながったアクセスポイントを検知します。 ifplugd
がリンクの状態の変化を検知すると、標準では インターフェースに対して
ifup
や ifdown
を呼び出すプロキシスクリプトを起動します。
ifplugd
は hotplug
と組み合わせて うまく動作します。
カードが挿入されると、インターフェースが利用可能となり、
/etc/hotplug.d/net/ifplugd.hotplug
がインターフェースに対して
ifplugd
のインスタンスを起動します。 ifplugd
がネットワークに接続されたカードを検知すると、 インターフェースを
ifup
します。
waproamd
アクセスポイントに接続するためには、無線 LAN カードが適切な WEP
暗号鍵を用いてプログラムされる必要があるかもしれません。 ネットワーク設定のトリガを設定する –
ifplugd
, 第 10.9.3 節 に記述されているように ifup
を制御するために ifplugd
を用いている場合、 明らかに
ifup
を用いて暗号鍵を設定できません。なぜならば ifup
はカードが接続された後でしか呼ばれないからです。
唯一可能な解決策としては、あらゆる必要な鍵を無線 LAN カードの不揮発メモリ
にプログラムしておくことです。 ネットワークをうろつくと、あなたの無線 LAN
カードは十分な鍵を保存できない かもしれません。
他の解決策としては、スキャニングにより利用可能なことが分かったアクセス
ポイントに従い WEP 暗号鍵を設定する waproamd
を使うことが
挙げられます。
waproamd
は hotplug
と組み合わせてうまく動きます。
カードが挿入され、インターフェースが使用可能となると、
/etc/hotplug.d/net/waproamd.hotplug
が
そのインターフェースのために waproamd
の
インスタンスを起動します。
詳細は waproamd
パッケージの README ファイルを ご覧下さい。
16 ビット ISA PCMCIA ネットワークカードを使用している場合、 まず
/etc/defaults/pcmcia
に CARDMGR_OPTS="-f"
をセットすべきです。 これは 16 ビット PCMCIA
システムの初期化をわずかに遅らせますが、 16 ビットのカードが設定されるまで
cardmgr
を
フォアグラウンドで起動させることにより競業条件を防ぎます。
標準では /etc/rc2.d/S20pcmcia
から /etc/init.d/pcmcia
スクリプトが起動されますが、 ネットワークサービスが S20 で起動される前に PCMCIA
サブシステムが初期化されることをを保証するために、
このスクリプトをもっと前に、例えば /etc/rc2.d/S12pcmcia
に移動したいかもしれません。
PCMCIA ネットワークインターフェースを設定するための可能なアプローチ はいくつか存在します。
hotplug
/ ifupdown
hotplug
/ ifupdown
とローカルで無効にされた
/etc/pcmcia/network.opts
の組合せ (推奨) 又は
/etc/pcmcia/interfaces
の機能を有効にする
ことによりカスタマイズされた
pcmcia
(時代遅れ)
16 ビットカードのために推奨したアプローチは Linux 2.4 の hot plug
サブシステムが現在 PCMCIA をサポートしているという事実を利用しています。 ただ
ネットワーク設定のトリガを設定する –
hotplug
, 第 10.9.2 節 の指示に従うだけです。 [64]
しかしながら、cardmgr
のフックスクリプト
/etc/pcmcia/network
が hotplug
と
干渉するのを防ぐためには、標準の挙動を無効にするためにローカルで
exit 0
を /etc/pcmcia/network
の先頭に追加する必要があります。
cardmgr
を起動しても何の問題もないことに注意してください。
ただネットワーク設定プログラムを呼び出されたくないだけです。
cardmgr
を適切に動かすためには、 16 ビット PCMCIA
カードにリソースを割り当てるために /etc/pcmcia/config.opts
を編集する必要があるかもしれません。 しれません。 より詳しい情報は PCMCIA, 第 7.2.1 節 と Linux PCMCIA
HOWTO
をご覧下さい。
デスクトップやホームサーバ環境における典型的なネットワークサービスの設定には 次が挙げられます。
/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.3 節
参照。
~/.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.37 節 参照。
/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.28 節 をご覧下さい。
特定のウェブサイトを見れない問題に直面した場合は、いくつかのウェブサイトにアクセスした時の奇妙な挙動, 第 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.9.5 節 と ネットワーク再設定のトリガを設定する, 第 10.9 節
参照) から起動される必要があります。
他の 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 レファレンス
1.07-6, 2004年 6月 23日 水曜日 21時21分03秒 UTC時間osamu@debian.org
tsuno@ngy.1st.ne.jp