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


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


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

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

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

ネットワークデバイスの設定は以降で説明します。 本章の情報は Sarge 向けに更新されました。 本章の内容のほとんどは以前のリリースには適用できません。


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 アドレスにより 識別されます。 [51] IP アドレスネットワークを示す部分とホストを示す部分に分割できます。 IP アドレスのネットワークアドレスの部分を 1 に、ホストアドレスの 部分を 0 にすると、ネットワークのいわゆるネットマスクが得られます。

伝統的に、IP ネットワークはそれぞれ 8 ビット、16 ビット、24 ビットの長さの ワークアドレス部分を持つクラスに分類されています。 これらのシステムは柔軟性に欠けており、多数の IP アドレスを無駄にしていました。 それゆえ、今日では IPv4 ネットワークは可変長のネットワークアドレス部分を持つ ように割り当てられています。

                     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 ネットワークの最初のアドレスはネットワーク自身のアドレスです。 最後のアドレスはネットワークのブロードキャストアドレスです。 [52] 他の全てのアドレスはネットワーク上のホストに割り当てられます。 これらのうち、最初又は最後のアドレスは通常ネットワークの インターネットゲートウェイに割り当てられます。

ルーティングテーブルは 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/ に あるオプションファイルと同じ名前です。 [53] こうして特定の 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 ホスト名

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

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


10.3.2 Mailname

ホストの mailname はホストを識別するためにメール関連の プログラムが使用する名前です。 /etc/mailname ファイルには名前に続いて改行を持つ行が 含まれます。 mailname はホストの IP アドレスの一つを解決する完全修飾ドメイン名です。 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 節 で議論 したように、受信者が見るメールアドレスは他のアドレスに変更可能です。


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

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

ソフトウェアには (例えば GNOME のように) システムのホスト名が標準的な FQDN を持つ IP アドレスに解決可能であることを期待しています。 システムのホスト名どドメイン名はまったく異なるものであるため、これは 本当に不適切です。しかし、これらのソフトを使わざるを得ません。 これらのソフトをサポートするには、システムのホスト名が解決可能 であることを保証する必要があります。 ほとんどの場合、これは /etc/hosts に IP アドレスと システムのホスト名を含む行を追加することにより行なわれます。 システムに継続的な IP アドレスが割り当てられている場合、この手段は 利用できますが、そうでは無い場合、アドレス 127.0.0.1 を使います。

      127.0.0.1 localhost
      127.0.0.1 uranus

システムのホスト名が FQDN を持つ IP アドレスに解決可能であるかを 知るには、hostname --fqdn コマンドを使用ください。


10.4.1 リゾルバ

特定のドメイン名に関連づけられた IP アドレスを捜し出す仕事は、リゾルバ の仕事です。最も良く使われているリゾルバは GNU C ライブラリにある リゾルバ (resolver(3)) により実現される 関数群です。他のリゾルバとしては、libfiredns パッケージに収録されている FireDNS リゾルバがあります。 他のパッケージも存在します。

どのように GNU LIBC リゾルバが名前を解決するかは /etc/nsswitch.conf 設定ファイル中の hosts 行により制御されています。 この行は名前を解決するために使われるサービス、例えば dns, files, nis, nisplus をリストしています。 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 は複雑ですがより広範な設定が可能です。 [54]


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


10.6.1 ifupdownを用いた高レベルなネットワーク設定

ネットワーク設定をより容易にするため、Debian は ifupifdown プログラムと /etc/network/interfaces ファイル から構成される標準の高レベルネットワーク設定ツールを供給します。 [55] ネットワークの設定に ifupdown を使おうとした場合、 通常低レベルのコマンドを同時に使うべき ではありません。 これは、低レベルな設定ツールを呼び出す whereami, divine,intuitively などのような他の 高レベルな設定ツールを使うべきではないということも意味しています。 ifupdown プログラムはこのプログラム単独でネットワーク インターフェイスの設定や設定解除に利用されるという意図を持って書かれました。

インターフェイスの設定を更新するには、次のようにします。

     # ifdown eth0
     # editor /etc/network/interfaces  # お好きなようにいじる
     # ifup eth0

より詳しい情報は interfaces(5), /usr/share/doc/ifupdown/examples/network-interfaces.gz, と ifup(8) をごらんください。


10.6.1.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.1.2 DHCP を用いてインターフェイスを設定する

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

     iface eth0 inet dhcp

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


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


10.6.1.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 オプションをさらに供給することはいまのところ できません。 [56]

現在 PPP インターフェイスの補助的な設定を行うために ifupdown を使うことはできません。ponpppd が接続を 確立する前に存在するため、ifup は インターフェイスの 準備ができる前に up スクリプトを起動します。 このバグ [57] が修正されるまでは、/etc/ppp/ip-up 又は /etc/ppp/ip-up.d/ にある補助的な設定を実行する必要性が 残ります。


10.6.1.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.1.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.12 節 に記述しているようにホストの NAT を有効にしている 場合、LAN 上の全てのホストでインターネット接続を共有できます。


10.6.1.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.6.2 ifupdown論理インターフェイス定義を用いた高レベルなネットワーク設定

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

/etc/network/interfaces にある iface 定義は 実際は物理インターフェイスの定義ではなく、論理インターフェイスの 定義です。 [59] インターフェイスを絶対再設定したくない場合、物理インターフェイス 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.6.3 ifupdown を用いた魔法のような ネットワーク設定

インターフェイス名は 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.6.3.1 節 を参照ください。


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

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

     mapping eth0
             script guessnet-ifupdown
             map home
             map work

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


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

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


10.6.4 network-manager を用いた 自動ネットワーク設定

network-manager プログラムは現在 Fedora 開発者により 開発中であり、Ubuntu 用にパッケージされています。いつか Debian に表れて ifupdown や類似品を時代遅れにするかもしれません。


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

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

現行のudevパッケージではコンフィギュレーション によりこの問題を解決できます。


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

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

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

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

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


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

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

最近動的な方法を用いてネットワーク設定を操作する方がより良いことが たびたびあります。 いったん動的に変化するハードウェアのサポートメカニズムが機能すると、 まるで動的であったかのように静的なハードウェアを扱うことがシンプルになります。 ブートはもう 1つの hotplug イベントとして扱えます。 (ネットワーク設定のトリガを設定する – hotplug, 第 10.8.2 節 参照)

しかしながら、ほとんど全ての場合、少なくともループバックデバイス lo はブート時に立ち上げておきたいでしょう。 それゆえ、/etc/network/interfaces に次の行が含まれている ことを確認してください。

     auto lo
     
     iface lo inet loopback

ブート時に他の物理インターフェイスも立ち上げたい場合、 auto 行にさらに物理インターフェイスを追加できます。 auto 行に 決して PCMCIA インターフェイスを リストしてはなりません。PCMCIA cardmgr はブートシーケンス において /etc/rcS.d/S40networking が起動する時よりも後に 起動されます。


10.8.2 ネットワーク設定のトリガを設定する – hotplug

hot-plug のサポートを追加するには、hotplug パッケージ をインストールしてください。

ネットワークハードウェアはブート時や、カード (例えば PCMCIA カード) を マシンに挿入した時、 discover が起動され、必要なドライバ モジュールをロードした時にもホットプラグできます。

kernel が新しいハードウェアを検知すると、ハードウェアのドライバを初期化し、 設定を行うために hotplug プログラムを起動します。 その後、ハードウェアが削除されると、kernel は異なる環境変数設定を 用いて hotplug を再び起動します。 Debian では、hotplug が呼ばれると、/etc/hotplug//etc/hotplug.d/ にあるスクリプトを起動します。 詳細は hotplug(8) をごらんください。

新たに挿入されたネットワークハードウェアはスクリプト /etc/hotplug/net.agent により設定されます。 [61] PCMCIA ネットワークカードが挿入され、eth0 が利用可能になる と仮定します [62] 。

     ifup eth0=hotplug

/etc/network/interfaces に論理インターフェイスの定義を追加するか、 hotplug という名のマッピングをしなければ、このコマンドは 何もしません。 コマンドが eth0 を設定するようにするには、次の行を /etc/network/interfaces に追加しましょう。

     mapping hotplug
             script echo

ifupdown論理インターフェイス定義を用いた高レベルなネットワーク設定, 第 10.6.2 節 で説明したように、これは次と等価になるように 上に示したコマンドをマップします。

     ifup eth0=eth0

もしインターフェイスをコントロールするために hotplug によってスタートした ifplugdwaproamd のインスタンスを用いている場合、このようなマッピング行を 追加しないでください

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

     mapping hotplug
             script grep
             map eth0

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


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

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


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

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

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


10.8.5 ネットワーク設定と PCMCIA

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

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

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

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


10.9 多段マッピング

あなたのネットワークカードがホットプラグされ ネットワーク設定のトリガを設定する – hotplug, 第 10.8.2 節 に書かれている 自動設定が有効になっていると仮定しましょう。 さらに論理インターフェイスを、 (カーネルによる一貫性のないインターフェイスの命名を扱う, 第 10.7 節 に書かれたように)アダプタ固有の 物理インターフェイスの特徴に従かうか、 (例えば guessnetを使った論理インターフェイス選択, 第 10.6.3.1 節 に書かれたように) インターフェイスがつながれているネットワークの特徴に従って 「物理」インターフェイスにマップする必要が有ると仮定しましょう。

第一段階のマッピングは hotplug のグループ名が 与えられると、インターフェイスがホットプラグされると kernel が割り当てたしたインターフェイス名を出力します。 第二段階のマッピングは kernel が割り当てたインターフェイス名が 与えられると、アダプタの名前を出力します。 第三段階のマッピングはアダプタの名前が与えられると、 ネットワーク環境に基づく論理インターフェイス名を出力します。

     # hotplug にインターフェイスを起動させる
     mapping hotplug
             script echo
     
     # インターフェイスが有線か無線 LAN かを決定
     mapping eth?
             script /usr/local/sbin/get-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.10 ネットワークサービスの設定

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


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

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

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

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

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


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

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


10.12.1 Netfilter 設定

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


10.12.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.12.1.2 Netfilter テーブル

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


10.12.1.3 Netfilter のターゲット

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


10.12.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.12.1.5 ネットワークアドレス変換

LAN 上のマシンは LAN 上の IP アドレスをインターネット上で使える IP アドレスに変換するゲートウェイを経由してインターネットのリソースに アクセスできます。

     # apt-get install ipmasq

ipmasq の防護を強化するためにサンプルルールを追加してください。

又、ネットワークに PCMCIA NIC 経由でアクセスしている場合、ipmasq/etc/pcmcia/network.opts (/usr/share/doc/ipmasq/ipmasq.txt.gz 参照) 又は /etc/network/interfaces (ネットワーク設定と PCMCIA, 第 10.8.5 節ネットワーク設定のトリガを設定する, 第 10.8 節 参照) から起動される必要があります。


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

特別な魔法を施します。

  • ip rule add from 192.168.1.2 lookup 1

  • ip rule add from 10.0.0.2 lookup 2

  • ip route add to default via 10.0.0.1 metric 0

  • ip route add to default via 192.168.1.1 metric 1

  • ip route add table 1 to 192.168.1.0/24 via eth0

  • ip route add table 1 to 10.0.0.2/24 via eth1

  • ip route add table 1 to default via 192.168.1.1

  • ip route add table 2 to 192.168.1.0/24 via eth0

  • ip route add table 2 to 10.0.0.2/24 via eth1

  • 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, 2007年 1月 18日 木曜日 11時54分01秒 UTC時間

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