第5章 ネットワークの設定

目次

5.1. 基本的ネットワークインフラ
5.1.1. ドメイン名
5.1.2. ホスト名の解決
5.1.3. ネットワークインターフェース名
5.1.4. LANのためのネットワークアドレス範囲
5.1.5. ネットワーク設定インフラ
5.1.6. ネットワークデバイスサポート
5.2. ネットワーク接続方法
5.2.1. イーサーネットを使ってのDHCP接続
5.2.2. イーサーネットを使っての静的IP接続
5.2.3. pppconfigを使ってのPPP接続
5.2.4. wvdialconfを使った代替PPP接続
5.2.5. pppoeconfを使ったPPPoE接続
5.3. ifupdownを使った基本的なネットワーク設定
5.3.1. 簡略化されたコマンドシンタックス
5.3.2. "/etc/network/interfaces"の基本的なシンタックス
5.3.3. ループバックネットワークインターフェース
5.3.4. DHCPサービスを受けるネットワークインターフェース
5.3.5. 静的IPを使うネットワークインターフェース
5.3.6. ワイアレスLANインターフェースの基本
5.3.7. WPA/WPA2を使うワイアレスLANインターフェース
5.3.8. WEPを使うワイアレスLANインターフェース
5.3.9. PPP接続
5.3.10. 代替のPPP接続
5.3.11. PPPoE接続
5.3.12. ifupdownのネットワーク設定状態
5.3.13. 基本ネットワーク設定
5.3.14. ifupdown-extraパッケージ
5.4. ifupdownを使う上級ネットワーク設定
5.4.1. ifplugdパッケージ
5.4.2. ifmetricパッケージ
5.4.3. 仮想インターフェース
5.4.4. 上級コマンドシンタックス
5.4.5. mappingスタンザ
5.4.6. 手動切り替え可能なネットワーク設定
5.4.7. ifupdownシステムを使うスクリプト
5.4.8. guessnetを使うmapping
5.5. デスクトップのためのネットワーク設定
5.5.1. GUIのネットワーク設定ツール
5.5.2. 自動ネットワーク設定
5.6. 低レベルネットワーク設定
5.6.1. Iproute2コマンド
5.6.2. 安全な低レベルネットワーク操作
5.7. ネットワークの最適化
5.7.1. 最適MTUの発見
5.7.2. MTUの設定
5.7.3. WAN TCPの最適化
5.8. Netfilter
[ティップ] ティップ

GNU/Linuxのネットワーク設定の一般的ガイドはLinux Network Administrators Guideを参照下さい。

Debianシステム上の伝統的なTCP/IPネットワークのセットアップはifupdownパッケージをよる高レベルのツールとして使います。2つの場合があります:

ここでは伝統的な場合を詳細に説明します。

また、ワイヤレスネットワークの設定を容易にするnetwork-managerwicdのような代替の高レベルツールにもここで少し触れていきます(「自動ネットワーク設定」参照)。

5.1. 基本的ネットワークインフラ

現代的なDebianシステムの基本的ネットワークインフラをレビューしましょう。

5.1.1. ドメイン名

ドメイン名を名付けるのは通常PCワークステーションのユーザにとってはトリッキーです。PCワークステーションは、ネットワークを渡り歩く可動PCかもしれないし、インターネットからアクセスできないNATファイアーウォールの背後にあるかもしれません。そのような場合、ドメイン名がかち合うのを避けるために有効なドメイン名をドメイン名として選びたくないでしょう。

rfc2606によると、インターネットから確実に無効なドメイン名を作るためにはトップレベルドメイン(TLD)の選択として"invalid"が良い選択のようです。

mDNSネットワーク探索プロトコル(Apple Bonjour / Apple Rendezvous、Debian上のAvahi)は、"local"擬似トップレベルドメインとして使います。Microsoftも"local"をローカルエリアネットワークのTLDとして推奨しているようでもあります

無効TLDのよくある選択は、私が受け取ったメールの解析によると、"localdomain"とか"lan"とか"localnet"とか"home"のようです。

5.1.2. ホスト名の解決

ホスト名の解決もまた、現在NSS (ネームサービススイッチ、Name Service Switch)メカニズムによってサポートされています。この解決の流れは次です:

  1. "hosts: files dns"のようなスタンザのある"/etc/nsswitch.conf"ファイルがホスト名の解消の順序を規定します。(これは、"/etc/host.conf"ファイル中の"order"スタンザの機能を置換します。)
  2. filesメソッドが最初に発動されます。ホスト名が"/etc/hosts"ファイルに見つかると、それに対応する全ての有効アドレスを返し終了します。("/etc/host.conf"ファイルは"multi on"を含みます。)
  3. dnsメソッドが発動されます。"/etc/resolv.conf"ファイルで識別されるインターネットドメイン名システム(DNS)への問い合わせでホスト名が見つかれば、それに関する全ての有効アドレスを返します。

"/etc/hosts"ファイルはホスト名とIPアドレスを関連付けます:

127.0.0.1 localhost
127.0.1.1 <host_name>.<domain_name> <host_name>

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

上記中の<host_name>は、"/etc/hostname"で定義される自分自身のホスト名と一致します。上記中の<domain_name>は、このホストの完全修飾ドメイン名(FQDN)です。

[ティップ] ティップ

真のFQDNを持たない可動PCでは、この設定ファイル中の<domain_name>のTLD部分に、実在しない"invalid"とかmDNSの"local"をTLDとして選べます。

resolvconfパッケージがインストールされなかったら、"/etc/resolv.conf"は静的なファイルです。インストールされると、それはシンボリックリンクになります。いずれにせよ,解決機構を初期化する情報を含んでいます。もしDNSがIP="192.168.11.1"に見つかるなら、それは次を含みます:

nameserver 192.168.11.1

resolvconfパッケージはこの"/etc/resolv.conf"をシンボリックリンクにし、フックスクリプトで自動的にその内容を管理します。

アドホクのmDNSのドメイン"local"中で通常Unix/Linuxプログラムによる名前解決を実質的にできるようにするマルチキャストDNS(Zeroconf、別名Apple Bonjour / Apple Rendezvous)を使うホスト名解決は、libnss-mdnsパッケージをインストールすると提供できます。このような機能を有効にするには、"/etc/nsswitch.conf"ファイル中に"hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4"のようなスタンザが必要です。

5.1.3. ネットワークインターフェース名

Linuxカーネル中の各ハードウエアーは、それが見つかり次第ユーザスペースの設定メカニズムudev(「udevシステム」参照)を通じて、例えばeth0のようなネットワークインターフェース名が付与されます。ネットワークインターフェース名は、ifup(8)とinterfaces(5)の中で物理インターフェースと呼ばれています。

MACアドレス等を使って各リブート毎に永続性をもって各ネットワークインターフェースが名付けられるように記録するファイル"/etc/udev/rules.d/70-persistent-net.rules"があります。このファイルは"persistent-net-generator.rules"ルールファイルによって実行されているような"/lib/udev/write_net_rules"プログラムによって自動生成されます。そのファイルを変更することで命名ルールを変更できます。

[注意] 注意

"/etc/udev/rules.d/70-persistent-net.rules"ルールファイルを編集する時は、各ルールを1行に納めてMACアドレスに小文字を使わなければいけません。例えば、あなたがこのファイル中に"Firewire device"と"PCI device"を見つけたら、きっと"PCI device"をeth0として第1番目のネットワークインターフェースとして設定したいでしょう。

5.1.4. LANのためのネットワークアドレス範囲

rfc1918によってローカルエリアネットワーク(LAN)での使用に予約されている各クラス毎のIPv4 32ビットアドレス範囲を確認しましょう。これらのアドレスは本来のインターネット上のアドレスとかち合う事が無いことが保証されています。

表5.1 ネットワークアドレス範囲のリスト

クラス ネットワークアドレス ネットマスク ネットマスク/ビット サブネットの数
A 10.x.x.x 255.0.0.0 /8 1
B 172.16.x.x — 172.31.x.x 255.255.0.0 /16 16
C 192.168.0.x — 192.168.255.x 255.255.255.0 /24 256

[注意] 注意

これらのアドレス内の1つがホストに付与されている場合、そのホストはインターネットを直接アクセスせずに、各サービスのプロキシとなるかネットワークアドレス変換(NAT)をするゲートウエーを通してアクセスしなければいけません。ブロードバンドルーターは消費者LAN環境のために通常NATを行います。

5.1.5. ネットワーク設定インフラ

Linuxのネットワークシステムには2タイプの低レベルネットワークプログラムがあります(「Iproute2コマンド」参照)。

  • 古いnet-toolsプログラム(ifconfig(8)、…)はLinux NET-3ネットワークシステム由来です。これらの多くはすでに時代遅れです。
  • 新しいLinux iproute2プログラム(ip(8)、…)は現行のLinuxのネットワークシステムです。

これらの低レベルのネットワークプログラムは強力ですが、使うのが面倒です。そこで高レベルのネットワーク設定プログラムが作られました。

ifupdownパッケージはDebian上のそのような高レベルネットワーク設定のデファクトスタンダードです。それを使うと、"ifup eth0"とするだけでネットワークを立ち上げることができます。その設定ファイルは、"/etc/network/interfaces"ファイルで、その典型的内容は次です:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

resolvconfパッケージは、ネットワークアドレス解決設定ファイル"/etc/resolv.conf"の書き変えを自動化してネットワークアドレス解決の円滑な再構成をサポートするためにifupdownシステムを補完するために作られました。現在、ほとんどのDebianのネットワーク設定パッケージはresolvconfパッケージを使うように変更されています("/usr/share/doc/resolvconf/README.Debian"参照)。

ifplugdguessnetifscheme等のifupdownパッケージの補助スクリプトが有線LAN上の可動PCのためのネットワーク環境設定のようなネットワーク環境の動的設定を自動化するために作られています。これらはちょっと使い難いですが、既存のifupdownシステムとは反りが合います。

ifupdownシステムと独立な、network-managerwicd等の代替となる高レベルネットワーク設定システムはワイアレスネットワーク上の可動PCも含めたネットワーク環境を楽に設定するために作られた。これらは比較的新しくそのDebianシステムへの統合は進行中なので、これらとifupdownがかち合うことを避けるために"/etc/network/interfaces"中の対応するネットワークインターフェースを手動で無効にする必要があるかもしれません。(「自動ネットワーク設定」参照)。

表5.2 ネットワーク設定ツールのリスト。

パッケージ popcon サイズ タイプ 機能
ifupdown V:63, I:99 228 設定::ifupdown ネットワークを接続したり切断したりする標準化されたツール(Debian特定)
ifplugd V:0.4, I:0.9 332 , , 有線ネットワークを自動的に管理します
ifupdown-extra V:0.04, I:0.2 124 , , "ifupdown"パッケージを強化するネットワークテストスクリプト
ifmetric V:0.02, I:0.09 100 , , ネットワークインターフェースの経路メトリック設定をします
guessnet V:0.09, I:0.4 492 , , ifupdownのヘルパースクリプト: ifplugdguessnetifscheme、…
ifscheme V:0.03, I:0.10 80 , , "ifupdown"パッケージを補強するmappingスクリプト
ifupdown-scripts-zg2 V:0.00, I:0.05 220 , , Zugschlusさんのifupdownの手動方法のインターフェーススクリプト
network-manager V:30, I:38 2180 設定::NetworkManager NetworkManager (デーモン): ネットワークを自動管理します
network-manager-gnome V:22, I:35 3372 , , NetworkManager (GNOMEフロントエンド)
network-manager-kde V:2, I:4 3088 , , NetworkManager (KDEフロントエンド)
wicd V:1.2, I:1.5 1852 設定::wicd 有線と無線のネットワークマネージャ
iptables V:25, I:99 1368 設定::Netfilter パケットフィルタリングとNATのための管理ツール
iproute V:38, I:75 1000 設定::iproute2 IPv6や他の上級ネットワーク設定: ip(8)やtc(8)等
ifrename V:0.2, I:0.8 108 , , 各種の静的クライテリアに基づきネットワークインターフェースを改名します: ifrename(8)
ethtool V:3, I:11 256 , , Ethernetデバイス設定の表示と設定をします
iputils-ping V:36, I:99 124 テスト::iproute2 ホスト名IPアドレスによってリモートホストのネットワークからの到達性をテストするツール
iputils-arping V:1.1, I:17 72 , , ARPアドレスによって特定されるリモートホストのネットワークからの到達性をテストするツール
iputils-tracepath V:0.4, I:2 108 , , リモートホストへのネットワークパスを追跡するツール
net-tools V:80, I:99 1016 設定::net-tools NET-3ネットワーキングツールキット(IPv4ネットワーク設定): ifconfig(8)等
inetutils-ping V:0.05, I:0.14 268 テスト::net-tools ホスト名IPアドレスによってリモートホストのネットワークからの到達性をテストするツール(レガシー、GNU)
arping V:0.5, I:2 64 , , ARPアドレスによって特定されるリモートホストのネットワークからの到達性をテストするツール(レガシー)
traceroute V:14, I:98 184 , , リモートホストへのネットワークパスを追跡するツール(レガシー、コンソール)
dhcp3-client V:50, I:93 608 設定::低レベル DHCPクライアント
wpasupplicant V:12, I:45 960 , , WPAとWPA2 (IEEE 802.11i)のためのクライアントサポート
wireless-tools V:9, I:27 276 , , Linuxのワイアレス拡張を操作するツール
ppp V:7, I:26 1100 , , chatによるPPP/PPPoEコネクション
pppoeconf V:0.5, I:4 200 設定::ヘルパー PPPoEコネクションの設定ヘルパー
pppconfig V:0.4, I:3 900 , , chatによるPPPコネクションの設定ヘルパー
wvdial V:0.6, I:2 352 , , wvdialpppによるPPPコネクションの設定ヘルパー
mtr-tiny V:4, I:54 120 テスト::低レベル リモートホストへのネットワークパスを追跡するツール(curses)
mtr V:0.5, I:2 176 , , リモートホストへのネットワークパスを追跡するツール(cursesとGTK+)
gnome-nettool V:4, I:40 1766 , , リモートホストへのネットワークパスを追跡するツール(GNOME)
nmap V:6, I:30 3768 , , ネットワークマッパー/ポートスキャナ(Nmap、コンソール)
zenmap V:0.2, I:1.0 1232 , , ネットワークマッパー/ポートスキャナ(GTK+)
knmap V:0.12, I:0.7 1992 , , ネットワークマッパー/ポートスキャナ(KDE)
tcpdump V:3, I:22 796 , , ネットワークトラフィックアナライザー(Tcpdump、コンソール)
wireshark V:2, I:10 1604 , , ネットワークトラフィックアナライザー(Wireshark、GTK+)
tshark V:0.5, I:3 284 , , ネットワークトラフィックアナライザー(コンソール)
nagios3 V:0.8, I:1.1 4152 , , ホストとサービスとネットワークを監視や管理するシステム(Nagios)
tcptrace V:0.07, I:0.4 432 , , tcpdumpの出力から接続状況のまとめを作成するツール
snort V:0.7, I:0.9 1100 , , 柔軟なネットワーク侵入検知システム(Snort)
ntop V:1.2, I:2 15600 , , ネットワークの使用状況をウエッブブラウザで表示する
dnsutils V:14, I:91 388 , , BINDによって提供されるネットワーククライアント: nslookup(8)とnsupdate(8)とdig(8)
dlint V:0.5, I:7 96 , , ネームサーバーの閲覧でDNSのゾーン情報を確認
dnstracer V:0.09, I:0.6 88 , , DNSサーバーをその源流まで遡るツール

5.1.6. ネットワークデバイスサポート

Debianシステムによってほとんどのハードウエアーデバイスはサポートされていますが、一部のネットワークデバイスはそのサポートのためにDSFG non-freeのドライバが必要です。「Non-free hardware drivers」を参照下さい。

5.2. ネットワーク接続方法

[注意] 注意

本セクションで説明されている接続テスト方法はあくまでテスト目的のためのものです。毎日のネットワーク接続のために使うためではありません。ifupdownパッケージを通して使うことをお勧めします(「ifupdownを使った基本的なネットワーク設定」参照)。

典型的なネットワーク接続方法とPCまでの接続経路は次のようにまとめられます:

表5.3 典型的なネットワーク接続方法と接続経路のリスト。

PC 接続方法 接続経路
シリアルポート(ppp0) PPP モデム ⇔ POTS ⇔ ダイヤルアップアクセスポイント ⇔ ISP
イーサーネットポート(eth0) PPPoE/DHCP/静的 ⇔ BBモデム ⇔ BBサービス ⇔ BBアクセスポイント ⇔ ISP
イーサーネットポート(eth0) DHCP/静的 ⇔ LAN ⇔ ネットワークアドレス変換(NAT)機能のあるBBルーター (⇔ BBモデム …)

各接続方法のための設定スクリプトのまとめると次となります:

表5.4 ネットワーク接続設定のリスト。

接続方法 設定 バックエンドパッケージ
PPP pppconfig決定論的chatの作成 pppconfigppp
PPP(代替) wvdialconfはヒューリスティックのあるchatの作成 pppwvdial
PPPoE pppoeconf決定論的chatの作成 pppoeconfppp
DHCP "/etc/dhcp3/dhclient.conf"中に記述されています dhcp3-client
静的IP (IPv4) "/etc/network/interfaces"中に記述されています net-tools
静的IP (IPv6) "/etc/network/interfaces"中に記述されています iproute

ネットワーク接続の省略語は次の意味です:

表5.5 ネットワーク接続の省略語のリスト。

省略語 意味
POTS 旧来型電話サービス
BB ブロードバンド
BBサービス 例えばデジタルサブスクラーバーライン(DSL)やケーブルテレビや家庭向け光ファイバー(FTTP)。
BBモデム 例えば、DSLモデムケーブルモデム光ファイバー端末(ONT)
LAN ローカルエリアネットワーク
WAN 広域ネットワーク
DHCP 動的ホスト設定プロトコル
PPP ポイント間接続プロトコル
PPPoE Ethernet経由のポイント間接続プロトコル
ISP インターネットサービス供給者

[注意] 注意

ケーブルTV経由のWAN接続サービスは大体DHCPかPPPoEでサービスを受けます。ADSLとFTTPの接続サービスは大体PPPoEでサービスを受けます。WAN接続の正確な設定要件はあなたのISPにご確認下さい。

[注意] 注意

BBルータが家庭内LAN環境を作るのに使われる時には、LAN上のPCはネットワークアドレス変換(NAT)をしてBBルーター経由でWANに接続されます。そのような場合、LAN上のPCのネットワークインターフェースは静的IPかBBルーターからのDHCPでサービスを受けます。BBルーターはあなたのISPによる指示にしたがってWANに接続されるよう設定しなければいけません。

5.2.1. イーサーネットを使ってのDHCP接続

典型的な最近の家庭内や小規模ビジネスネットワークのLANはWAN(インターネット)に何らかの消費者向けブロードバンドルーターを使って接続されています。このルーターの後ろのLANは通常ルーター上で稼働する動的ホスト設定プロトコル(DHCP)サーバーによりサービスを受けています。

動的ホスト設定プロトコル(DHCP)サービスを受けるイーサーネットでは、dhcp3-clientパッケージをインストールするだけです。

5.2.2. イーサーネットを使っての静的IP接続

静的IPサービスを受けるイーサーネットでは、特段何をする必要もありません。

5.2.3. pppconfigを使ってのPPP接続

設定スクリプトpppconfigPPP接続を次の選択をすることで対話式で設定します:

  • 電話番号
  • ISPでのユーザ名
  • ISPのパスワード
  • ポートの速度
  • モデム通信のポート
  • 認証方法

設定ファイルは以下:

表5.6 pppconfigを使ってのPPP接続のための設定ファイルのリスト。

ファイル 機能
/etc/ppp/peers/<isp_name> pppconfigによって生成された<isp_name>に特定なpppdのための設定ファイル
/etc/chatscripts/<isp_name> pppconfigによって生成された<isp_name>に特定なchatのための設定ファイル
/etc/ppp/options pppdのための一般的な実行パラメータ
/etc/ppp/pap-secret PAPのための認証データ(安全上問題あり)
/etc/ppp/chap-secret CHAPのための認証データ(比較的安全)

[注意] 注意

もしponpoffコマンドが引数無しに起動された場合には、"<isp_name>"の値として"provider"が使われます。

低レベルのネットワーク設定ツールを使って設定の確認ができます。

$ sudo pon <isp_name>
...
$ sudo poff <isp_name>

詳細は"/usr/share/doc/ppp/README.Debian.gz"を参照下さい。

5.2.4. wvdialconfを使った代替PPP接続

pppd(8)を使う異なるアプローチは、wvdialパッケージが提供するwvdial(1)からそれを実行することです。電話を掛け接続の交渉をするためにpppdchat(8)を実行するのではなく、wvdialが電話を掛け接続の交渉をした後にpppdを始動し後を任せます。

設定スクリプトwvdialconfはPPP接続を次の選択をすることで対話式で設定します:

  • 電話番号
  • ISPでのユーザ名
  • ISPのパスワード

ほとんどの場合wvdialは接続をすることに成功し、自動的に認証データのリストを管理します。

設定ファイルは以下:

表5.7 wvdialconfでPPP接続する際の設定ファイルリスト。

ファイル 機能
/etc/ppp/peers/wvdial wvdialconfwvdialに合わせて生成したpppdの設定ファイル
/etc/wvdial.conf wvdialconfが生成した設定ファイル
/etc/ppp/options pppdのための一般的な実行パラメータ
/etc/ppp/pap-secret PAPのための認証データ(安全上問題あり)
/etc/ppp/chap-secret CHAPのための認証データ(比較的安全)

低レベルのネットワーク設定ツールを使って設定の確認ができます。

$ sudo wvdial
...
$ sudo killall wvdial

詳細はwvdial(1)とwvdial.conf(5)を参照下さい。

5.2.5. pppoeconfを使ったPPPoE接続

あなたのISPがPPPoE接続を提供し、あなたのPCを直接WANに接続すると決めた際には、あなたのPCのネットワークはPPPoEで設定しないといけません。PPPoEとはイーサーネット経由のPPPの意味です。設定スクリプトpppoeconfはPPPoE接続を対話式で設定します。

設定ファイルは以下:

表5.8 pppoeconfを用いてPPPoE接続する際の設定ファイルのリスト。

ファイル 機能
/etc/ppp/peers/dsl-provider pppoeconfpppoeに合わせて生成したpppdの設定ファイル
/etc/ppp/options pppdのための一般的な実行パラメータ
/etc/ppp/pap-secret PAPのための認証データ(安全上問題あり)
/etc/ppp/chap-secret CHAPのための認証データ(比較的安全)

低レベルのネットワーク設定ツールを使って設定の確認ができます。

$ sudo /sbin/ifconfig eth0 up
$ sudo pon dsl-provider
...
$ sudo poff dsl-provider
$ sudo /sbin/ifconfig eth0 down

詳細は"/usr/share/doc/pppoeconf/README.Debian"を参照下さい。

5.3. ifupdownを使った基本的なネットワーク設定

ifupdownパッケージはDebianシステムでの高レベルネットワーク設定の標準化された枠組みを提供します。このセクションでは、簡略化された紹介と多くの典型例でifupdownを使った基本的なネットワーク設定を学びます。

5.3.1. 簡略化されたコマンドシンタックス

ifupdownパッケージには2つのコマンドがあります: ifup(8)とifdown(8)。設定ファイル"/etc/network/interfaces"により規定される高レベルのネットワーク設定を提供します。

表5.9 ifupdownを使う基本的なネットワーク設定コマンドのリスト。

コマンド アクション
ifup eth0 "iface eth0"スタンザがあれば、ネットワークインターフェースeth0をネットワーク設定eth0で起動します。
ifdown eth0 "iface eth0"スタンザがあれば、ネットワークインターフェースeth0に関するネットワーク設定eth0を終了し停止します。

[警告] 警告

up状態にあるインターフェースを、ifconfig(8)やip(8)コマンドのような低レベル設定ツールを使って設定してはいけません。

[注意] 注意

ifupdownというコマンドはありません。

5.3.2. "/etc/network/interfaces"の基本的なシンタックス

"/etc/network/interfaces"のシンタックスはinterfaces(5)に説明されていて、要点は:

表5.10 "/etc/network/interfaces"のスタンザのリスト

スタンザ 意味
"auto <interface_name>" システム起動時にインターフェース<interface_name>を起動します。
"allow-auto <interface_name>" , ,
"allow-hotplug <interface_name>" カーネルがインターフェースからのホットプラグイベントを認知した際にインターフェース<interface_name>を起動します。
"iface <config_name> …"によって始まる行 ネットワーク設定<config_name>を規定します。
"mapping <interface_name_glob> "によって始まる行 <interface_name>に対応する<config_name>のmapping値を規定します。
ハッシュ"#"で始まる行 コメントして無視される。(行末コメントは非サポート)
バックスラシュ"\"で終わる行 設定を次行に継続します。

ifaceスタンザで始まる行は次のシンタクスです:

iface <config_name> <address_family> <method_name>
 <option1> <value1>
 <option2> <value2>
 ...

基本設定に関しては、mappingスタンザは使われませんし、ネットワークインターフェース名をネットワーク設定名として使います(「mappingスタンザ」参照)。

[警告] 警告

"/etc/network/interfaces"のネットワークインターフェースに関する"iface"スタンザの重複定義をしてはいけません。

5.3.3. ループバックネットワークインターフェース

"/etc/network/interfaces"ファイルに次の設定をすることでシステムブート時にループバックネットワークインターフェースloが起動されます(autoスタンザ経由)。

auto lo
iface lo inet loopback

この設定は、"/etc/network/interfaces"ファイル中にいつも存在します。

5.3.4. DHCPサービスを受けるネットワークインターフェース

「イーサーネットを使ってのDHCP接続」によりシステムの準備をした後、DHCPによってサービスされるネットワークインターフェースは"/etc/network/interfaces"ファイルの中に次のような設定エントリーを設定します:

allow-hotplug eth0
iface eth0 inet dhcp
 hostname "mymachine"

Linuxカーネルが物理インターフェースeth0を認識した場合、allow-hotplugスタンザはifupによりそのインターフェースが起動させられるようにし、ifaceスタンザがifupがインターフェースがDHCPを使うように設定します。

5.3.5. 静的IPを使うネットワークインターフェース

静的IPによってサービスされるネットワークインターフェースは"/etc/network/interfaces"ファイル中に例えば次の設定エントリーを作ることで設定されます:

allow-hotplug eth0
iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 broadcast 192.168.11.255
 gateway 192.168.11.1
 dns-domain lan
 dns-nameservers 192.168.11.1

Linuxカーネルが物理インターフェースeth0を認識した場合、allow-hotplugスタンザはifupによりそのインターフェースが起動させられるようにし、ifaceスタンザがifupがインターフェースが静的IPを使うように設定します。

ここで、私は次のような仮定をしています:

  • LANネットワークのIPアドレス範囲: 192.168.11.0 - 192.168.11.255
  • ゲートウエーのIPアドレス: 192.168.11.1
  • PCのIPアドレス: 192.168.11.100
  • resolvconfパッケージがインストール済み。
  • ドメイン名は"lan"。
  • DNSサーバーのIPアドレス: 192.168.11.1

resolvconfパッケージがインストールされていないと、DNS関係の設定は手動で"/etc/resolv.conf"を次のように編集する必要があります:

nameserver 192.168.11.1
domain lan
[注意] 注意

上記例で用いたIPアドレスはそのままコピーされるべきものではありません。IP番号はあなたの実際のネットワーク設定に合わせなければいけません。

5.3.6. ワイアレスLANインターフェースの基本

ワイアレスLAN (省略するとWLAN)IEEE 802.11という標準群に基づく特別な免許なく使える無線を使う帯域拡散通信を経由の高速ワイアレス接続を提供します。

WLANインターフェースは通常のEthernetインターフェースと非常に似ていますが、始動時にネットワークIDと暗号キーデータを必要とします。インターフェース名が使われるカーネルドライバによってeth1wlan0ath0wifi0等とインターフェース名が少々異なる以外は、それらに使われる高レベルのネットワークツールはEthernetインターフェースのものとまったく同じです。

[ティップ] ティップ

wmaster0デバイスは、新規のLinuxのmac80211 APIによるSoftMACによってのみ使われる内部デバイスのマスターデバイスです。

WLANに関して留意すべきキーワードは次です:

表5.11 WLANの略語のリスト。

省略語 元の言葉 意味
NWID ネットワークID 802.11以前のWaveLANネットワークによって使われる16ビットネットワークID。絶対使用を控えること。
(E)SSID (拡張)サービスセットアイデンティファイアー 802.11 ワイアレスLANが統合されて連結されてできるワイアレスアクセスポイント(APs)のネットワーク名。ドメインID。
WEP, (WEP2) 有線等価プライバシー 第1世代の、40ビットのキーを使う64ビット(128ビット)のワイアレス暗号化標準。使用を控えること。
WPA Wi-Fi保護アクセス(Protected Access) 第2世代の、WEPとの互換性のあるワイアレス暗号化標準(802.11iの殆ど)。
WPA2 Wi-Fi保護アクセス(Protected Access)2 第3世代の、WEPとの互換性のないワイアレス暗号化標準(完全に802.11i)。

実際のプロトコルの選択肢は採用しているワイアレスルーターによって普通制約されます。

5.3.7. WPA/WPA2を使うワイアレスLANインターフェース

新しいWPA/WPA2を使うWLANをサポートするには、wpasupplicantパッケージをインストールする必要があります。

WLAN接続上のDHCPによってサービスされているIPの場合には、"/etc/network/interfaces"ファイルのエントリーは次のようです:

allow-hotplug ath0
iface ath0 inet dhcp
 wpa-ssid homezone
 # hexadecimal psk is encoded from a plaintext passphrase
 wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

詳細は"/usr/share/doc/wpasupplicant/README.modes.gz"を参照下さい。

5.3.8. WEPを使うワイアレスLANインターフェース

古いWEPを使うWLANをサポートするには、wireless-toolsパッケージをインストールする必要があります。(あなたの消費者用のルーターは今だにセキュアでないインフラを使っているかもしれませんが、無いよりはましです。)

[注意] 注意

WEPを使うWLAN上のネットワークトラフィックは他人に覗かれているかも知れないことを覚えておいてください。

WLAN接続上のDHCPによってサービスされているIPの場合には、"/etc/network/interfaces"ファイルのエントリーは次のようです:

allow-hotplug eth0
iface eth0 inet dhcp
 wireless-essid Home
 wireless-key1 0123-4567-89ab-cdef
 wireless-key2 12345678
 wireless-key3 s:password
 wireless-defaultkey 2
 wireless-keymode open

詳細は"/usr/share/doc/wireless-tools/README.Debian"を参照下さい。

5.3.9. PPP接続

以前説明したようにPPP接続を設定する必要があります(「pppconfigを使ってのPPP接続」参照)。さらに、第1番目のPPPデバイスppp0のための"/etc/network/interfaces"ファイルのエントリーを次のように追加します:

iface ppp0 inet ppp
 provider <isp_name>

5.3.10. 代替のPPP接続

以前説明したようにwvdialを使う代替PPP接続をまず設定する必要があります(「wvdialconfを使った代替PPP接続」参照)。さらに、第1番目のPPPデバイスppp0のための"/etc/network/interfaces"ファイルのエントリーを次のように追加します:

iface ppp0 inet wvdial

5.3.11. PPPoE接続

PPPoEによってサービスされる直接WANに接続したPCの場合、以前説明したようにPPPoE接続を設定する必要があります(「pppoeconfを使ったPPPoE接続」参照)。さらに、第1番目のPPPoEデバイスeth0のための"/etc/network/interfaces"ファイルのエントリーを次のように追加します:

allow-hotplug eth0
iface eth0 inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down
# The following is used internally only
iface dsl inet ppp
 provider dsl-provider

5.3.12. ifupdownのネットワーク設定状態

"/etc/network/run/ifstate"ファイルは、ifupdownパッケージが管理する全ての有効なネットワークインターフェースの意図したネットワーク設定状態を記録します。残念ながらifupdownが意図したにもかかわらずインターフェースを起動できなかった場合でも、"/etc/network/run/ifstate"ファイルはインターフェースが起動されたと表示します。

あるインターフェースに関するifconfig(8)コマンド出力が次の例のような行を欠いている場合、IPV4ネットワークの一部としては使えません:

  inet addr:192.168.11.2  Bcast:192.168.11.255  Mask:255.255.255.0
[注意] 注意

PPPoEに接続されているイーサーネットデバイスの場合、ifconfig(8)コマンドのアウトプットは上記例のような行を欠いています。

5.3.13. 基本ネットワーク設定

例えばeth0というインターフェースを再設定したい際には、まず"sudo ifdown eth0"コマンドを実行してそれを無効にしなければいけません。こうすることでeth0のエントリーが"/etc/network/run/ifstate"ファイルから削除されます。(もしeth0が有効でなかったりそれにたいして過去に間違った設定がされている際には、こうするとエラーメッセージを発することになるかもしれません。シンプルな単一ユーザのワークステーションではいつも問題なことは知る限り起こらないようです。)

こうすることで、必要に応じてネットワークインターフェースeth0を自由に再設定するために"/etc/network/interfaces"の内容を自由に書き換えられます。

こうした後で、eth0を"sudo ifup eth0"コマンドを使って再起動できます。

[ティップ] ティップ

ネットワークインターフェースは、"sudo ifdown eth0;sudo ifup eth0"とすることで(再)初期化できます。

5.3.14. ifupdown-extraパッケージ

ifupdown-extraパッケージは、ifupdownとともに使う使いやすいネットワーク接続テストを次によって提供します:

  • シェルから実行されるnetwork-test(1)コマンド。
  • ifupコマンド実行毎に実行される自動スクリプト。

network-testコマンドをつかうことで面倒な低レベルコマンドを使ってネットワーク問題を分析する手間を省けます。

自動スクリプトは"/etc/network/*/"にインストールされ:

  • ネットワークケーブルの接続の確認。
  • IPアドレスの重複使用の確認。
  • "/etc/network/routes"の定義に従った静的ルートの設定。
  • ネットワークのゲートウエーが到達可能かの確認。
  • 結果を"/var/log/syslog"ファイルに記録。

このsyslog記録はリモートシステムのネットワーク問題を管理する上で非常に有用です。

[ティップ] ティップ

ifupdown-extraパッケージの自動的な挙動は"/etc/default/network-test"によって設定可能です。これらの自動テストの一部はARPからの返答を聞くのでシステムのブートプロセスを少々遅らせます。

5.4. ifupdownを使う上級ネットワーク設定

ifupdownパッケージの機能は、上級知識を使うと「ifupdownを使った基本的なネットワーク設定」に書かれているよりも向上します。

ここに記述されている機能は全く任意のものです。著者自身、怠け者で面倒な事が嫌いなために、ここに書かれたことを使うことは滅多にありません。

[注意] 注意

「ifupdownを使った基本的なネットワーク設定」に書かれた情報でネットワーク接続をうまく設定できないのに、次の情報を使うと状況は更に悪くなります。

5.4.1. ifplugdパッケージ

ifplugdパッケージはイーサーネット接続のみを管理する古い自動ネットワーク設定ツールです。これによって可動PC等のイーサーネットケーブルの脱着問題を解決します。もしNetworkManagerWicd (「自動ネットワーク設定」参照)がインストールされている場合は、このパッケージは必要ありません。

このパッケージはデーモンとして実行され、autoとかallow-hotplugという機能(表5.10「"/etc/network/interfaces"のスタンザのリスト」)を置き換え、インターフェースがネットワークに繋がれるとインターフェースを起動します。

例えばeth0という内部イーサーネットポートに対するifplugdパッケージの利用方法は次です:

  • "/etc/network/interfaces"の中のスタンザを削除します: "auto eth0"または"allow-hotplug eth0"、
  • "/etc/network/interfaces"の中のスタンザを残します: "iface eth0 inet …"と"mapping …"、
  • ifplugdパッケージをインストールします、
  • "sudo dpkg-reconfigure ifplugd"の実行します。
  • eth0を"ifplugdにより監視される静的インターフェース"とします。

こうするとお望みどおりのネットワーク設定が機能します:

  • 電源投入もしくはハードウエアーの発見時に、インターフェースは自動的に起動されます。

  • イーサーネットケーブルを発見時にインターフェースが起動されます。
  • イーサーネットケーブルを外して少し経った時点でインターフェースが自動的に停止されます。
  • イーサーネットケーブルを接続した時点でインターフェースが新しいネットワーク環境下で起動されます。
[ティップ] ティップ

The arguments for the ifplugd(8)コマンドの引数はインターフェースの再設定の遅延時間などの挙動を設定します。

5.4.2. ifmetricパッケージ

ifmericパッケージを使うと、DHCPでもルートのメトリクスを事後操作できます。

次のようにするとeth0インターフェースをwlan0インターフェースより優先するように設定できます:

  • ifmetricパッケージをインストール。
  • "iface eth0 inet dhcp"行のすぐ下に"metric 0"というオプション行を追加します。
  • "iface wlan0 inet dhcp"行のすぐ下に"metric 1"というオプション行を追加します。

メトリック0とは最高優先順位のルートでデフォルトのルートということを意味します.大きなメトリック値は低い優先順位を意味します。最低のメトリック値をもつ有効なインターフェースのIPアドレスが発信源となるインターフェースになります。ifmetric(8)を参照下さい。

5.4.3. 仮想インターフェース

物理的には単一のイーサーネットインターフェースは異なるIPアドレスをもつ複数の仮想インターフェースとして設定できます。いくつかのIPサブネットワークにインターフェースを繋ぐのが通常こうする目的です。例えば、単一ネットワークインターフェースを使ったIPアドレスに基づく仮想ウエッブホスティングがその適用例です。

例えば、次を仮定しましょう

  • あなたのホスト上の単一のイーサーネットインターフェースが(ブロードバンドルーターではなく)イーサーネットハブに接続されています。
  • イーサーネットハブはインターネットとLANネットワークの両方に接続されています。
  • LANネットワークはサブネット192.168.0.x/24を使う。
  • あなたのホストはインターネットに関しては物理インターフェースeth0をDHCPが提供するIPアドレスで使います。
  • あなたのホストはLANに関しては仮想インターフェースeth0:0192.168.0.1で使います。

このとき"/etc/network/interfaces"中の次のスタンザがあなたのネットワークを設定します:

iface eth0 inet dhcp
 metric 0
iface eth0:0 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 broadcast 192.168.0.255
 metric 1
[注意] 注意

netfilter/iptables(「Netfilter」参照)を使ってネットワークアドレス変換(NAT)を使う上記設定例は単一インターフェースを使ってLANに対して安価なルーターを提供しますが、そのような設定を使ったのでは真のファイアーウォール能力はありません。2つの物理インターフェースとNATを使ってインターネットからローカルネットワークをセキュアするべきです。

5.4.4. 上級コマンドシンタックス

ifupdownパッケージはネットワーク設定名とネットワークインターフェース名を使って上級のネットワーク設定をできるようにします。わたしはifup(8)やinterfaces(5)とは少々異なる用語法をここでは使っています。

表5.12 ネットワークデバイスの用語法のリスト。

マンページの用語法 著者の用語法 説明 この後の文中の用例
物理インターフェース ネットワークインターフェース Linuxカーネルが(udevメカニズムを利用して)与える名前。 lo, eth0, <interface_name>
論理インターフェース ネットワーク設定 "/etc/network/interfaces"中でifaceに続く名前文字列。 config1, config2, <config_name>

「簡略化されたコマンドシンタックス」中の基本的なネットワーク設定コマンドは、ifaceスタンザ中のネットワーク設定名の文句と、"/etc/network/interfaces"中のネットワークインターフェース名が一致している必要があります。

上級ネットワーク設定コマンドは"/etc/network/interfaces"の中で、ネットワーク設定名とネットワークインターフェース名を区別を可能にします:

表5.13 ifupdownを使う上級ネットワーク設定コマンドのリスト。

コマンド アクション
ifup eth0=config1 ネットワーク設定config1を使うネットワークインターフェースeth0を始動します。
ifdown eth0=config1 ネットワーク設定config1を使うネットワークインターフェースeth0を停止します。
ifup eth0 mappingスタンザによって選ばれる設定を使ってネットワークインターフェースeth0を始動します。
ifdown eth0 mappingスタンザによって選ばれる設定を使ってネットワークインターフェースeth0を停止します。

5.4.5. mappingスタンザ

「"/etc/network/interfaces"の基本的なシンタックス」では複雑になるのを避けるために"/etc/network/interfaces"中のmappingスタンザを説明しませんでした。このスタンザには次のシンタクスがあります:

mapping <interface_name_glob>
 script <script_name>
 map <script_input1>
 map <script_input2>
 map ...

上記は、<script_name>で指定されるmappingスクリプトで設定の選択を自動化することで"/etc/network/interfaces"に上級機能を付与します。

"<interface_name_glob>"が"eth0"と一致する時に、次が実行され

$ sudo ifup eth0

それは、次の命令を実行をします:

$ sudo ifup eth0=$(echo -e '<script_input1> \n <script_input2> \n ...' | <script_name> eth0)

そしてeth0が自動的に設定されます。ここで、"map"を含む行は任意で繰り返してもいいです。

[注意] 注意

mappingスタンザのグロッブはシェルのファイル名グロブのように機能します(「シェルグロブ」参照)。

5.4.6. 手動切り替え可能なネットワーク設定

「基本ネットワーク設定」でしたように"/etc/network/interfaces"ファイルを書き直すことなくいくつかのネットワーク設定間を手動で切り替える方法を次に示します。

アクセスする必要のある全てのネットワーク設定のついて、単一の"/etc/network/interfaces"ファイルを次に示すように作ります:

auto lo
iface lo inet loopback

iface config1 inet dhcp
 hostname "mymachine"

iface config2 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 broadcast 192.168.11.255
 gateway 192.168.11.1
 dns-domain lan
 dns-nameservers 192.168.11.1

iface pppoe inet manual
 pre-up /sbin/ifconfig eth0 up
 up ifup ppp0=dsl
 down ifdown ppp0=dsl
 post-down /sbin/ifconfig eth0 down

# The following is used internally only
iface dsl inet ppp
 provider dsl-provider

iface pots inet ppp
 provider provider

ifaceの後に文言であるネットワーク設定名に、ネットワークインターフェース名にの文言を使っていないことに注目下さい。また、何らかのイベントの際にネットワークインターフェースeth0を自動的に起動するautoスタンザもallow-hotplugスタンザもありません。

さあ、ネットワーク設定を切り替える準備完了です。

あなたのPCをDHCPが提供されるLANに移動しましょう。ネットワークインターフェース(物理インターフェース)eth0ネットワーク設定名(論理インターフェース名)config1を付与してそれを起動します:

$ sudo ifup eth0=config1
Password:
...

インターフェースeth0が起動され、DHCPで設定され、LANに接続されます。

$ sudo ifdown eth0=config1
...

インターフェースeth0が停止され、LANから切断されます。

あなたのPCを静的IPが提供されるLANに移動しましょう。ネットワークインターフェース(物理インターフェース)eth0ネットワーク設定名(論理インターフェース名)config2を付与してそれを起動します:

$ sudo ifup eth0=config2
...

インターフェースeth0が起動され、静的IPで設定され、LANに接続されます。dns-*で与えられる追加パラメータが"/etc/resolv.conf"の内容を設定します。この"/etc/resolv.conf"はresolvconfパッケージがインストールされている方がうまく管理されます。

$ sudo ifdown eth0=config2
...

インターフェースeth0が停止され、LANから再度切断されます。

あなたのPCをPPPoEが提供されているサービスに繋がっているBBモデムのポートに移動しましょう。ネットワークインターフェースeth0ネットワーク設定pppoeを付与してそれを起動します:

$ sudo ifup eth0=pppoe
...

インターフェースeth0が起動され、ISPに直接接続されたPPPoEで設定されます。

$ sudo ifdown eth0=pppoe
...

インターフェースeth0が停止され再切断されます。

あなたのPCをLANやBBモデムのないPOTSとモデムを使っている場所に移動しましょう。ネットワークインターフェースppp0ネットワーク設定potsを付与してそれを起動します:

$ sudo ifup ppp0=pots
...

インターフェースppp0が起動され、PPPを使ってインターネットに接続されます。

$ sudo ifdown ppp0=pots
...

インターフェースppp0が停止され再切断されます。

ifupdownシステムのネットワーク設定状態の現状は"/etc/network/run/ifstate"ファイルの内容で確認しましょう。

[警告] 警告

複数のネットワークインターフェースがある場合には、eth*ppp*等の最後の数字を調整する必要があります。

5.4.7. ifupdownシステムを使うスクリプト

ifupdownシステムはスクリプトに環境変数を引き渡して"/etc/network/*/"中にインストールされたスクリプトを自動実行します:

表5.14 ifupdownシステムが引き渡す環境変数のリスト。

環境変数 引き渡す変数値
"$IFACE" 処理対象のインターフェースの物理名(インターフェース名)
"$LOGICAL" 処理対象のインターフェースの論理名(設定名)
"$ADDRFAM" インターフェースの<address_family>
"$METHOD" インターフェースの<method_name>。(例えば"static")
"$MODE" ifupから実行されると"start"、ifdownから実行されると"stop" 。
"$PHASE" "$MODE"と同じ、ただしpre-uppost-uppre-downpost-down段階の区別を細かくします。
"$VERBOSITY" "--verbose"使用の指標; 使用されたら1、使用されなかったら0。
"$PATH" コマンドサーチパス: "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
"$IF_<OPTION>" ifaceスタンザ下の対応するオプションの値。

各環境変数"$IF_<OPTION>"は、対応する<option1>や<option2>オプションの名前に"$IF_"を付け、大文字に変換し、ハイホンを下線に変換し、英数字文字以外を捨てて作成されます。

[ティップ] ティップ

<address_family>や<method_name>や<option1>や<option2>に関しては「"/etc/network/interfaces"の基本的なシンタックス」を参照下さい。

ifupdown-extraパッケージ(「ifupdown-extraパッケージ」参照)はこのような環境変数を使ってifupdownパッケージの機能拡張をします。ifmetricパッケージ(「ifmetricパッケージ」参照)は"$IF_METRIC"変数を通してメトリック値を設定する"/etc/network/if-up.d/ifmetric"スクリプトをインストールします。ネットワーク設定の自動選択の簡単で強力な枠組みを提供しているguessnetパッケージ(「guessnetを使うmapping」参照)もまたこれらを使います。

[注意] 注意

これらの環境変数を使うネットワーク設定スクリプトのより具体的な例に関しては、"/usr/share/doc/ifupdown/examples/*"中の例示スクリプトやifschemeifupdown-scripts-zg2パッケージで使われているスクリプトを確認して下さい。このような追加スクリプトは基本的なifupdown-extraguessnetパッケージと機能の重複があります。このような追加スクリプトをインストールしたら、干渉しないようにこのようなスクリプトをカスタマイズするべきです。

5.4.8. guessnetを使うmapping

「手動切り替え可能なネットワーク設定」に記述されたように手動で設定選択する代わりに、「mappingスタンザ」に記述されたmappingメカニズムをつかってカスタムスクリプトでネットワーク設定を自動的に選択できます。

guessnetパッケージにより提供されるguessnet-ifupdown(8)コマンドはmappingスクリプトとして使われるように設計されてい、ifupdownシステムを拡張する強力な枠組みを提供します。

  • ifaceスタンザの下の各ネットワーク設定毎にguessnetオプションの値としてテスト条件をリストします。
  • mappingは最初のエラーを返さないifaceをネットワーク設定として選択します。

guessnetオプションはifupdownシステムにより実行されるスクリプトに追加の環境変数をエクスポートするだけなので、"/etc/network/interfaces"ファイルをmappingスクリプトとguessnet-ifupdownとオリジナルのネットワーク設定インフラであるifupdownとで重複して利用することで特に支障は起こりません。詳細はguessnet-ifupdown(8)を参照下さい。

[注意] 注意

"/etc/network/interfaces"中に複数のguessnetオプション行が必要な時には、オプション行の開始文字列重複をifupdownパッケージは許さないので、guessnet1guessnet2等で始まるオプション行を使いましょう。

5.5. デスクトップのためのネットワーク設定

5.5.1. GUIのネットワーク設定ツール

GNOMEのような各デスクトップ環境が提供するデフォルトのGUIのネットワーク設定ツールの能力は静的IPやDHCPのような基本設定に限られています。あなたが見ていないところで"/etc/network/interfaces"ファイルの内容を上書きしています。自分自身で実際どのように"/etc/network/interfaces"ファイルが書き換えられているか確認して下さい。

[注意] 注意

それらは手動でされた"/etc/network/interfaces"ファイルへの複雑な上級の設定を理解しないかもしれません。

5.5.2. 自動ネットワーク設定

ifupdownパッケージと独立なデーモンを通してネットワーク接続を管理する、NetworkManager (NM) (network-managerと関連パッケージ)や、Wicd (wicdパッケージ) 等の、独立の自動ネットワーク設定ツールがあります。これらによってワイアレス接続が簡単にできます。これらには洒落たGUIユーザインターフェースが付いてきます。

[警告] 警告

サーバーにはこの様な自動ネットワーク設定を使わないで下さい。これらはラップトップ上のモービルデスクトップを主対象としています。

[警告] 警告

これらの自動ネットワーク設定ツールは動く標的で、ここに書かれている事はsqueezeでは正しくないかもしれません。お気をつけ下さい。

[注意] 注意

こういった自動ネットワーク設定は、「ifupdownを使った基本的なネットワーク設定」「ifupdownを使う上級ネットワーク設定」のような"/etc/network/interfaces"への凝ったifupdown設定と互換性がないかも知れません。lennyでは、「DHCPサービスを受けるネットワークインターフェース」に書かれたようなDHCPでコントロールされているインターフェースに"hostname"スタンザがあることだけでNMがそのインターフェースを無視するようになってしまいます。最新の問題や制約条件に関してはnetwork-managerのBTSwicdのBTSを参照下さい。

NMの設定は"/usr/share/doc/network-manager/README.Debian"に記されています。その要点は:

  1. 次のようにして、例えばfooというデスクトップユーザを"netdev"グループに属するようにします:

    $ sudo adduser foo netdev
  2. "/etc/network/interfaces"の設定を次のようにできるだけ簡単にします:

    auto lo
    iface lo inet loopback
    
    auto eth0
    iface eth0 inet dhcp
  3. NMを次のようにして再起動します:

    $ sudo /etc/init.d/network-manager restart
[注意] 注意

ifupdownとの干渉を避けるために、"/etc/network/interfaces"にリストされてないインターフェースか、"auto …"または"allow-hotplug …"を使いかつ(他のオプション無しで)"iface … inet dhcp"を使って設定されているインターフェースのみがNMによって管理されます。

Wicdの設定は、"/usr/share/doc/wicd/README.Debian"に記されています。その要点は:

  1. "/etc/network/interfaces"中の設定を次のようにだけとします:

    auto lo
    iface lo inet loopback
  2. Wicdを再起動します。

    $ sudo /etc/init.d/wicd restart

5.6. 低レベルネットワーク設定

5.6.1. Iproute2コマンド

Iproute2コマンドは完全な低レベルネットワーク設定機能を提供します。型遅れとなったnet-toolsコマンドと新しいiproute2コマンド等との翻訳表を次に示します。

表5.15 型遅れとなったnet-toolsコマンドと新しいiproute2コマンド等との翻訳表。

型遅れのnet-tools 新しいiproute2等 操作
ifconfig(8) ip addr デバイスのプロトコル (IPまたはIPv6)アドレス
route(8) ip route ルーティングテーブル
arp(8) ip neigh ARPまたはNDISCキャッシュ項目
ipmaddr ip maddr マルチキャストアドレス
iptunnel ip tunnel IP経由トンネル
nameif(8) ifrename(8) MACアドレスに基づきネットワークインターフェースを命名
mii-tool(8) ethtool(8) イーサーネットデバイスの設定。

ip(8)とIPROUTE2 Utility Suite Howtoを参照下さい。

5.6.2. 安全な低レベルネットワーク操作

次の低レベルネットワークコマンドは、ネットワーク設定を変更しないので安全に使えます。

表5.16 低レベルネットワークコマンドのリスト。

コマンド 説明
ifconfig 有効インターフェースのリンクとアドレスの状態を表示
ip addr show 有効インターフェースのリンクとアドレスの状態を表示
route -n 数字を使ったアドレスで全てのルーティングテーブルを表示
ip route show 数字を使ったアドレスで全てのルーティングテーブルを表示
arp ARPキャッシュテーブルの現状の内容を表示
ip neigh ARPキャッシュテーブルの現状の内容を表示
plog pppデーモンのログを表示
ping yahoo.com "yahoo.com"までのインターネット接続の確認
whois yahoo.com ドメインデータベースに"yahoo.com"を誰が登録したかを確認
traceroute yahoo.com "yahoo.com"までのインターネット接続の追跡
tracepath yahoo.com "yahoo.com"までのインターネット接続の追跡
mtr yahoo.com "yahoo.com"までのインターネット接続の追跡(繰り返し)
dig [@dns-server.com] example.com [{a|mx|any}] "example.com"のDNSレコードを"dns-server.com"で"a"か"mx"か"any"かのレコードに関して確認します。
iptables -L -n パケットフィルタの確認
netstat -a オープンポートの発見
netstat -l --inet 聴取中のポートの発見
netstat -ln --tcp 聴取中のTCPポートの発見(数字)
dlint example.com "examle.org"のDNSゾーン情報を確認

[ティップ] ティップ

これらの低レベルネットワーク設定ツールは"/sbin/"中にあります。"/sbin/ifconfig"等のような完全コマンドパスを使うか、 "~/.bashrc"中の"$PATH"リストに"/sbin"を追加する必要があるかもしれません。

5.7. ネットワークの最適化

一般的なネットワークの最適化は本書の射程外です。ここでは消費者用の接続に関する課題にのみ触れます。

表5.17 ネットワーク最適化ツールのリスト。

パッケージ popcon サイズ 説明
iftop V:1.0, I:6 108 ネットワークインターフェースの帯域利用情報を表示
iperf V:0.4, I:2 208 インターネットプロトコルのバンド幅測定ツール
apt-spy V:0.2, I:1.6 204 バンド幅テストに基づき"/etc/apt/sources.list"ファイルを作成します。
ifstat V:0.2, I:1.0 88 インターフェース統計モニタ
bmon V:0.2, I:0.8 188 可搬型バンド幅モニタ兼速度推定機
ethstatus V:0.12, I:0.8 84 ネットワークデバイスのスループットを迅速に測定するスクリプト
bing V:0.11, I:0.7 96 経験則的確率バンド幅試験機
bwm-ng V:0.2, I:0.9 152 簡単軽量のコンソール式のバンド幅モニタ
ethstats V:0.06, I:0.3 52 コンソール式のイーサーネット統計モニタ
ipfm V:0.04, I:0.15 156 帯域分析ツール

5.7.1. 最適MTUの発見

最大送信単位(MTU)値は、ping(8)を"-M do"オプションとともに使ってICMPパケットをデータサイズ1500(IP+ICMPヘッダー分の28バイトを加えて)から始めてIPフラグメンテーションしない最大サイズを見つけることで実験的に決定できます。例えば:

$ ping -c 1 -s $((1500-28)) -M do www.debian.org
PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)

--- www.debian.org ping statistics ---
0 packets transmitted, 0 received, +1 errors
  • …1500ではなく1452を試しましょう
  • ping(8)が成功します

このプロセスはパスMTU (PMTU)発見 (RFC1191)で、tracepath(8)コマンドで自動化できます。

[ティップ] ティップ

PMTU値が1454となる上記例はAsynchronous Transfer Mode (ATM)をバックボーンネットワークとして使い顧客をPPPoEでサービスしていたFTTPプロバイダーの場合でした。実際のPMTU値はあなたの環境に依存します。例えば私の新しいFTTPプロバイダーの場合は1500です。

表5.18 最適MTU値の基本的なガイドライン

ネットワーク環境 MTU 理由
ダイヤルアップ接続(IP: PPP) 576 標準
イーサーネット接続(IP: DHCPまたは固定) 1500 標準かつデフォルト
イーサーネット接続(IP: PPPoE) 1492 (=1500-8) PPPヘッダーに2バイト、PPPoEヘッダーに6バイト、
イーサーネット接続(ISPのバックボーン: ATM、IP: DHCPまたは固定) 1462 (=48*31-18-8) 著者推定: イーサーネットヘッダーに18、SAR末尾に8
イーサーネット接続(ISPのバックボーン: ATM、IP: PPPoE) 1454 (=48*31-8-18-8) 根拠は"Optimal MTU configuration for PPPoE ADSL Connections"を参照下さい。

これらの基本的なガイドラインに加えて、次を覚えておきましょう:

  • 何らかのトンネル手法(VPN等)を使うと、それらのオーバーヘッドのために最適MTUを更に減らすかもしれません。
  • MTU値は実験的に決定されるPMTU値を越すべきではありません。
  • もし他の制約条件を満たすなら、MTU値は一般的に大きい方がいいです。

5.7.2. MTUの設定

MTU値をそのデフォルトの1500から1454に設定する例を次に示します。

DHCP(「DHCPサービスを受けるネットワークインターフェース」参照)の場合、"/etc/network/interfaces"中の該当するifaceスタンザ行を次と交換する事ができます。例えば:

iface eth0 inet dhcp
 hostname "mymachine"
 pre-up /sbin/ifconfig $IFACE mtu 1454

静的IP(「静的IPを使うネットワークインターフェース」参照)の場合、"/etc/network/interfaces"中の該当するifaceスタンザ行を次と交換する事ができます。例えば:

iface eth0 inet static
 address 192.168.11.100
 netmask 255.255.255.0
 broadcast 192.168.11.255
 gateway 192.168.11.1
 mtu 1454
 dns-domain lan
 dns-nameservers 192.168.11.1

直接のPPPoE(「pppoeconfを使ったPPPoE接続」参照)の場合、"/etc/ppp/peers/dsl-provider"中の該当する"mtu"行を次と交換する事ができます:

mtu 1454

最大セグメントサイズ(MSS)はパケットサイズの代替尺度として使われます。MSSとMTUの関係は次です:

  • IPv4ではMSS = MTU - 40
  • IPv6ではMSS = MTU - 60
[注意] 注意

iptables(8)(「Netfilter」参照)を使う最適化はMSSを使ってパッケットサイズを制約できるのでルーターとして有用です。

5.7.3. WAN TCPの最適化

現代的な高帯域でレイテンシーの大きなWANでは、TCPのスループットはTCPバッファーサイズパラメータを"TCP Tuning Guide"や"TCP tuning"に書かれている手順で調整することで最大化できます。今のところ現在のDebianのデフォルトは高速の1G bpsのFTTPサービスでつながっている私のLANでも十分機能しています。

5.8. Netfilter

NetfilterLinuxカーネルのモジュール(「カーネルモジュール初期化」参照)を利用するステートフルファイアーウォールネットワークアドレス変換(NAT) のインフラを提供します。

表5.19 ファイアーウォールツールのリスト。

パッケージ popcon サイズ 説明
iptables V:25, I:99 1368 netfilterのための管理ツール
iptstate V:0.15, I:0.9 156 netfilterの状態を常時モニタするツール。(top(1)と似ています)
shorewall-perl V:0.16, I:0.4 608 Shorelineファイアーウォールnetfilter設定ファイル生成システム(Perlベース、lennyで推薦)
shorewall-shell I:1.6 348 Shorelineファイアーウォールnetfilter設定ファイル生成システム(シェルベース、lennyでの代替)
ipmasq V:0.2, I:0.5 612 netfilterを設定するinitスクリプトの簡単な組み合わせ(古い)

netfilterのユーザスペースの主プログラムはiptables(8)です。シェルから対話形式で手動でnetfilterを設定し、その状態をiptables-save(8)で保存し、iptables-restore(8)を使ってinitスクリプト経由でシステムのリブート時に回復できます。

shorewallのような設定ヘルパースクリプトはこの過程を簡単にします。

http://www.netfilter.org/documentation/ (または"/usr/share/doc/iptables/html/"中)の文書を参照下さい:

[ティップ] ティップ

これらはLinux 2.4のために書かれたとはいえ、iptables(8)コマンドもnetfilterカーネル機能も現在のLinux 2.6にもあてはまります。