Difference between revisions of "Netctl (日本語)"

From ArchWiki
Jump to: navigation, search
m (netcfg からの移行)
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{Lowercase title}}
 
{{Lowercase title}}
 
[[Category:Networking (日本語)]]
 
[[Category:Networking (日本語)]]
[[fr:Netctl]]
+
[[cs:Netctl]]
 
[[en:Netctl]]
 
[[en:Netctl]]
 
[[es:Netctl]]
 
[[es:Netctl]]
[[zh-CN:Netctl]]
+
[[fr:Netctl]]
 
[[ru:Netctl]]
 
[[ru:Netctl]]
 +
[[zh-CN:Netctl]]
 
{{Article summary start|概要}}
 
{{Article summary start|概要}}
 
{{Article summary text|netctl とネットワークプロファイルスクリプトを使ってネットワークを設定するガイド。}}
 
{{Article summary text|netctl とネットワークプロファイルスクリプトを使ってネットワークを設定するガイド。}}
 +
{{Article summary heading|概括}}
 +
{{Article summary text|{{Networking overview (日本語)}}}}
 +
{{Article summary heading|関連項目}}
 +
{{Article summary wiki|Bridge with netctl}}
 
{{Article summary end}}
 
{{Article summary end}}
Netctl は [[netcfg (日本語)|netcfg]] を置き換える新しい Arch のプロジェクトです。Netctl は Arch Linux の CLI ベースのネットワーク管理の将来(そして現在)です。
+
''netctl'' はプロファイルを使ってネットワーク接続を管理・設定する CLI ベースのツールです。netctl は古い ''netcfg'' ユーティリティを置き換える新しい Arch Linux の独自プロジェクトです。
  
 
==インストール==
 
==インストール==
{{Pkg|netctl}} パッケージが[[Official Repositories (日本語)|公式リポジトリ]]から利用できます。netctl をインストールすると {{pkg|netcfg}} が置き換えられます。
+
 
 +
{{Pkg|netctl}} パッケージが[[Official Repositories (日本語)|公式リポジトリ]]から利用できます。netctl をインストールすると {{AUR|netcfg}} が置き換えられます。
 +
 
 +
{{Pkg|netctl}} と {{AUR|netcfg}} は衝突するパッケージです。プロファイルが正しく設定されていないと、'''netctl''' をインストールした後に接続を失う可能性があります。
 +
 
 +
{{Note|{{ic|1=systemctl --type=service}} を使ってネットワークを設定するサービスが動作していないことを確認するとよいでしょう。ネットワークサービスが複数あると衝突します。}}
  
 
==必読==
 
==必読==
質の高い man ページを作成するために相当な尽力がなされました。netctl を使う前にユーザーは以下の man ページを読んで下さい:
+
 
 +
netctl を使う前に以下の man ページを読むのを推奨します:
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.1.txt netctl]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.1.txt netctl]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
 
*[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.special.7.txt netctl.special]
 
{{Pkg|netctl}} と {{Pkg|netcfg}} は衝突するパッケージです。プロファイルを間違って設定していると、{{Pkg|netctl}} をインストールした後、接続がなくなってしまいます。
 
  
 
==設定==
 
==設定==
  
{{ic|netctl}} をネットワークプロファイルマネージャのための systemd のサービスの状態を確認・操作するために使うことができます。ネットワーク接続を設定するのをアシストするために設定サンプルファイルが提供されています。これらのサンプルプロファイルは {{ic|/etc/netctl/examples/}} にあります。一般的な設定として以下が含まれています:
+
''netctl'' はプロファイルを使ってネットワーク接続を管理します。プロファイルファイルは {{ic|/etc/netctl/}} に保存されています。ユーザーがネットワーク接続を設定するのを助けるために、設定のサンプルファイルが提供されています。これらのサンプルプロファイルが置かれている場所は {{ic|/etc/netctl/examples/}} です。一般的な設定として以下が用意されています:
 
*ethernet-dhcp
 
*ethernet-dhcp
 
*ethernet-static
 
*ethernet-static
Line 31: Line 40:
  
 
サンプルプロファイルを使うには、プロファイルのどれかを {{ic|/etc/netctl/examples/}} から {{ic|/etc/netctl/}} にコピーしてあなたの設定にあわせてプロファイルを修正して下さい:
 
サンプルプロファイルを使うには、プロファイルのどれかを {{ic|/etc/netctl/examples/}} から {{ic|/etc/netctl/}} にコピーしてあなたの設定にあわせてプロファイルを修正して下さい:
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/
+
 
 +
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/''profile''
 +
 
 +
{{Tip|ワイヤレス設定のために、{{ic|wifi-menu -o}} を使ってプロファイルを {{ic|/etc/netctl/}} に生成することができます。}}
 +
 
 +
{{Warning|{{ic|wifi-menu -o}} が {{ic|/etc/netctl/}} に生成するプロファイルの名前には '-' が付きます。このために自動設定で問題が起こります。ファイルの名前を変えることが推奨されています。}}
  
 
プロファイルを作成したら、新しく作ったプロファイルを使って接続を確立するために次を実行して下さい:
 
プロファイルを作成したら、新しく作ったプロファイルを使って接続を確立するために次を実行して下さい:
  # netctl start <profile>
+
  # netctl start ''profile''
  
上のコマンドが失敗する場合、{{ic|journalctl -xn}} や {{ic|netctl status <profile>}} を使って失敗の詳細情報を取得して下さい。そして設定を修正してから再テストして下さい。
+
{{Note|''profile'' はファイル名です、フルパスを含みません。フルパスを指定すると netctl はエラーコードを返します。}}
  
===自動化===
+
上のコマンドが失敗する場合、{{ic|journalctl -xn}} や {{ic|netctl status ''profile''}} を使って失敗の詳細情報を取得して下さい。そして設定を修正してから再テストして下さい。
====ひとつだけのプロファイル====
+
プロファイルをひとつだけしか使っていない場合、プロファイルの起動に成功したなら、次を実行して有効 ({{ic|enabled}}) にすることができます。
+
# netctl enable <profile>
+
このコマンドはコンピュータが起動した時に実行される [[systemd (日本語)|systemd]] サービスを作成・有効にします。
+
  
====複数のプロファイル====
+
===自動操作===
{{ic|netcfg}} には {{ic|net-auto-wireless.service}} や {{ic|net-auto-wired.service}} があったのに対して、{{ic|netctl}} では無線プロファイルには {{ic|netctl-auto@<interface>.service}} を、有線プロファイルには {{ic|netctl-ifplugd@<interface>.service}} を使います。{{ic|netctl-auto@<interface>.service}} を無線インターフェースで動作させるには、{{pkg|wpa_actiond}} パッケージをインストールする必要があります。{{ic|netctl-ifplugd@<interface>.service}} を有線インターフェースで動作させるには、{{pkg|ifplugd}} パッケージをインストールする必要があります。適宜に {{ic|/etc/ifplugd/ifplugd.conf}} を設定して下さい。
+
  
プロファイルを設定して動作することを確認したら、以下を実行してサービスを有効にしてください
+
プロファイルを(一つのインターフェイスに)一つしか使わなかったり、手動でプロファイルを切り替える場合、[[#基本的な方法|基本的な方法]]を使って下さい。一般的な例として、サーバー・ワークステーション・ルーターなどがあります。
# systemctl enable netctl-auto@<interface>.service
+
# systemctl enable netctl-ifplugd@<interface>.service 
+
  
前に {{ic|netctl}} を使ってプロファイルを有効にしていた場合は
+
頻繁に複数のプロファイルを切り替える必要がある時は、[[#プロファイルの自動切り替え|プロファイルの自動切り替え]]を使って下さい。一般的な例として、ラップトップがあります。
# netctl disable <profile>
+
を実行して起動時に二重にプロファイルが実行されるのを止めて下さい。wpa_supplicant で問題が発生する可能性があります。
+
  
{{Note|有効にしたプロファイルを修正する必要があるときは、{{ic|netctl reenable <profile>}} を実行して変更を適用して下さい。}}
+
==== 基本的な方法 ====
 +
 
 +
この方法では、インターフェイス毎に一つのプロファイルを固定して起動することができます。最初にプロファイルが問題なく起動することを手動で確認して、それから次のコマンドで {{ic|enabled}} にしてください:
 +
 
 +
# netctl enable ''profile''
 +
 
 +
このコマンドによって [[systemd (日本語)|systemd]] サービスが作成・有効にされ、コンピュータが立ち上がる時にサービスが起動するようになります。プロファイルへの変更はサービスファイルに自動的には適用されません。変更後、プロファイルを reenable する必要があります:
 +
 
 +
# netctl reenable ''profile''
 +
 
 +
{{Note|ブート時 (もしくはサービスの起動時) にプロファイルの起動が成功した時に初めて接続は確立されます。具体的に言うと、有線接続の場合はケーブルが挿さっている必要があり、無線接続の場合、ネットワークが圏内である必要があります。}}
 +
 
 +
{{Tip|ケーブルが接続されているかどうかにかかわらず、固定 IP プロファイルを有線インターフェイスで有効にするには、プロファイルの中で {{ic|1=SkipNoCarrier=yes}} を使って下さい。}}
 +
 
 +
==== プロファイルの自動切り替え ====
 +
 
 +
''netctl'' は自動でプロファイルを切り替えるために2つの特別な [[systemd (日本語)|systemd]] サービスを用意しています:
 +
 
 +
* 有線インターフェイス: {{ic|netctl-ifplugd@''interface''.service}}。これを使うと、あなたがケーブルを抜き差しするたびに netctl プロファイルが変更されます。
 +
* 無線インターフェイス: {{ic|netctl-auto@''interface''.service}}。これを使うと、あなたが特定のネットワークの圏内から他のネットワークの圏内に移動したときに netctl のプロファイルが変更されます。
 +
 
 +
{{Note|''netcfg'' では同じ用途で {{ic|net-auto-wireless.service}} と {{ic|net-auto-wired.service}} を使っていました。}}
 +
 
 +
まず必要なパッケージを[[pacman (日本語)|インストール]]してください:
 +
* {{ic|netctl-auto@''interface''.service}} を使うには {{Pkg|wpa_actiond}} パッケージが必要です。
 +
* {{ic|netctl-ifplugd@''interface''.service}} を使うには {{Pkg|ifplugd}} パッケージが必要です。
 +
 
 +
そして {{ic|netctl-auto@''interface''.service}} や {{ic|netctl-ifplugd@''interface''.service}} が起動できるプロファイルを全て設定してください。
 +
 
 +
{{ic|netctl-auto@''interface''.service}} によって無線プロファイルが自動的に起動'''しない'''ようにしたい場合は、そのプロファイルに {{ic|1=ExcludeAuto=yes}} を加える必要があります。また、{{ic|1=Priority=}} を使うことで複数のプロファイルが利用可能な場合に、どのプロファイルを優先的に使うか設定できます。{{ic|netctl-ifplugd@''interface''.service}} は [[Wikipedia:ja:DHCP|DHCP]] を使うプロファイルを優先します。固定 IP のプロファイルを優先させるために、{{ic|1=AutoWired=yes}} を使うことができます。詳しくは {{ic|netctl.profile(5)}} を見て下さい。
 +
 
 +
{{Warning|''netctl-auto'' による WPA のプロファイルの自動選択は {{ic|1=Security=wpa-config}} オプションでは出来ません、代わりに {{ic|1=Security=wpa-configsection}} を使って下さい。}}
 +
 
 +
プロファイルを設定して、動作するのを確認したら、''systemctl'' を使ってサービスを有効にしてください:
 +
# systemctl enable netctl-auto@''interface''.service
 +
# systemctl enable netctl-ifplugd@''interface''.service 
 +
 
 +
{{Warning|
 +
* {{ic|1=Key=}} の値が空など、プロファイルのどれかにエラーがある場合、このユニットは起動時ロードに失敗します。
 +
* この方法は[[#基本的な方法|基本的な方法]]と衝突します。以前 ''netctl'' でプロファイルを有効にしていたのならば、{{bc|# netctl disable ''profile''}} を実行してプロファイルを二重に起動しないようにしてください。}}
 +
 
 +
netctl 1.3 から、netctl-auto サービスを止めないで netctl-auto によって管理されているインターフェイスを手動で操作できるようになりました。netctl-auto コマンドを使ってこれを行うことが可能です。利用可能な操作のリストを表示するには次を実行してください:
 +
# netctl-auto --help
  
 
===netcfg からの移行===
 
===netcfg からの移行===
{{Warning|{{ic|netctl}} は {{ic|netcfg}} と衝突します。従って {{ic|netctl}} をインストールする前に既存の {{ic|netcfg@<profile>}} サービスを無効にして下さい。}}
 
  
{{ic|netctl}} はプロファイルの保存に {{ic|/etc/netctl}} を使います。{{ic|/etc/network.d}} ({{ic|netcfg}} のプロファイル保存場所) ''ではありません''。
+
''netctl'' はプロファイルの保存に {{ic|/etc/netctl}} を使います。{{ic|/etc/network.d}} (''netcfg'' のプロファイル保存場所) '''ではありません'''。
 +
 
 +
''netcfg'' からの移行をするためには、最低でも以下の操作が必要です:
  
netcfg からの移行をするためには、最低でも以下の操作が必要です:
+
* netcfg サービスを無効にする: {{ic|systemctl disable netcfg.service}}
*ネットワークプロファイルファイルを新しいディレクトリに移動する。
+
* ''netcfg'' をアンインストールして ''netctl'' をインストールする。
*netctl.profile(5) に従ってプロファイル内の変数の名前を修正する (ほとんどの変数の名前は UpperCamelCase です、つまり CONNECTION= は Connection= になります)。
+
* ネットワークプロファイルファイルを新しいディレクトリに移動する。
*固定 IP 設定では、Address= 変数で IP の後ろにネットマスクを付ける (例: Address=('192.168.1.23<b>/24</b>' '192.168.1.87<b>/24</b>') サンプルプロファイルより)。  
+
* {{ic|netctl.profile(5)}} に従ってプロファイル内の変数の名前を修正する (ほとんどの変数の名前は {{ic|UpperCamelCase}} です、つまり {{ic|CONNECTION}} {{ic|Connection}} になります)。
*{{ic|wireless-wpa-configsection}} サンプルに従って無線プロファイルを設定している場合、定義済みの {{ic|wpa_supplicant}} オプションを上書きしてしまうので注意してください。隠された無線ネットワークに接続するには、{{ic|wireless-wpa-configsection} 内で {{ic|scan_ssid<nowiki>=1</nowiki>}} をオプションに追加してください。; {{ic|Hidden<nowiki>=</nowiki>yes}} は効果がありません。
+
* 固定 IP 設定では、{{ic|Address}} 変数で IP の後ろにネットマスクを付ける (例: {{ic|1=Address=('192.168.1.23'''/24'''' '192.168.1.87'''/24'''')}} サンプルプロファイルより)。  
*interface 変数などクオートが必要ない変数のクォーテーションを外す (これは見た目を整えるためです)。
+
* {{ic|wireless-wpa-configsection}} サンプルに従って無線プロファイルを設定している場合、定義済みの {{ic|wpa_supplicant}} オプションを上書きしてしまうので注意してください。隠された無線ネットワークに接続するには、{{ic|wireless-wpa-configsection}} 内で {{ic|scan_ssid<nowiki>=1</nowiki>}} をオプションに追加してください。; {{ic|Hidden<nowiki>=</nowiki>yes}} は効果がありません。
*前の NETWORKS に設定していたプロファイルごとに {{ic|netctl enable <profile>}} を実行する。'last' はこの方法では使えません、netctl.special(7) を見て下さい。
+
* interface 変数などクオートが必要ない変数のクォーテーションを外す (これは見た目を整えるためです)。
*netcfg-menu の代わりに {{ic|netctl list}} / {{ic|netctl start <profile>}} を使う。wifi-menu は使い続けられます。
+
* 前の {{ic|NETWORKS}} に設定していたプロファイルごとに {{ic|netctl enable ''profile''}} を実行する。'last' はこの方法では使えません、{{ic|netctl.special(7)}} を見て下さい。
 +
* ''netcfg-menu'' の代わりに {{ic|netctl list}} {{ic|netctl start ''profile''}} を使う。''wifi-menu'' は使い続けられます。
 +
* ''netcfg'' とは異なり、''netctl'' はデフォルトでは他の NIC に接続されていない [[wikipedia:ja:ネットワークカード|NIC]] をデフォルトで立ち上げられません。この問題を解決するには、{{ic|/etc/netctl/''profile''}} の最後に {{ic|1=SkipNoCarrier=yes}} を加えて下さい。
  
 
===パスワードの暗号化 (256-bit PSK)===
 
===パスワードの暗号化 (256-bit PSK)===
  
パスワードを''平文''で保存したくない場合、256-bit Encrypted PSK を生成するという方法があります。
+
{{Note|"暗号化"されていたとしても、プロファイルに記述したキーだけで WPA-PSK ネットワークに接続することは可能です。従って、この手順は人間が読めるパスフレーズを隠すことにしか訳に立ちません。ファイルを読める人間がネットワークに接続するのを止めることはできません。どこでも同じパスフレーズを使うというのはセキュリティ的に問題があります、同じパスワードをどこかで使っていないか自問自答するべきでしょう。}}
  
まず、[[Official Repositories (日本語)|公式リポジトリ]]から {{pkg|wpa_actiond}} を[[pacman (日本語)|インストール]]して下さい。
+
パスワードを''平文''で保存したくない場合、256-bit Encrypted PSK を生成するという方法があります。これはパスフレーズと SSID から標準アルゴリズムを使って計算します。
  
次に、[[WPA_supplicant#Configuration_file|wpa_passphrase]] を使ってあなたの 256-bit Encrypted PSK を生成してください:
+
* 方法 1: {{ic|wifi-menu -o}} を実行して {{ic|/etc/netctl}} に設定ファイルを生成する
{{hc|使用方法: wpa_passphrase [ssid] [passphrase]|
+
* 方法 2: 手順に従って手動設定する
2=$ wpa_passphrase archlinux freenode|
+
 
 +
どちらの方法でも、{{ic|chmod 600 /etc/netctl/<config_file>}} をしてパスワードにユーザーがアクセスできないようにするのを提案します。
 +
 
 +
[[WPA_supplicant#Configuration_file|wpa_passphrase]] を使ってあなたの 256-bit Encrypted PSK を生成してください:
 +
{{hc|$ wpa_passphrase ''your_essid'' ''passphrase''|2=
 
   network={
 
   network={
   ssid="archlinux"
+
   ssid="''your_essid''"
   #psk="freenode"
+
   #psk="''passphrase''"
 
   psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
   psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
}
 
}
 
}}
 
}}
 +
 
{{Note|表示された情報はプロファイルで使うのでターミナルを閉じないで下さい。}}
 
{{Note|表示された情報はプロファイルで使うのでターミナルを閉じないで下さい。}}
  
新しいターミナルを開きサンプルファイル {{ic|wireless-wpa}} を {{ic|/etc/netctl/examples}} から {{ic|/etc/netctl}} にコピーしてください。
+
新しいターミナルを開き、サンプルファイル {{ic|wireless-wpa}} を {{ic|/etc/netctl/examples}} から {{ic|/etc/netctl}} にコピーしてください。
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa
 
  # cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa
  
Line 94: Line 149:
  
 
256-bit Encrypted PSK を含むネットワークプロファイル {{ic|wireless-wpa}} は以下のようになるはずです:
 
256-bit Encrypted PSK を含むネットワークプロファイル {{ic|wireless-wpa}} は以下のようになるはずです:
 +
 
{{hc|/etc/netctl/wireless-wpa|2=
 
{{hc|/etc/netctl/wireless-wpa|2=
 
Description='A simple WPA encrypted wireless connection using 256-bit Encrypted PSK'
 
Description='A simple WPA encrypted wireless connection using 256-bit Encrypted PSK'
Line 100: Line 156:
 
Security=wpa
 
Security=wpa
 
IP=dhcp
 
IP=dhcp
ESSID=archlinux
+
ESSID=''your_essid''
 
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
 
}}
 
}}
{{Note|1={{ic|1=Key=}} には [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)] の最後で説明されている '''special non-quoted rules''' を使うようにして下さい。}}
 
  
==サポート==
+
{{Note|
公式アナウンススレッド: https://bbs.archlinux.org/viewtopic.php?id=157670
+
* {{ic|Key}} 変数には [https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt netctl.profile(5)] の最後で説明されている '''special non-quoting rules''' を使うようにして下さい。
 +
* パスフレーズが失敗する場合、{{ic|Key}} の中の {{ic|\"}} を削除してみてください。}}
  
 
==Tips and Tricks==
 
==Tips and Tricks==
2013年4月現在、{{ic|netcfg current}} のかわりになるコマンドは netctl にありません。タイル型ウィンドウマネージャのステータスバーなどでこのコマンドを使っている場合は、次のコマンドで代用できます:
+
 
  # netctl list | sed -n 's/^\* //p'
+
=== 'netcfg current' の代用 ===
もしくは、{{ic|netctl-auto}} を使って接続している場合:
+
 
  # wpa_cli -i <interface> status | sed -n 's/^id_str=//p'
+
If you used
 +
以前 {{ic|netcfg current}} を使っていた場合は、{{ic|netctl-auto}} で起動した接続の代わりとして {{ic|# netctl-auto current}} を使うことができます (netctl-1.3 以降の機能)。
 +
 
 +
接続を手動でパースするには、次を使って下さい:
 +
 
 +
  # netctl list | awk '/*/ {print $2}'
 +
 
 +
=== Eduroam ===
 +
 
 +
いくつかの大学では "Eduroam" という名前のシステムを使って無線ネットワークを管理しています。このシステム用に、以下のフォーマットの WPA config-section プロファイルが利用できます:
 +
{{hc|/etc/netctl/wlan0-eduroam|<nowiki>
 +
Description='Eduroam-profile for <user>'
 +
Interface=wlan0
 +
Connection=wireless
 +
Security=wpa-configsection
 +
IP=dhcp
 +
WPAConfigSection=(
 +
'ssid="eduroam"'
 +
'proto=RSN'
 +
'key_mgmt=WPA-EAP'
 +
'pairwise=CCMP'
 +
'auth_alg=OPEN'
 +
'eap=PEAP'
 +
'identity="<user>"'
 +
'password="<password>"'
 +
)</nowiki>
 +
}}
 +
 
 +
{{Tip|To prevent storing your password as plaintext, you can generate a password hash with {{ic|$ echo -n <password> &#124; iconv -t utf16le &#124; openssl md4}}. Then use it as {{ic|'password&#61;hash:<hash>'}}.}}
 +
 
 +
TTLS や認証を受けた大学では以下の設定が動きます:
 +
 
 +
{{hc|/etc/netctl/wlan0-eduroam|<nowiki>
 +
Description='Eduroam university'
 +
Interface=wlan0
 +
Connection=wireless
 +
Security=wpa-configsection
 +
IP=dhcp
 +
ESSID=eduroam
 +
WPAConfigSection=(
 +
    'ssid="eduroam"'
 +
    'key_mgmt=WPA-EAP'
 +
    'eap=TTLS'
 +
    'group=TKIP'
 +
    'anonymous_identity="anonymous@domain_university"'
 +
    'identity="XXX@domain_university"'
 +
    'password="XXX"'
 +
    'ca_cert="Path/to/the/certificate"'
 +
    'phase2="auth=PAP"'
 +
)</nowiki>
 +
}}
 +
 
 +
=== ボンディング ===
 +
 
 +
[https://www.kernel.org/doc/Documentation/networking/bonding.txt kernel documentation] より:
 +
 
 +
:''Linux bonding ドライバは複数のネットワークインターフェースを単一の論理的な「結合された」インターフェースに統合する手段を提供します。結合されたインターフェースの動作はモードに依存します。一般に言われる事ですが、モードはホットスタンバイまたは負荷分散サービスを提供します。加えて、リンクの保全監視が実現されます。''
 +
 
 +
==== ロードバランシング ====
 +
 
 +
netctl とボンディングを使うには、公式リポジトリから追加のパッケージをインストールする必要があります: {{Pkg|ifenslave}}.
 +
 
 +
{{ic|/etc/netctl/examples/bonding}} を {{ic|/etc/netctl/bonding}} にコピーして、以下のように編集してください:
 +
 
 +
{{hc|/etc/netctl/bonding|2=
 +
Description='Bond Interface'
 +
Interface='bond0'
 +
Connection=bond
 +
BindsToInterfaces=('eth0' 'eth1')
 +
IP=dhcp
 +
IP6=stateless}}
 +
 
 +
古い設定を無効にして、''bonding'' を自動的に起動するよう設定してください。新しいプロファイルに切り替えるには:
 +
 
 +
# netctl switch-to bonding
 +
 
 +
{{Note|This uses the round-robin policy, which is the default for the {{ic|bonding}} driver. See [https://www.kernel.org/doc/Documentation/networking/bonding.txt official documentation] for details.}}
 +
 
 +
{{Tip|状態とボンディングモードを確認するには: {{bc|$ cat /proc/net/bonding/bond0}}}}
 +
 
 +
==== 有線から無線へのフェイルオーバー ====
 +
 
 +
This example describes how to use ''bonding'' to fallback to wireless when the wired ethernet goes down. The presence of network connection on each interface is detected and ''dhcpcd'' is started when connection on either or both interfaces is established.
 +
 
 +
You'll need additional packages from the official repositories: {{Pkg|ifplugd}}, {{Pkg|ifenslave}} and {{Pkg|wpa_supplicant}}.
 +
 
 +
First configure the {{ic|bonding}} driver to use {{ic|active-backup}}:
 +
 
 +
{{hc|/etc/modprobe.d/bonding.conf|2=
 +
options bonding mode=active-backup
 +
options bonding miimon=100
 +
options bonding primary=eth0
 +
options bonding max_bonds=0
 +
}}
 +
 
 +
The {{ic|max_bonds}} option avoids the {{ic|Interface bond0 already exists}} error.
 +
 
 +
Next, configure a netctl profile to enslave the two hardware interfaces:
 +
 
 +
{{hc|/etc/netctl/failover|2=
 +
Description='A wired connection with failover to wireless'
 +
Interface='bond0'
 +
Connection=bond
 +
BindsToInterfaces=('eth0' 'wlan0')
 +
IP='no'
 +
SkipNoCarrier='no'
 +
}}
 +
 
 +
Enable the profile on startup.
 +
 
 +
  # netctl enable failover
 +
 
 +
Configure ''wpa_supplicant'' to associate with known networks. This can be done with a netctl profile (remember to use {{ic|1=IP='no'}}) and a ''wpa_supplicant'' service running constantly, or on-demand with ''wpa_cli''. Ways to do this are covered on the [[wpa_supplicant]] page.
 +
 
 +
Create an ''ifplugd'' action for automatic DHCP assignment on the bonded interface:
 +
 
 +
{{hc|/etc/ifplugd/bond_dhcp.action|2=
 +
#!/bin/sh
 +
 
 +
case "$2" in
 +
  up)
 +
    systemctl start "dhcpcd@$1.service" && exit 0
 +
    ;;
 +
  down)
 +
    systemctl stop "dhcpcd@$1.service" && exit 0
 +
    ;;
 +
  *)
 +
    echo "Wrong arguments" > /dev/stderr
 +
    ;;
 +
esac
 +
exit 1
 +
}}
 +
 
 +
and make it executable
 +
 
 +
# chmod +x /etc/ifplugd/bond_dhcp.action
 +
 
 +
Then create the [[systemd]] service which starts ''ifplugd'' for {{ic|bond0}}:
 +
 
 +
{{hc|/etc/systemd/system/net-auto-bonded@.service|2=
 +
[Unit]
 +
Description=Provides automatic dhcp resolution for bonded failover connection
 +
Requires=netctl@failover.service
 +
After=netctl@failover.service
 +
 
 +
[Service]
 +
ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns
 +
 
 +
[Install]
 +
WantedBy=multi-user.target
 +
}}
 +
 
 +
Enable the net-auto-bonded service and reboot:
 +
 
 +
# systemctl enable net-auto-bonded@bond0.service
 +
# reboot
 +
 
 +
If you have a wired and wireless connection to the same network, you can probably now disconnect and reconnect the wired connection without losing connectivity. In most cases, even streaming music won't skip!
 +
 
 +
=== DHCP timeout 問題 ===
 +
 
 +
If you are having timeout issues when requesting leases via DHCP you can set the timeout value higher than netctl's 10 seconds by default. Create a file in {{ic|/etc/netctl/hooks/}} or {{ic|/etc/netctl/interfaces/}}, add {{ic|1=TimeoutDHCP=30}} to it for a timeout of 30 seconds and make the file executable.
 +
 
 +
== 参照 ==
 +
 
 +
* 公式アナウンススレッド: https://bbs.archlinux.org/viewtopic.php?id=157670
 +
* AUR に cinnamon アプレットがあります: {{AUR|cinnamon-applet-netctl-systray-menu}}

Revision as of 10:38, 1 November 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary end netctl はプロファイルを使ってネットワーク接続を管理・設定する CLI ベースのツールです。netctl は古い netcfg ユーティリティを置き換える新しい Arch Linux の独自プロジェクトです。

インストール

netctl パッケージが公式リポジトリから利用できます。netctl をインストールすると netcfgAUR が置き換えられます。

netctlnetcfgAUR は衝突するパッケージです。プロファイルが正しく設定されていないと、netctl をインストールした後に接続を失う可能性があります。

Note: systemctl --type=service を使ってネットワークを設定するサービスが動作していないことを確認するとよいでしょう。ネットワークサービスが複数あると衝突します。

必読

netctl を使う前に以下の man ページを読むのを推奨します:

設定

netctl はプロファイルを使ってネットワーク接続を管理します。プロファイルファイルは /etc/netctl/ に保存されています。ユーザーがネットワーク接続を設定するのを助けるために、設定のサンプルファイルが提供されています。これらのサンプルプロファイルが置かれている場所は /etc/netctl/examples/ です。一般的な設定として以下が用意されています:

  • ethernet-dhcp
  • ethernet-static
  • wireless-wpa
  • wireless-wpa-static

サンプルプロファイルを使うには、プロファイルのどれかを /etc/netctl/examples/ から /etc/netctl/ にコピーしてあなたの設定にあわせてプロファイルを修正して下さい:

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/profile
Tip: ワイヤレス設定のために、wifi-menu -o を使ってプロファイルを /etc/netctl/ に生成することができます。
Warning: wifi-menu -o/etc/netctl/ に生成するプロファイルの名前には '-' が付きます。このために自動設定で問題が起こります。ファイルの名前を変えることが推奨されています。

プロファイルを作成したら、新しく作ったプロファイルを使って接続を確立するために次を実行して下さい:

# netctl start profile
Note: profile はファイル名です、フルパスを含みません。フルパスを指定すると netctl はエラーコードを返します。

上のコマンドが失敗する場合、journalctl -xnnetctl status profile を使って失敗の詳細情報を取得して下さい。そして設定を修正してから再テストして下さい。

自動操作

プロファイルを(一つのインターフェイスに)一つしか使わなかったり、手動でプロファイルを切り替える場合、基本的な方法を使って下さい。一般的な例として、サーバー・ワークステーション・ルーターなどがあります。

頻繁に複数のプロファイルを切り替える必要がある時は、プロファイルの自動切り替えを使って下さい。一般的な例として、ラップトップがあります。

基本的な方法

この方法では、インターフェイス毎に一つのプロファイルを固定して起動することができます。最初にプロファイルが問題なく起動することを手動で確認して、それから次のコマンドで enabled にしてください:

# netctl enable profile

このコマンドによって systemd サービスが作成・有効にされ、コンピュータが立ち上がる時にサービスが起動するようになります。プロファイルへの変更はサービスファイルに自動的には適用されません。変更後、プロファイルを reenable する必要があります:

# netctl reenable profile
Note: ブート時 (もしくはサービスの起動時) にプロファイルの起動が成功した時に初めて接続は確立されます。具体的に言うと、有線接続の場合はケーブルが挿さっている必要があり、無線接続の場合、ネットワークが圏内である必要があります。
Tip: ケーブルが接続されているかどうかにかかわらず、固定 IP プロファイルを有線インターフェイスで有効にするには、プロファイルの中で SkipNoCarrier=yes を使って下さい。

プロファイルの自動切り替え

netctl は自動でプロファイルを切り替えるために2つの特別な systemd サービスを用意しています:

  • 有線インターフェイス: netctl-ifplugd@interface.service。これを使うと、あなたがケーブルを抜き差しするたびに netctl プロファイルが変更されます。
  • 無線インターフェイス: netctl-auto@interface.service。これを使うと、あなたが特定のネットワークの圏内から他のネットワークの圏内に移動したときに netctl のプロファイルが変更されます。
Note: netcfg では同じ用途で net-auto-wireless.servicenet-auto-wired.service を使っていました。

まず必要なパッケージをインストールしてください:

  • netctl-auto@interface.service を使うには wpa_actiond パッケージが必要です。
  • netctl-ifplugd@interface.service を使うには ifplugd パッケージが必要です。

そして netctl-auto@interface.servicenetctl-ifplugd@interface.service が起動できるプロファイルを全て設定してください。

netctl-auto@interface.service によって無線プロファイルが自動的に起動しないようにしたい場合は、そのプロファイルに ExcludeAuto=yes を加える必要があります。また、Priority= を使うことで複数のプロファイルが利用可能な場合に、どのプロファイルを優先的に使うか設定できます。netctl-ifplugd@interface.serviceDHCP を使うプロファイルを優先します。固定 IP のプロファイルを優先させるために、AutoWired=yes を使うことができます。詳しくは netctl.profile(5) を見て下さい。

Warning: netctl-auto による WPA のプロファイルの自動選択は Security=wpa-config オプションでは出来ません、代わりに Security=wpa-configsection を使って下さい。

プロファイルを設定して、動作するのを確認したら、systemctl を使ってサービスを有効にしてください:

# systemctl enable netctl-auto@interface.service 
# systemctl enable netctl-ifplugd@interface.service  
Warning:
  • Key= の値が空など、プロファイルのどれかにエラーがある場合、このユニットは起動時ロードに失敗します。
  • この方法は基本的な方法と衝突します。以前 netctl でプロファイルを有効にしていたのならば、
    # netctl disable profile
    を実行してプロファイルを二重に起動しないようにしてください。

netctl 1.3 から、netctl-auto サービスを止めないで netctl-auto によって管理されているインターフェイスを手動で操作できるようになりました。netctl-auto コマンドを使ってこれを行うことが可能です。利用可能な操作のリストを表示するには次を実行してください:

# netctl-auto --help

netcfg からの移行

netctl はプロファイルの保存に /etc/netctl を使います。/etc/network.d (netcfg のプロファイル保存場所) ではありません

netcfg からの移行をするためには、最低でも以下の操作が必要です:

  • netcfg サービスを無効にする: systemctl disable netcfg.service
  • netcfg をアンインストールして netctl をインストールする。
  • ネットワークプロファイルファイルを新しいディレクトリに移動する。
  • netctl.profile(5) に従ってプロファイル内の変数の名前を修正する (ほとんどの変数の名前は UpperCamelCase です、つまり CONNECTIONConnection になります)。
  • 固定 IP 設定では、Address 変数で IP の後ろにネットマスクを付ける (例: Address=('192.168.1.23/24' '192.168.1.87/24') サンプルプロファイルより)。
  • wireless-wpa-configsection サンプルに従って無線プロファイルを設定している場合、定義済みの wpa_supplicant オプションを上書きしてしまうので注意してください。隠された無線ネットワークに接続するには、wireless-wpa-configsection 内で scan_ssid=1 をオプションに追加してください。; Hidden=yes は効果がありません。
  • interface 変数などクオートが必要ない変数のクォーテーションを外す (これは見た目を整えるためです)。
  • 前の NETWORKS に設定していたプロファイルごとに netctl enable profile を実行する。'last' はこの方法では使えません、netctl.special(7) を見て下さい。
  • netcfg-menu の代わりに netctl listnetctl start profile を使う。wifi-menu は使い続けられます。
  • netcfg とは異なり、netctl はデフォルトでは他の NIC に接続されていない NIC をデフォルトで立ち上げられません。この問題を解決するには、/etc/netctl/profile の最後に SkipNoCarrier=yes を加えて下さい。

パスワードの暗号化 (256-bit PSK)

Note: "暗号化"されていたとしても、プロファイルに記述したキーだけで WPA-PSK ネットワークに接続することは可能です。従って、この手順は人間が読めるパスフレーズを隠すことにしか訳に立ちません。ファイルを読める人間がネットワークに接続するのを止めることはできません。どこでも同じパスフレーズを使うというのはセキュリティ的に問題があります、同じパスワードをどこかで使っていないか自問自答するべきでしょう。

パスワードを平文で保存したくない場合、256-bit Encrypted PSK を生成するという方法があります。これはパスフレーズと SSID から標準アルゴリズムを使って計算します。

  • 方法 1: wifi-menu -o を実行して /etc/netctl に設定ファイルを生成する
  • 方法 2: 手順に従って手動設定する

どちらの方法でも、chmod 600 /etc/netctl/<config_file> をしてパスワードにユーザーがアクセスできないようにするのを提案します。

wpa_passphrase を使ってあなたの 256-bit Encrypted PSK を生成してください:

$ wpa_passphrase your_essid passphrase
network={
  ssid="your_essid"
  #psk="passphrase"
  psk=64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
}
Note: 表示された情報はプロファイルで使うのでターミナルを閉じないで下さい。

新しいターミナルを開き、サンプルファイル wireless-wpa/etc/netctl/examples から /etc/netctl にコピーしてください。

# cp /etc/netctl/examples/wireless-wpa /etc/netctl/wireless-wpa

それからお好きなテキストエディタを使って /etc/netctl/wireless-wpa を編集する必要があります。先に wpa_passphrase を使って生成された Encrypted Pre-shared Key (psk) をプロファイルの Key 変数に追加してください。

256-bit Encrypted PSK を含むネットワークプロファイル wireless-wpa は以下のようになるはずです:

/etc/netctl/wireless-wpa
Description='A simple WPA encrypted wireless connection using 256-bit Encrypted PSK'
Interface=wlp2s2
Connection=wireless
Security=wpa
IP=dhcp
ESSID=your_essid
Key=\"64cf3ced850ecef39197bb7b7b301fc39437a6aa6c6a599d0534b16af578e04a
Note:
  • Key 変数には netctl.profile(5) の最後で説明されている special non-quoting rules を使うようにして下さい。
  • パスフレーズが失敗する場合、Key の中の \" を削除してみてください。

Tips and Tricks

'netcfg current' の代用

If you used 以前 netcfg current を使っていた場合は、netctl-auto で起動した接続の代わりとして # netctl-auto current を使うことができます (netctl-1.3 以降の機能)。

接続を手動でパースするには、次を使って下さい:

# netctl list | awk '/*/ {print $2}'

Eduroam

いくつかの大学では "Eduroam" という名前のシステムを使って無線ネットワークを管理しています。このシステム用に、以下のフォーマットの WPA config-section プロファイルが利用できます:

/etc/netctl/wlan0-eduroam
Description='Eduroam-profile for <user>'
Interface=wlan0
Connection=wireless
Security=wpa-configsection
IP=dhcp
WPAConfigSection=(
 'ssid="eduroam"'
 'proto=RSN'
 'key_mgmt=WPA-EAP'
 'pairwise=CCMP'
 'auth_alg=OPEN'
 'eap=PEAP'
 'identity="<user>"'
 'password="<password>"'
)
Tip: To prevent storing your password as plaintext, you can generate a password hash with $ echo -n <password> | iconv -t utf16le | openssl md4. Then use it as 'password=hash:<hash>'.

TTLS や認証を受けた大学では以下の設定が動きます:

/etc/netctl/wlan0-eduroam
Description='Eduroam university'
Interface=wlan0 
Connection=wireless
Security=wpa-configsection
IP=dhcp
ESSID=eduroam
WPAConfigSection=(
    'ssid="eduroam"'
    'key_mgmt=WPA-EAP'
    'eap=TTLS'
    'group=TKIP'
    'anonymous_identity="anonymous@domain_university"'
    'identity="XXX@domain_university"'
    'password="XXX"'
    'ca_cert="Path/to/the/certificate"'
    'phase2="auth=PAP"'
)

ボンディング

kernel documentation より:

Linux bonding ドライバは複数のネットワークインターフェースを単一の論理的な「結合された」インターフェースに統合する手段を提供します。結合されたインターフェースの動作はモードに依存します。一般に言われる事ですが、モードはホットスタンバイまたは負荷分散サービスを提供します。加えて、リンクの保全監視が実現されます。

ロードバランシング

netctl とボンディングを使うには、公式リポジトリから追加のパッケージをインストールする必要があります: ifenslave.

/etc/netctl/examples/bonding/etc/netctl/bonding にコピーして、以下のように編集してください:

/etc/netctl/bonding
Description='Bond Interface'
Interface='bond0'
Connection=bond
BindsToInterfaces=('eth0' 'eth1')
IP=dhcp
IP6=stateless

古い設定を無効にして、bonding を自動的に起動するよう設定してください。新しいプロファイルに切り替えるには:

# netctl switch-to bonding
Note: This uses the round-robin policy, which is the default for the bonding driver. See official documentation for details.
Tip: 状態とボンディングモードを確認するには:
$ cat /proc/net/bonding/bond0

有線から無線へのフェイルオーバー

This example describes how to use bonding to fallback to wireless when the wired ethernet goes down. The presence of network connection on each interface is detected and dhcpcd is started when connection on either or both interfaces is established.

You'll need additional packages from the official repositories: ifplugd, ifenslave and wpa_supplicant.

First configure the bonding driver to use active-backup:

/etc/modprobe.d/bonding.conf
options bonding mode=active-backup
options bonding miimon=100
options bonding primary=eth0
options bonding max_bonds=0

The max_bonds option avoids the Interface bond0 already exists error.

Next, configure a netctl profile to enslave the two hardware interfaces:

/etc/netctl/failover
Description='A wired connection with failover to wireless'
Interface='bond0'
Connection=bond
BindsToInterfaces=('eth0' 'wlan0')
IP='no'
SkipNoCarrier='no'

Enable the profile on startup.

# netctl enable failover

Configure wpa_supplicant to associate with known networks. This can be done with a netctl profile (remember to use IP='no') and a wpa_supplicant service running constantly, or on-demand with wpa_cli. Ways to do this are covered on the wpa_supplicant page.

Create an ifplugd action for automatic DHCP assignment on the bonded interface:

/etc/ifplugd/bond_dhcp.action
#!/bin/sh

case "$2" in
  up)
    systemctl start "dhcpcd@$1.service" && exit 0
    ;;
  down)
    systemctl stop "dhcpcd@$1.service" && exit 0
    ;;
  *)
    echo "Wrong arguments" > /dev/stderr
    ;;
esac
exit 1

and make it executable

# chmod +x /etc/ifplugd/bond_dhcp.action

Then create the systemd service which starts ifplugd for bond0:

/etc/systemd/system/net-auto-bonded@.service
[Unit]
Description=Provides automatic dhcp resolution for bonded failover connection
Requires=netctl@failover.service
After=netctl@failover.service

[Service]
ExecStart=/usr/bin/ifplugd -i %i -r /etc/ifplugd/bond_dhcp.action -fIns

[Install]
WantedBy=multi-user.target

Enable the net-auto-bonded service and reboot:

# systemctl enable net-auto-bonded@bond0.service
# reboot

If you have a wired and wireless connection to the same network, you can probably now disconnect and reconnect the wired connection without losing connectivity. In most cases, even streaming music won't skip!

DHCP timeout 問題

If you are having timeout issues when requesting leases via DHCP you can set the timeout value higher than netctl's 10 seconds by default. Create a file in /etc/netctl/hooks/ or /etc/netctl/interfaces/, add TimeoutDHCP=30 to it for a timeout of 30 seconds and make the file executable.

参照