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

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


ネットワークモジュール

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

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

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

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

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

どちらもシステムプロファイルの一部として、デフォルトでインストールされます。iproute2 のほうが強力で、柔軟な設定が行えるパッケージです。ifconfig と net-tools は、今はもうネットワーク構成のために使用すべきではありません。

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

ファイル /etc/conf.d/net設定に対する異なるアプローチの例
config_eth0="192.168.0.2/24"
config_eth0="192.168.0.2 netmask 255.255.255.0"

DHCP

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

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

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

複数の 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 を上書きしません。
ファイル /etc/conf.d/netDHCP (v4) 設定例
# 複数の DHCP モジュールがインストールされている場合のみ必要
modules="dhcpcd"
  
config_eth0="dhcp"
dhcpcd_eth0="-t 10" # 10 秒後にタイムアウト
dhcp_eth0="release nodns nontp nonis" # アドレス取得だけ行う
メモ
dhcpcd はデフォルトで現在のホスト名を DHCP サーバに送信するので、もうこれを指定する必要はありません。
ファイル /etc/conf.d/netDHCPv6 設定例
# 複数の DHCP モジュールがインストールされている場合のみ必要
modules="dhclient"
  
config_eth0="dhcpv6"
# デュアルスタックネットワーク上で DHCPv4 と DHCPv6 の両方を使用するには、上の行を削除して、以下の行のコメントを解除してください
#config_eth0="dhcp
#dhcpv6"

# DHCPv6 のために dhclient にランタイム引数を渡すには
dhclientv6_eth0="-t 10" # 10 秒後にタイムアウト

# 汎用 DHCPv6 オプションを設定する
dhcpv6_eth0="release nodns nontp nonis nogateway nosendhost"

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 を設定することが必要です。

ファイル /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 内にパスワードを記載することもできます。

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

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

重要
/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 してください。

ファイル /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 のローカルコピーを参照してください。

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

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

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

ファイル /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 個のインターフェースを相互接続することができます。

ファイル /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"
重要
ブリッジ構成を使用するために、上の変数名のドキュメントを確認してください。
重要
IPv6 を使ってブリッジを構成する場合、SLAAC によって、上の例で見られるように STP を 1 に設定することが要求されます。

MAC アドレス

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

ファイル /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"

トンネリング

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

ファイル /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 番号を指定してください:

ファイル /etc/conf.d/netVLAN 番号を指定する
vlans_eth0="1 2"

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

ファイル /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 によって処理されます:

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