<< Back to man.lupaworld.com


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス
第 10 章 - ネットワークの設定


この章では Debian でのネットワーク管理に焦点を当てています。 GNU/Linux のネットワークに関する一般的な紹介は Net-HOWTO をごらんください。

Debian ホストのインターネットへのアクセスを可能にするには、 ネットワークインターフェースが kernel によりサポートされ、適切に 設定される必要があります。

まず必要なことは、イーサネットカード、無線 LAN カードやモデムのような ネットワークインターフェースデバイスを kernel がサポートすることです。 これらのサポートを有効にするには、 Debian での Linux kernel, 第 7 章 に記述しているように kernel を再構築してモジュールを追加する必要があるかもしれません。

ネットワークデバイスの設定は以降で説明します。 本章の情報は Sarge のために更新中ですので、Woody 以前には適用できません。


10.1 IP ネットワークの基礎

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-HOWTOother networking HOWTOs をごらんください。


10.2 低レベルネットワークの設定

GNU/Linux システム上での伝統的な低レベルネットワーク設定ツールとしては net-tools パッケージに収録されている ifconfigroute プログラムがあります。 これらのツールは公式に iproute パッケージに収録 されている ip により取って代われています。 ip プログラムは Linux 2.2 以上で動き、旧式のツールよりも より機能的です。しかしながら、旧式のツールもまだ動き、多くのユーザにより 親しまれています。


10.2.1 低レベルネットワーク設定ツール – ifconfigroute

ここにインターフェース eth0 の IP アドレスを 192.168.0.3 から 192.168.0.111 に変更し、192.168.0.1 経由で 10.0.0.0 ネットワークに通すように eth0 を設定 する方法を示します。 現在の全てのネットワークインターフェースとルーティングの状況を表示するため、 まずはインターフェース引数無しで ifconfigroute を起動することから始めましょう。

     # 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) をごらんください。


10.2.2 低レベルネットワーク設定ツール – ip

前記の ifconfigroute コマンドと等価な 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) をごらんください。


10.2.3 無線 LAN インターフェースの設定

無線 LAN インターフェースの設定には、wireless-tools パッケージに収録されている iwconfig プログラムが ifconfigip の両方に加えて使われます。

iwconfig(8) をごらんください。


10.2.4 PPP インターフェースの設定

インターネットにダイアルアップ電話線を接続したモデム経由でアクセス する場合、Point-to-Point Protocol (PPP) を用いて接続をネゴシエイト します。そのような接続はネットワークインターフェース ppp0, ppp1, などとしてアクセスされます。

PPP インターフェースは ppp パッケージに収録されている PPP デーモン pppd により管理されます。 それゆえ、ユーザにとっては、PPP インターフェースを設定するのは pppd を設定することを意味します。


10.2.4.1 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/KPNpeers/Planetにある user 行で行われます。

     # client name       server name  secret
     kpn                 *            kpn
     user3579@planet.nl  *            myfavoritepet

詳細は /usr/share/doc/ppp/README.Debian.gz をごらんください。


10.2.4.2 pppconfig を用いて pppd を設定する

pppd を設定する手軽な方法は同名のパッケージにより 供給される pppconfig を使うことです。 pppconfig はメニュインターフェースを通じてユーザが質問 に答えた後に上に示したようなファイルを設定します。


10.2.4.3 wvdial を用いて PPP インターフェースを設定する

pppd を用いる異なるアプローチとしては、 wvdial パッケージに収録されている wvdial から pppd を起動することです。 pppd の代わりに、chat を起動してダイアルし、 接続のネゴシエイトを行います。wvdial はダイアルと最初のネゴ シエイトを行い、そして残りの作業を行うために pppdを起動します。 電話番号、ユーザ名、そしてパスワードを与えるだけで wvdial は ほとんどの場合接続を確立できます。


10.3 コンピュータの名前付け


10.3.1 hostname

Debian システムは時々自分自身を名前で識別する必要があります。 この目的のため、hostname が kernel により維持されています。

initscript /etc/init.d/hostname.sh は hostname を ブート時に (hostname を用いて) /etc/hostname に保存されている名前に設定します。 このファイルには完全修飾ドメイン名 (FQDN) ではなく、 hostname のみ が含まれていなくてはなりません。

現在の hostname を表示するには、引数無しで hostname を起動してください。


10.3.2 Mailname

ホストの 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 がアドレスの書き換えを行った時、受取人が見る メールアドレスはどうにでも変えられ得ます。


10.4 ドメインネームサービス (DNS)

ホストは IP アドレスに加え、ドメイン名によっても参照されます。 DNS はネームリゾルバがドメイン名を IP アドレスや他のホストの属性と 関連付けるためにネームサーバを勤めるクライアントサーバシステムです。 GNU C ライブラリ resolver(3) もファイルにある IP アドレスの検索を行えますし、Network Information Services (NIS) の役目も勤めます。

ローカルのホストに関連づけられているドメインが何かを知るには、 hostname --fqdn コマンドを使いましょう。このコマンドはリゾルバが ローカルの hostname に対して捜し出した最初の FQDN を表示します。 [57]


10.4.1 リゾルバ

特定のドメイン名に関連づけられた 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 アドレスをリストすることです。 このリストはたびたびネットワーク環境に依存し、ネットワーク環境はコンピュータ を起動する間時にふれて変化します。 pppddhclient のようなプログラムは resolv.conf 内の行を追加したり削除する操作を行えますが、 これらの機能は常に適切に動くとは限らず、お互いに衝突しかねません。 resolvconf パッケージはこのファイルを更新するための 標準的なフレームワークを供給することにより、よりうまくこの問題を解決します。 ネームサーバ情報の管理 – resolvconf, 第 10.4.2 節 をごらんください。


10.4.2 ネームサーバ情報の管理 – resolvconf

resolvconf パッケージは利用可能なネームサーバ に関する情報の動的な管理のためのフレームワークを供給します。 リゾルバや DNS キャッシュが使うためのネームサーバのリストを動的に管理 する方法についての長年の問題を解決します。 resolvconf は自身をネットワークインターフェースを制御するプログラムと ネームサーバ情報を供給するプログラム、そしてネームサーバ情報を必要とする アプリケーションの間の仲介人として設定します。

resolvconf は手動の設定を必要とせずに動作するように 設計されています。しかしながら、パッケージはまだ非常に新しく、 適切に動作させるためには、まだ手動の介入をいくらか必要とするかもしれません。 あなたが /etc/resolv.conf を更新するようにパッケージを カスタマイズしたならば、これは確実に当てはまります。ですので、 カスタマイズを無効にする必要があります。 詳細は /usr/share/doc/resolvconf/README.gz をごらんください。


10.4.3 検索した名前をキャッシュする – nscd, dnsmasq, pdnsd, bind9

もしネームサーバの反応が遅い場合は libc6 リゾルバ を用いて検索される結果を nscd を用いてキャッシュしたくなる でしょう。

もしあなたのローカルネットの他のホストのために検索結果をキャッシュしようと するなら、dnsmasqpdnsd のような キャッシュフォワーディングネームサーバを使うのがいいでしょう。

bind9named も キャッシュフォワーディングネームサーバとして使えない事はありません。 ただ重いプログラムなので、その先進的機能を使わないなら、 先程述べた他のプログラムを使う方が賢明です。 resolvconf と連係しうまく動きます。


10.4.4 ドメインネームサービスを供給する – bind

あるドメインのための信頼できるネームサービスを供給する必要がある場合、 bind9 パッケージ による named のような完全に一人前のネームサーバが必要です。 新たにインストールする場合、bind9 がお薦めです。

bind9 をインストールした際には、dnsutils もインストールしましょう。 次に、bind9-host, dns-browse, dnscvsutil, nslint のような ユーティリティパッケージもインストールしたいかもしれません。 さらに、bind9-doc のようなドキュメントパッケージも インストールしたいかもしれません。そして、libbind-devlibnet-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.confinclude 行が /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 をごらんください。


10.5 DHCP を用いてネットワークインターフェースを設定する

低レベルのネットワークインターフェースの設定は Dynamic Host Configuration Protocol (DHCP) を用いて自動化できます。 ファイアーウォールやルータボックス、そしてあなたが使っているブロードバンド ISP は IP アドレスや他のパラメータをこの方法で提供しているかもしれません。

DHCP を動かすには、次のパッケージのうち一つをインストールする必要があります。

pump はシンプルで広く使われています。 dhcp3-client は複雑ですがより広範な設定が可能です。 [59]


10.6 Debian での高レベルなネットワーク設定

ネットワーク設定をより容易にするため、Debian は ifupifdown プログラムと /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) をごらんください。


10.6.1 スタティック IP アドレスを用いたインターフェースの設定

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-domaindns-sortlist があります。 ネームサーバ情報の管理 – resolvconf, 第 10.4.2 節 をごらんください。


10.6.2 DHCP を用いてインターフェースを設定する

DHCP を用いてインターフェースを設定するには、 次のような行を含めるように /etc/network/interfaces を編集してください。

     iface eth0 inet dhcp

これを機能させるには、 DHCP を用いてネットワークインターフェースを設定する, 第 10.5 節 で言及した DHCP クライアント のうちいずれかをインストールする必要があります。


10.6.3 無線 LAN インターフェースの設定を行う

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 節 をごらんください。


10.6.4 PPP インターフェースの設定を行う

ifupifdown プログラムは PPP インターフェースの追加と削除のために ponpoff を使います。ですから、まずは 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 を使うことはできません。ponpppd が接続を 確立する前に存在するため、ifup は インターフェースの 準備ができる前に up スクリプトを起動します。 このバグ [63] が修正されるまでは、/etc/ppp/ip-up 又は /etc/ppp/ip-up.d/ にある補助的な設定を実行する必要性が 残ります。


10.6.5 PPPoE インターフェースの設定を行う

たとえ、カスタマのマシンが 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 ゲートウェイにしか見えないことに注意してください。


10.6.6 ゲートウェイ用に複数の 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 上の全てのホストでインターネット接続を共有できます。


10.6.7 仮想インターフェースを設定する

仮想インターフェースを用いると、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 も立ち上がります。


10.7 論理インターフェース定義によるネットワーク設定

次の章では、読者は 物理インターフェース論理インターフェース の違いを理解することが重要に なります。 [64] 物理インターフェースは私達が 通常"インターフェース" と呼んでいる物でカーネルによって eth0, ppp1 などと名付けられるものです。 論理インターフェースは物理インターフェースの 変数パラメータに割り当てられる値のセットのことです。 この説明が分かりにくいなら、 "論理インターフェース X として設定する" という表現を "インターフェースプロファイル X を用いて設定する" に置き換えます。

/etc/network/interfaces にある iface 定義は 実際は物理インターフェースの定義ではなく、論理インターフェースの 定義です。 [65] インターフェースを絶対再設定したくない場合、物理インターフェース X は標準では論理インターフェース X として設定されるので無視できます。

しかしながら、あなたのコンピュータが仕事場と家の間を持ち運ぶノート PC である と仮定しましょう。コンピュータを職場のネットワークに接続した時と 家庭内 LAN に接続したときでは、接続する場所に従い eth0 を再設定 する必要があります。

まず (以前行ったように eth0 ではなく) 二つの論理インターフェース homework を定義し、インターフェースが家庭内 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 という論理インターフェースを定義していないためです。


10.8 魔法のようなネットワーク設定

インターフェース名は ifup が起動する時に他の 名前に "マップ" できます。 どのような名前にマップされるかは状況に依存して変更できます。 それゆえ、ifup は前もって定義された候補の中から適切な 論理インターフェースとして与えられた物理インターフェースを立ち上げる ように設定できます。

論理インターフェースの名前のマッピングは次のように発生します。

mapping 行の文法は次のとおりです。

     mapping glob-pattern
              script script-name
             [map script input]

mapping 行で示されたスクリプトは 物理インターフェース名を引数にし、 "map" 行の "map" に続く ("map"自身を除く) 全ての内容を標準入力に送り込み 毎回起動されます。 スクリプトは終了前に標準出力にマッピングの結果を表示します。

例えば、次の mapping 行は eth0home 論理インターフェースとして ifup を立ち上げさせます。

     mapping eth0
             script /usr/local/sbin/echo-home

ここで /usr/local/sbin/echo-home の内容は次のようなものです。

     #!/bin/sh
     echo home

マッピングはスクリプトを用いて行われるので、ある種のテストに基づいて 論理インターフェースを選択することが可能です。 この例は guessnetを使った論理インターフェース選択, 第 10.8.1 節 を参照ください。


10.8.1 guessnetを使った論理インターフェース選択

guessnet をインストールして /etc/network/interfaces に次のような行を 追加しましょう。

     mapping eth0
             script guessnet-ifupdown
             map home
             map work

ifup eth0 すると、guessneteth0homework のどちらで立ち上げられたかを チェックします。これには、論理インターフェースの定義内に保存された情報を 用います。


10.8.2 laptop-netを使った自動ネットワーク設定

laptop-net パッケージはネットワークの再設定に 異なる手法を取っています。laptop-net は ifupdown の 論理インターフェースを利用していませんが、その代わり、固有の 設定 "スキーム" とシステム "プロファイル" というシステムを持っています。 しかしながら、物理インターフェースを設定するために、laptop-net は依然 ifupifdown を使用しています。 詳細な情報は、laptop-net-doc にある良質な情報に 当たってください。


10.9 カーネルによる一貫性のないインターフェースの命名を扱う

eth0, eth1 などの名前は kernel がインターフェースを作成する 順番に従い kernel により割り当てられます。 一方、ブート時に検知されるアダプタは通常毎回同じ順番で検知され、それゆえ 毎回同じ名前が割り当てられます。 ホットプラグされたアダプタにはこれは当てはまりません。ホットプラグされた アダプタはあらゆる順序で検知され、異なる状況下では kernel により結局異なる 名前が割り当てられる結果となります。

この事実により、ネットワークアダプタがホットプラグされるシステムでは eth0, eth1 などのデフォールトマッピングに 頼るべきではありません。むしろ論理インターフェースに独自の名前を与え、 論理インターフェースにどのアダプタが割り当てられるかを制限する次の二つの 方法を利用すべきです。

最初の方法は、 kernel がアダプタに内在する特性に従いインターフェースに 名前を割り当てるように、(net-tools パッケージにある ) nameif ユーティリティ又はより柔軟性のある (ifrename パッケージにある) ifrename ユーティリティを利用することです。 この命名手順を用いる事で、物理インターフェース名がどのアダプタを指すか に用いられるようになります。

もう一つの方法は、ifup のマッピング機構を利用し、 物理インターフェースが立ち上がる際に内在するアダプタの特性に従って 論理インターフェースが選択されるようにする方法がある。

例えば net1net2 各々のネットワークで使う 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 アドレスです。


10.10 ネットワーク設定のトリガを設定する

インターフェースがどのように設定や再設定されるのかを見てきました。 これらは適切な時期に行われる必要があります。

伝統的にネットワークは /etc/rcS.d/S40networking initscript 経由でブートシーケンスの間に設定され、滅多に再設定されませんでした。 ネットワークに依存するサービスはブートシーケンスで後に起動されました。 シャットダウン又はリブート時に initscript は逆の順番で起動されました。

しかしながら、現在 GNU と Linux において動的に変化するハードウェアと状況 のサポートがトレンドです。前者のサポートはホットスワップ可能な PCMCIA カードのために追加されました。より最近では、hotplug 機構が 追加され、多くの周辺機器がコンピュータの起動中に抜き差しできるように なりました。 これにはネットワーク関連のハードウェアが含まれます。 ハードウェアに依存するホットスワップされるハードウェアはハードウェアが 挿入された後に起動され、ハードウェアが外された時に停止する必要がある ことに注意してください。 これはこの種のサービスが System V init システムの制御から外され、 その代わりに ifupdown の制御下に置かれる必要がある ことを意味しています。

例えば、initscript /etc/init.d/foo により制御される サービス foo が動的に再設定されるネットワークインターフェース eth0 に依存するとします。


10.10.1 ブート時にネットワーク設定のトリガーを設定する

ブート時に /etc/rcS.d/S40networking init スクリプトは ifup -a コマンドを起動します。 これは /etc/network/interfacesauto 節にリスト されている全ての物理インターフェースを立ち上げます。

最近動的な方法を用いてネットワーク設定を操作する方がより良いことが たびたびあります。 いったん動的に変化するハードウェアのサポートメカニズムが機能すると、 まるで動的であったかのように静的なハードウェアを扱うことがシンプルになります。 ブートはもう 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 が起動する時よりも後に 起動されます。


10.10.2 ネットワーク設定のトリガを設定する – 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 によってスタートした ifplugdwaproamd のインスタンスを用いている場合、このようなマッピング行を 追加しないでください

eth0 のみを使いたく、他のインターフェースをホットプラグ時に 立ち上げたくない場合、次のように echo の代わりに grep を使いましょう。

     mapping hotplug
             script grep
             map eth0

さらに小技を学ぶには、魔法のようなネットワーク設定, 第 10.8 節/usr/share/doc/hotplug/README.Debian をごらんください。


10.10.3 ネットワーク設定のトリガを設定する – ifplugd

ifplugd デーモンはハードウェアがネットワークに 接続されているかどうかによりインターフェースの立ち上げや切断を行います。 このプログラムは Ethernet インターフェースに接続されている通信中の ケーブルや無線 LAN インターフェースとつながったアクセスポイントを検知します (無線 LAN インターフェースの場合は実際には waproamd を使うのでしょうが) 。 ifplugd がリンクの状態の変化を検知すると、標準では インターフェースに対して ifupifdown を呼び出します。


10.10.4 ネットワーク設定のトリガを設定する – waproamd

waproamd デーモンは ifplugd と 無線 LAN カードと一緒に使うように設計されている以外は同じです。 無線 LAN ハードウエアがつながるアクセスポイントをアクティブに スキャンします。つながった場合には、waproamdifup を起動します。

もし waproamd を使っている場合には、無線 LAN カードは waproamd を通じて設定されます。つまり、 /etc/network/interfaceswireless-* オプションは使いません。


10.10.5 ネットワーク設定と PCMCIA

PCMCIA ネットワークインターフェース (2.4 と 2.6 カーネル) を設定するための可能なアプローチはいくつか存在します。

16 ビットカードに関する推奨アプローチは Linux 2.4 のホットプラグ サブシステムが PCMCIA もサポートするようになった事を利用しています。 [69] PCMCIA ネットワークカードはホットプラグ可能です。 従って、PCMCIA カードを通じてネットワークを要求するあらゆるサービスは カードの挿入時にサービスを開始し、カードを抜いた時にサービスを停止 するように設定されなければなりません。 これは通常サービスが ifup で起動され、ifdown で停止される ように調整することにより実現されます。 しかしながら、PCMCIA ネットワークカードをコールドプラグするように 設定するのを選択する人も中にはいます。 システムをブートする前にカードを挿入し、ブートシーケンス中で カードを通じたネットワークを要求するサービスを起動するのです。 サービスの開始前にカードが完全に設定されるのを保証するため、 次に示す設定を行う必要があります。

16 ビットの PCMCIA カードを使っている場合は pcmcia-cs がまだ必要なことに注意して下さい。 このパッケージに含まれる cardmgr デーモンは ソケットの管理やドライバーモジュールの起動に必要です。 ネットワークの設定を /etc/pcmcia/network を通して行いたく無いだけです。

cardmgrが正常に動作するには、 16 ビット PCMCIA カードにリソースを割り当てるよう、 /etc/pcmcia/config.opts を編集する必要があるかもしれません。 より詳しい情報は PCMCIA, 第 7.2.1 節Linux PCMCIA HOWTO をごらんください。


10.11 多段マッピング

あなたのネットワークカードがホットプラグされ ネットワーク設定のトリガを設定する – 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
             ...

10.12 ネットワークサービスの設定

デスクトップやホームサーバ環境における典型的なネットワークサービスの設定には 次が挙げられます。


10.13 ネットワークのトラブルシュート

ネットワークに関する問題に直面したら、次の出力を最初の真偽の確認として チェックしてください。

     # ifconfig
     # cat /proc/pci
     # cat /proc/interrupts
     # dmesg | more

又、ネットワークテストの基礎, 第 8.6.29 節 をごらんください。

特定のウェブサイトを見れない問題に直面した場合は、いくつかのウェブサイトにアクセスした時の奇妙な挙動, 第 3.7.5 節 をごらんください。


10.14 ゲートウェイルータを構築する

Debian ホストはネットワークアドレス変換 (NAT、マスカレードとしても知られる) 、メール転送、DHCP、DNS キャッシング、HTTP プロキシキャッシング、CVS サービス、NFS サービス、そして Samba サービスを行う多目的の ゲートウェイマシンにできます。これらの設定の例は LAN を使用するためのホストと IP, 第 3.1.9 節 をごらんください。


10.14.1 Netfilter 設定

netfilter/iptables プロジェクトは Linux 2.4 以降のための ファイアーウォールサブシステムです。 Netfilter をごらんください。 この文書では多くのネットワーク設定例が説明されています。


10.14.1.1 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                       |
                                \--> ローカルのプロセス --/
                                     ユーザスペースのプログラム

10.14.1.2 Netfilter テーブル

パケットはそれぞれの組込みチェインにて次のテーブルを用いて処理されます。


10.14.1.3 Netfilter のターゲット

ファイアーウォールのルールにはいくつかのターゲットがあります。


10.14.1.4 Netfilter コマンド

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 用

10.14.1.5 ネットワークアドレス変換

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 節 参照) から起動される必要があります。


10.14.1.6 SMTP 接続をリダイレクトする (2.4 用)

他の 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 を 追加することを考えてください。


10.14.2 複数のネット接続を管理する

[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
     このマシン上でマスカレードは行いません。

特別な魔法を施します。

  1. ip rule add from 192.168.1.2 lookup 1
  2. ip rule add from 10.0.0.2 lookup 2
  3. ip route add to default via 10.0.0.1 metric 0
  4. ip route add to default via 192.168.1.1 metric 1
  5. ip route add table 1 to 192.168.1.0/24 via eth0
  6. ip route add table 1 to 10.0.0.2/24 via eth1
  7. ip route add table 1 to default via 192.168.1.1
  8. ip route add table 2 to 192.168.1.0/24 via eth0
  9. ip route add table 2 to 10.0.0.2/24 via eth1
  10. ip route add table 2 to default via 10.0.0.2

[FIXME] これを試したことはありません。オートダイアル機能を使わないで 高速な接続のバックアップとしてダイアルアップをどうやって設定しますか? パッチを送ってください。:)


[ 前のページ ] [ 目次 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 次のページ ]

Debian リファレンス

CVS, 2005年 4月 3日 月曜日 22時59分00秒 UTC時間

Osamu Aoki (青木 修) osamu@debian.org
翻訳: 角田 慎一 tsuno@ngy.1st.ne.jp
著者, 第 A.1 節