ハンドブック:パート/ネットワーク/モジュラー

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:Parts/Networking/Modular and the translation is 100% complete.
Parts ハンドブック
インストール
インストールについて
メディアの選択
ネットワーク設定
ディスクの準備
stage3のインストール
Gentooベースシステムのインストール
カーネルの設定
システムの設定
ツールのインストール
ブートローダの設定
締めくくり
Gentooの操作
Portageについて
USEフラグ
Portageの機能
Initスクリプトシステム
環境変数
Portageの操作
ファイルとディレクトリ
変数
ソフトウェアブランチの併用
追加ツール
カスタムPortageツリー
高度な機能
ネットワーク設定
はじめに
高度な設定
モジュール式ネットワーク
無線
機能の追加
動的な管理


ネットワークモジュール

現在の netifrc スクリプトはモジュール化されたネットワークスクリプトをサポートしています。つまり、既存のスクリプトとの互換性を保ちつつ、新しいインターフェースタイプのサポートと設定モジュールを簡単に追加することができます。

モジュールは、それらが必要とするパッケージがインストールされていれば、デフォルトでロードされます。必要なパッケージがインストールされていないモジュールを指定した場合、インストールする必要のあるパッケージを示すエラーが報告されます。理想的には、同様のサービスを提供する 2 個以上のパッケージがインストールされていて、そのうち一方を選択したい場合にのみ、モジュール設定が使用されます。

Note
ここで説明されるすべての設定は、特に指定が無い限り /etc/conf.d/net に保存されるものです。
FILE /etc/conf.d/netモジュール定義
# iproute2 より ifconfig を優先します
modules="ifconfig"
  
# インターフェースごとに異なるモジュールを指定できます
# ここでは dhcpcd より pump を優先します
modules_eth0="pump"
  
# 使用したくないモジュールを指定することもできます - 例えば無線の設定の
# 管理に supplicant あるいは linux-wlan-ng を使用しているが、それでも
# 接続している ESSID ごとにネットワーク設定を管理したい。
modules="!iwconfig"

インターフェース・ハンドラー

現在のところ、私たちは 2 種類のインターフェースハンドラを提供しています: ifconfig と iproute2 です。一方のみがあれば、すべてのネットワーク設定を行うことができます。

どちらもシステムプロファイルの一部として、デフォルトでインストールされます。iproute2 のほうが強力で、柔軟な設定が行えるパッケージです。

FILE /etc/conf.d/netiproute2 がインストールされているが ifconfig を優先する場合
# openrc は iproute2 を優先するので、ifconfig と iproute2 の両方が
# インストールされている場合に iproute2 より ifconfig を優先するには
modules="ifconfig"

ifconfig と iproute2 は非常に似たことを行うものなので、基本的な設定はどちらに対しても動作するようになっています。例えば、下のコード片はどちらのモジュールを使用しているかにかかわらず動作します。

FILE /etc/conf.d/net設定に対する異なるアプローチの例
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"
  
# ブロードキャストを指定することもできます
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"

DHCP

DHCP は、DHCP サーバからネットワーク情報 (IP アドレス、DNS サーバ、ゲートウェイ等) を取得するための方法です。つまり、ネットワーク上に動作している DHCP サーバが存在すれば、ユーザはそれぞれのクライアントに DHCP を使うことを指示するだけで、ネットワークを自動でセットアップするとができます。もちろん、無線や PPP 等が必要であれば、DHCP が使えるようになる前に設定する必要があるでしょう。

DHCP の機能は dhclient、dhcpcd、または pump によって提供されます。DHCP モジュールのそれぞれに長所と短所があります。以下に概略を示します:

DHCP モジュール パッケージ 長所 短所
dhclient net-misc/dhcp BIND DNS ソフトウェアを作成している ISC によって作成されている。非常に柔軟な設定が可能 設定が過剰に複雑、ソフトウェアはかなり肥大化している、DHCP から NTP サーバを取得できない、デフォルトではホスト名を送信しない
dhcpcd net-misc/dhcpcd 長きにわたり Gentoo のデフォルト、外部ツールへの依存が無い、Gentoo により活発に開発されている たまに遅いことがある、リース期間が無限の場合にデーモン化しない
pump net-misc/pump 軽量、外部ツールへの依存が無い 上流によって保守されていない、特にモデムを介する際に信頼できない、DHCP から NIS サーバを取得できない

複数の DHCP クライアントがインストールされている場合はどれを使うか指定してください。指定しない場合、利用可能であれば dhcpcd がデフォルトとして選択されます。

DHCP モジュールに特定のオプションを送信するには、module_eth0="..." を使用してください (module の部分を使用したい DHCP モジュールに変更してください、例えば dhcpcd_eth0 のように)。

私たちは DHCP を比較的特定のソフトウェアに依存しないようにしています。dhcp_eth0 変数を使用した次のコマンドをサポートしています。デフォルトではこれらはどれも設定されません:

release
IP アドレスが再利用できるように解放します。
nodns
/etc/resolv.conf を上書きしません。
nontp
/etc/ntp.conf を上書きしません。
nonis
/etc/yp.conf を上書きしません。
FILE /etc/conf.d/netDHCP 設定例
# 複数の DHCP モジュールがインストールされている場合のみ必要
modules="dhcpcd"
  
config_eth0="dhcp"
dhcpcd_eth0="-t 10" # 10 秒後にタイムアウト
dhcp_eth0="release nodns nontp nonis" # アドレス取得だけ行う
Note
dhcpcdpump はデフォルトで現在のホスト名を DHCP サーバに送信するので、もうこれを指定する必要はありません。

PPPoE/PPPoA を使用した ADSL

まずは ADSL ソフトウェアのインストールが必要です:

root #emerge --ask net-dialup/ppp

次に、PPP net スクリプトと、PPP が使用する Ethernet インターフェースのための net スクリプトを作成してください:

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

/etc/rc.confrc_depend_strictYES に設定しているか確認してください。

そして /etc/conf.d/net を設定することが必要です。

FILE /etc/conf.d/net基本的な PPPoE 設定
config_eth0=null (Specify the ethernet interface)
config_ppp0="ppp"
link_ppp0="eth0" (Specify the ethernet interface)
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"
  
rc_need_ppp0_need="net.eth0"

また、 /etc/ppp/pap-secrets 内にパスワードを記載することもできます。

FILE /etc/ppp/pap-secretspap-secrets の例
# 以下の「*」は必要です。
"username"  *  "password"

PPPoE を USB モデムとともに使用する場合は、br2684ctl を emerge しているか確認してください。適切に設定する方法についての情報は /var/db/repos/gentoo/net-dialup/speedtouch-usb/files/README をお読みください。

Important
/usr/share/doc/netifrc-*/net.example.bz2 の ADSL と PPP についてのセクションをよく読んでください。ここには一部の PPP 構成で必要になりそうなすべての設定について、より詳しい説明が多く書かれています。

APIPA (Automatic Private IP Addressing)

APIPA は、インターフェースから 169.254.0.0-169.254.255.255 の範囲内のランダムなアドレスを arp することで、範囲内の使用されていないアドレスを探します。応答が無かった場合、そのアドレスをインターフェースに割り当てます。

これは DHCP サーバが無く、システムがインターネットに直接接続せず、他のすべてのコンピュータが APIPA を使う LAN に対してのみ有用です。

APIPA サポートを追加するには、arping USE フラグを有効化して net-misc/iputils を emerge するか、net-analyzer/arping を emerge してください。

FILE /etc/conf.d/netAPIPA 設定
# まず DHCP を試し、失敗した場合は APIPA にフォールバックする
config_eth0="dhcp"
fallback_eth0="apipa"
  
# APIPA だけを使う
config_eth0="apipa"

ボンディング

ボンディングは、ネットワーク帯域を増やすためや、ハードウェア故障時の回復力を改善するために使用されます。システムに同一のネットワークに接続する 2 個のネットワークカードが存在するとき、管理者はこれらをくっつけて (bond)、アプリケーションには 1 個のインターフェースとして見せつつ、実際には両方のネットワークカードを使用させることができます。

ボンディングを構成する方法は複数あります。そのうちの一部、例えば 802.3ad LACP モードなどは、専用のサポートやネットワークスイッチの追加の構成が必要になります。それぞれの選択肢のリファレンスについては、/usr/src/linux/Documentation/networking/bonding.txt のローカルコピーを参照してください。

まず、ボンディングに参加するインターフェースの設定をクリアしてください:

FILE /etc/conf.d/netインターフェースの設定をクリアする
config_eth0="null"
config_eth1="null"
config_eth2="null"

次に、インターフェース間のボンディングを定義してください:

FILE /etc/conf.d/netボンディングを定義する
slaves_bond0="eth0 eth1 eth2"
config_bond0="192.168.100.4/24"
# 要求に合った、正しいモードと追加の構成オプションを選択してください
mode_bond0="balance-alb"

ランレベルから net.eth* サービスを削除し、net.bond0 サービスを作成して、これを適切なランレベルに追加してください。

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

ブリッジはネットワークを相互接続するのに使用されます。例えば、システムが ADSL モデム経由でインターネットに接続するサーバと、他のコンピュータがその ADSL モデム経由でインターネットに接続できるようにするための、無線アクセスカードを持っているとします。ブリッジを作成することで、2 個のインターフェースを相互接続することができます。

FILE /etc/conf.d/netブリッジの設定
# ブリッジを構成します - 詳細は "man brctl" を確認してください
bridge_forward_delay_br0=0
bridge_hello_time_br0=200
bridge_stp_state_br0=1
  
# ブリッジ br0 にポートを追加する
bridge_br0="eth0 eth1"
  
# dhcp が開始しないように、元のポートを null 値に設定する必要があります
config_eth0="null"
config_eth1="null"
  
# 最後にブリッジにアドレスを割り当てます - DHCP を使用することもできます
config_br0="192.168.0.1/24"
  
# 追加の構成が必要かもしれないので、eth0 と eth1 に依存させます
rc_net_br0_need="net.eth0 net.eth1"
Important
ブリッジ構成を使用するために、上の変数名のドキュメントを確認してください。
Important
IPv6 を使ってブリッジを構成する場合、SLAAC によって、上の例で見られるように STP を 1 に設定することが要求されます。

MAC アドレス

ネットワーク設定ファイルを通して、インターフェースの MAC アドレスを変更することもできます。

FILE /etc/conf.d/netMAC アドレス変更の例
# インターフェースの 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"

トンネリング

トンネリングは、インターフェースハンドラによって行うことができるので、ソフトウェアを追加でインストールする必要はありません。

FILE /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"

VLAN (802.1q サポート)

VLAN のサポートのためには、sys-apps/iproute2 がインストールされていることと、ifconfig ではなく iproute2 が構成モジュールとして使用されていることを確認してください。

仮想 LAN とは、物理的な実態に関わらず、それぞれ個別のネットワークセグメントに接続されているかのように振る舞うネットワークデバイス群です。VLAN のメンバは、仮に同一の物理ネットワークを共有していたとしても、同一の VLAN の参加ノードとのみ通信できます。

VLAN を構成するには、まず次のように /etc/conf.d/net で VLAN 番号を指定してください:

FILE /etc/conf.d/netVLAN 番号を指定する
vlans_eth0="1 2"

次に、各 VLAN に対するインターフェースを構成してください:

FILE /etc/conf.d/net各 VLAN のインターフェース設定
config_eth0_1="172.16.3.1 netmask 255.255.254.0"
routes_eth0_1="default via 172.16.3.254"
  
config_eth0_2="172.16.2.1 netmask 255.255.254.0"
routes_eth0_2="default via 172.16.2.254"

VLAN 固有の設定は次のようにすることで、vconfig によって処理されます:

FILE /etc/conf.d/netVLAN を設定する
vlan1_name="vlan1"
vlan1_ingress="2:6 3:5"
eth0_vlan1_egress="1:2"
Important
VLAN 構成を使用するために、上の変数名のドキュメントを確認してください。