Gentoo Logo

1.  ネットワークモジュール

現在、モジュール構造のネットワーク接続スクリプトをサポートしています。 これにより、既存のものと互換性を保ちながら、新しいインタフェースの種類や設定モジュールのサポートを簡単に追加できます。

モジュールが必要とするパッケージがインストールされていれば、モジュールはデフォルトでロードされます。 ここでまだインストールされていないパッケージのモジュールを指定すると、インストールする必要があるパッケージがあることを示すエラーとなります。 理想は、同一サービスを提供する二つ以上のパッケージをインストール済みで、その中の一つを選ぶ必要があるときにだけモジュール設定を使用することです。

注意: ここで紹介したすべての設定は、他に規定がなければ、/etc/conf.d/netに書かれています。

コード表示 1.1: モジュール選択

# ifconfigではなくiproute2を選択
modules=( "iproute2" )

# 特定のインタフェースに対し別のモジュールも指定できます
# ここではdhcpcdではなくpumpを選択しています
modules_eth0=( "pump" )

# 使用しないモジュールの指定もできます - 例えば無線LANの設定を制御するために、
# supplicantもしくはlinux-wlan-ngを使用しているかもしれません。
# にもかかわらず、接続するESSIDごとにネットワーク設定を指定したい場合

modules=( "!iwconfig" )

1.  インタフェースハンドラ

現在、ifconfigiproute2の二つのインタフェースハンドラを提供しています。 ネットワークの設定のどんなことをするのにも、これらのうちの一つが必要です。

ifconfigは、今のGentooのデフォルトであり、システムプロファイルに含まれています。iproute2は、より強力で柔軟なパッケージですが、デフォルトでは含まれていません。

コード表示 1.1: iproute2をインストールする

# emerge sys-apps/iproute2

# 両方がインストールされている場合、ifconfigではなくiproute2を選択する
modules=( "iproute2" )

ifconfigiproute2もどちらもよく似たことをするので、基本設定を相互に動作するようにできます。 例えば、以下の抜粋コードのどちらも、どちらを使用しているかに関係なく動作します。

コード表示 1.1: ifconfigとiproute2の例

config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# broadcastの指定も可能
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

1.  DHCP

DHCPは、DHCPサーバからネットワーク情報(IPアドレス、DNSサーバ、ゲートウェイ、その他)を取得する手段です。 これは、ネットワーク上で稼動中のDHCPサーバが存在する場合、DHCPを使うことを各クライアントに指示する必要があり、それが自動的にネットワークを設定するということを意味します。 もちろん、DHCPを使えるようになる前に、必要なら無線やPPPなど、他の設定をする必要はあります。

DHCPの機能は、dhclientdhcpcd または pumpによって提供されます。 各DHCPモジュールには、長所と短所があります。以下にざっと紹介します。

DHCPモジュール パッケージ 長所 短所
dhclient net-misc/dhcp BIND DNSソフトウェアを作成しているISCによって作成されています。 設定項目が豊富 設定が極めて複雑で、ソフトウェアは非常に大きくなり過ぎており、DHCPからNTPサーバの情報を得ることはできず、デフォルト設定ではホスト名を送信しません
dhcpcd net-misc/dhcpcd 長い間Gentooではデフォルトであり、外部のツールに依存せず、Gentooで積極的に開発されています たまに遅くなることがあり、与えられたIPアドレスなどの貸与期間に制限がない場合は、今のところデーモン化されません
pump net-misc/pump 軽量、外部ツールへの依存なし 性能向上のためには維持されておらず、信頼性が低く、特にモデム経由の場合に信頼性が低く、DHCPからNISサーバの情報を取得できません

二つ以上のDHCPクライアントがインストールされている場合、どれを使用するかを指定する必要があります - そうしないと可能ならdhcpcdをデフォルトにします。

DHCPモジュールに特定のオプションを与えるために、module_eth0="..."を使用してください。 (使用中のDHCPモジュールにmoduleを付け替えてください - たとえばdhcpcd_eth0)

DHCPの相互運用性の向上に勤めています - その一環としてdhcp_eth0変数を使用して以下のコマンドをサポートします。デフォルト設定ではこれらのどれも設定されていません。

  • release - 再利用できるようにIPアドレスを解放します
  • nodns - /etc/resolv.confを書き換えません
  • nontp - /etc/ntp.confを書き換えません
  • nonis - /etc/yp.confを書き換えません

コード表示 1.1: /etc/conf.d/netでのDHCP設定の例

# 二つ以上のDHCPモジュールがインストールされている場合にだけ必要です
modules=( "dhcpcd" ) 

config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10" # 10秒後にタイムアウトします
dhcp_eth0="release nodns nontp nonis" # アドレスのみ取得します

注意: dhcpcdpumpは、デフォルトで現在のホスト名をDHCPサーバに送信します。 よって、これに関して何も指定する必要はありません。

1.  PPPoE/PPPoAによるADSL

最初に、ADSLソフトウェアをインストールする必要があります。

コード表示 1.1: pppパッケージのインストール

# emerge net-dialup/ppp

注意: もしPPPoAが必要なら、必ず>=baselayout-1.12.xを使用してください。

次に、PPPで使われるPPPネットスクリプトとイーサネットインタフェースのためのネットスクリプトを生成します。

コード表示 1.1: PPPとイーサネットのスクリプトの生成

# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
# ln -s /etc/init.d/net.lo /etc/init.d/net.eth0

必ず/etc/conf.d/rcでRC_NET_STRICT_CHECKING="yes"を設定してください。

ここで、/etc/conf.d/netの設定をする必要があります。

コード表示 1.1: 基本的なPPPoEの設定

config_eth0=( null ) (あなたのイーサネットインタフェースを記述してください)
config_ppp0=( "ppp" )
link_ppp0="eth0" (あなたのイーサネットインタフェースを記述してください)
plugins_ppp0=( "pppoe" )
username_ppp0='user'
password_ppp0='password'
pppd_ppp0=(
       "noauth"
       "defaultroute"
       "usepeerdns"
       "holdoff 3"
       "child-timeout 60"
       "lcp-echo-interval 15"
       "lcp-echo-failure 3"
       noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp
)

depend_ppp0() {
    need net.eth0
}

コード表示 1.1: /etc/ppp/pap-secretsの例

# *(アスタリスク)は重要です
"username"  *  "password"

もしUSBモデムによるPPPoEを使用しているなら、br2684ctlをemergeする必要があるでしょう。 これについての適切な設定方法は、/usr/portage/net-dialup/speedtouch-usb/files/READMEを読んでください。

重要: /etc/conf.d/net.exampleのADSLとPPPの章を注意深く読んでください。 個々のPPPの設定で必要になりそうなすべての設定方法について、より詳細な説明が多く含まれています。

1.  APIPA (Automatic Private IP Addressing)~自動プライベートIPアドレス割当て機能

APIPAは、インタフェースに169.254.0.0-169.254.255.255の範囲のアドレスに無作為にARPメッセージを送信することによって、空きアドレスを探します。 応答のないものがあった場合、そのアドレスをインタフェースに割り当てます。

DHCPサーバが存在せず、かつ直接インターネットに接続せず、かつ他の全てのコンピュータがAPIPAを使用しているプライベートネットワークにだけ役に立ちます。

APIPAをサポートするために、emerge net-misc/iputilsまたは、net-analyzer/arpingをしてください。

コード表示 1.1: /etc/conf.d/netでのAPIPA設定

# 最初にDHCPを試します - 失敗したら代替手段としてAPIPAを使用
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )

# APIPAだけを使用
config_eth0=( "apipa" )

1.  Bonding(インタフェースを束ねる)

bonding/trunkingをする(インタフェースを束ねる)には、emerge net-misc/ifenslaveをします。

bondingは、ネットワーク帯域を増やすために使われます。 もし一つのネットワークにしたい二つのネットワークカードがあるなら、それらを束ねることができます。 そうすると、アプリケーションには一つのインタフェースとして見えますが、実際は両方のネットワークカードが使用されます。

コード表示 1.1: /etc/conf.d/netでのbonding設定

# 二つのインタフェースを束ねる
slaves_bond0="eth0 eth1 eth2"

# 束ねられたインタフェースにIPアドレスを割り当てたくない場合もあります
config_bond0=( "null" )

# 別の設定が必要かもしれないのでeth0、eth1、eth2に依存します
depend_bond0() {
  need net.eth0 net.eth1 net.eth2
}

1.  ブリッジ (802.1dのサポート)

ブリッジをサポートするには、emerge net-misc/bridge-utilsをします。

ブリッジは、異なるネットワーク同士を繋げるために使用されます。 例えば、ADSLモデム経由でインターネットに接続していて、他のコンピュータをADSLモデム経由でインターネットに接続できるようにするための無線接続カードを持っているサーバがあるとします。 この場合、二つのインタフェースを相互に繋げるために、ブリッジを作成できます。

コード表示 1.1: /etc/conf.d/netでのブリッジ設定

# ブリッジ設定 - 詳細は"man brctl"を参照してください
brctl_br0=( "setfd 0" "sethello 0" "stp off" )

# ブリッジbr0にポートを追加します
bridge_br0="eth0 eth1"

# dhcpが開始しないようにするために、そのポートにはnullを設定する必要があります
config_eth0=( "null" )
config_eth1=( "null" )

# 最後にブリッジにアドレスを設定します - DHCPも使用できます
config_br0=( "192.168.0.1/24" )

# 別の設定が必要かもしれないのでeth0、eth1に依存します
depend_br0() {
  need net.eth0 net.eth1
}

重要: 複数のブリッジ設定を行う場合、(変数名)を参照してください。

1.  MACアドレス

sys-apps/baselayout-1.11.14かそれ以上を使用していて、特定のアドレスに変更したいなら、インタフェースのMACアドレスを変更するために何もemergeする必要はありません。 しかし、ランダムなMACアドレスに変更する必要があるか、上記のバージョンよりも古いbaselayoutを使用しているなら、この機能が有効になるにはemerge net-analyzer/macchangerをする必要があります。

コード表示 1.1: MACアドレスを変更する例

# インタフェースのMACアドレスを設定します
mac_eth0="00:11:22:33:44:55"

# 最後の3バイトだけランダムに設定します
mac_eth0="random-ending"

# ベンダ毎に、物理的に同じ種類別にランダムに設定します
# (例 ファイバ、銅線、無線)
mac_eth0="random-samekind"

# ベンダ毎に、物理的な種類を問わずランダムに設定します
# (例 ファイバ、銅線、無線)
mac_eth0="random-anykind"

# 完全にランダムに設定します - 警告: これによって生成される一部のMACアドレスには
# 期待したように動作しないものがあります
mac_eth0="random-full"

1.  トンネリング

トンネリングをするには、インタフェースハンドラで実現できるので、何もemergeする必要はありません。

コード表示 1.1: /etc/conf.d/netでのトンネリング設定

# GREトンネリング向け
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# IPIPトンネリング向け
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# 該当するインタフェースの設定
config_vpn0=( "192.168.0.2 peer 192.168.1.1" ) 

1.  VLAN (802.1qのサポート)

VLANをサポートするには、emerge net-misc/vconfigをします。

仮想LANは、たとえ別のセグメントであっても、あたかも単一のネットワークセグメントに接続されているように振舞うネットワークデバイスの集合です。 VLANに接続している機器には、たとえ物理的に同じネットワークを共有していても、同一のVLAN上の機器しか見えません。

コード表示 1.1: /etc/conf.d/netでのVLAN設定

# 次のようにインタフェースのVLAN番号を指定します
# VLANのIDは、前に0を付加しない形式です
vlans_eth0="1 2"

# もちろんVLANを設定することもできます
# 詳細はvconfigのmanページを参照してください
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# 通常のようにVLANインタフェースを設定します
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

重要: 複数のVLAN設定を行う場合、(変数名)を参照してください。

ページの更新日 2009年 2月 12日

このドキュメントのオリジナルバージョン の更新日は2011年 10月 23日

要約: Gentooは柔軟なネットワークの仕組みを提供します。 ここでは、異なるDHCPクライアントの選択方法や、ボンディング、ブリッジング、VLANなどの設定方法について説明します。

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.