ハンドブック:Alpha/ネットワーク/拡張

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


標準関数フック

開始/終了操作に関連して呼ばれる 4 個の関数を、/etc/conf.d/net で定義することができます。これらの関数は、ひとつの関数で複数のアダプタを制御できるように、まずインターフェース名とともに呼ばれます。

preup() および predown() 関数の戻り値は、インターフェースの構成または解除を続行できることを示すためには、0 (成功) であるべきです。もし preup() が 0 以外の値を返した場合は、インターフェースの構成は中止されます。もし predown() が 0 以外の値を返した場合は、インターフェースの構成解除の続行は許可されません。

postup() および postdown() 関数の戻り値は、それらが失敗を示してもすることが何も無いので、無視されます。

${IFACE} は、接続/切断されようとしているインターフェースに設定されます。${IFVAR} は bash が使用できる変数名に変換された ${IFACE} です。

FILE /etc/conf.d/netpre/post up/down 関数の例
preup() {
  # 有効化する前にインターフェースのリンク状態をテストします。これは
  # 一部のネットワークアダプタでのみ機能し、ethtool パッケージが
  # インストールされている必要があります。
  if ethtool ${IFACE} | grep -q 'Link detected: no'; then
    ewarn "No link on ${IFACE}, aborting configuration"
    return 1
  fi
  
  # 成功時には 0 を忘れずに返します
  return 0
}
  
predown() {
  # スクリプトのデフォルトでは NFS ルートであるかを確認し、その場合は
  # インターフェースの無効化を拒否します。predown() 関数を指定した場合、
  # このロジックが上書きされることに注意してください。このロジックを以下に
  # 示します。残したい場合は使ってください……。
  if is_net_fs /; then
    eerror "root filesystem is network mounted -- can't stop ${IFACE}"
    return 1
  fi
  
  # 成功時には 0 を忘れずに返します
  return 0
}
  
postup() {
  # この関数は例えば、動的 DNS サービスに登録するために使えます。
  # 他の可能性としては、インターフェースが有効化したときにメールを
  # 送受信することがあるでしょう。
       return 0
}
  
postdown() {
  # この関数はほぼ完全性のためだけにここに書いています……。何か気の利いた
  # ことをすることはまだ思い付きません ;-)
  return 0
}
Note
関数を書くためのさらなる情報いついては、/usr/share/doc/netifrc-*/net.example.bz2 をお読みください。

無線ツール関数フック

Note
これは WPA サプリカントとともには動作しないでしょう - しかし ${ESSID} および ${ESSIDVAR} 変数は postup() 関数で利用することができます。

アソシエーション機能に関連して呼ばれる 2 個の関数を、/etc/conf.d/net で定義することができます。これらの関数は、ひとつの関数で複数のアダプタを制御できるように、まずインターフェース名とともに呼ばれます。

preassociate() 関数の戻り値は、インターフェースの構成または解除を続行できることを示すためには、0 (成功) であるべきです。もし preassociate() が 0 以外の値を返した場合は、インターフェースの構成は中止されます。

postassociate() 関数の戻り値は、それが失敗を示してもすることが何も無いので、無視されます。

${ESSID} は、システムが接続しようとしている AP の ESSID に完全一致で設定されます。${ESSIDVAR} は bash が使用できる変数名に変換された ${ESSID} です。

FILE /etc/conf.d/netpre/post アソシエーション関数
preassociate() {
  # 下のコードは leap_user_ESSID と leap_pass_ESSID の 2 個の変数を
  # 追加します。接続しようとしている ESSID に対してこれらの両方を設定して
  # CISCO LEAP スクリプトを実行します
  
  local user pass
  eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
  eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
  
  if [[ -n ${user} && -n ${pass} ]]; then
    if [[ ! -x /opt/cisco/bin/leapscript ]]; then
      eend "For LEAP support, please emerge net-misc/cisco-aironet-client-utils"
      return 1
    fi
    einfo "Waiting for LEAP Authentication on \"${ESSID//\\\\//}\""
    if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
      ewarn "Login Failed for ${user}"
      return 1
    fi
  fi
  
  return 0
}
  
postassociate() {
  # この関数はほぼ完全性のためだけにここに書いています……。何か気の利いた
  # ことをすることはまだ思い付きません ;-)
  
  return 0
}
Note
${ESSID} および ${ESSIDVAR}predown() および postdown() 関数では利用できません。
Note
カスタム関数を書くためのさらなる情報いついては、/usr/share/doc/netifrc-*/net.example.bz2 をお読みください。