ハンドブック:IA64/ネットワーク/無線
無線ネットワーキングへの導入
Linuxでの無線ネットワーキングは、多くの場合、極めて簡単です。wifiの設定には3つの方法があり、ひとつはグラフィカルクライアント、ひとつはテキストモードインターフェース、そしてもうひとつはコマンドラインインターフェースです。
もう既にデスクトップ環境をインストールしたなら、もっとも簡単な方法は、グラフィカルクライアントを使うことです。NetworkManager などの、ほとんどのグラフィカルクライアントは、極めて直感的であり、これらの提供するマウスによる便利なインターフェースを使えば、ユーザーは数秒でネットワークに接続できます。
NetworkManager はメインのグラフィカルインターフェースに加え、テキストモード、あるいはコマンドラインインターフェースのユーティリティも提供します。net-misc/networkmanager パッケージを、
tools
USE フラグつきで emerge しましょう。nmtui ユーティリティは特に、X や Wayland ベースのデスクトップ環境は使っていないけれど、設定ファイルを手書きしなくて済む簡単に使えるコマンドラインツールが欲しいという人に便利です。無線は、いくつかの設定ファイルの編集により、コマンドラインから設定することもできます。このやり方ではセットアップに多少時間がかかりますが、ダウンロードしてインストールするパッケージも最も少なくて済みます。グラフィカルクライアントの使い方は(彼らのホームページの親切なスクリーンショットも相まって)ほとんど自明ですから、ここではコマンドラインでの方法に注目することにします。
コマンドラインでの無線の設定をサポートするツールは3つあります。 net-wireless/iw と net-wireless/wireless-tools と net-wireless/wpa_supplicant です。これらの3つの中では、net-wireless/wpa_supplicant が好ましいでしょう。覚えておくべき重要な事柄は、無線ネットワークはグローバルに設定されるのであり、インターフェースごとに設定されるのではないということです。
net-wireless/iw ソフトウェアはほとんど全てのカードとドライバーをサポートしますが、WPA-onlyのアクセスポイントには接続できません。ネットワークがWEPによる暗号化のみを提供するか、もしくは完全にオープンならば、net-wireless/iw はシンプリシティの面で他のパッケージに勝ります。
いくつかの無線カードはデフォルトで無効化されています。有効にするには、ハードウェアの文書を参照してください。これらのうちいくつかは、rfkill アプリケーションを使ってunblockできます。その場合、rfkill list で利用できるカードを確認し、rfkill unblock INDEX で無線機能を有効化してください。そうでない場合、無線カードはラップトップのボタンやスイッチ、特別なキーの組み合わせによってアンロックする必要があるかもしれません。
WPA supplicant
WPA supplicant projectは、WPAが有効なアクセスポイントに接続するためのパッケージを提供しています。
root #
emerge --ask net-wireless/wpa_supplicant
wpa_supplicantを動作させるためには、カーネルでCONFIG_PACKETが有効になっている必要があります。今のカーネルでこれが有効か確かめるには、これを試してみてください:
root #
zgrep CONFIG_PACKET /proc/config.gz
root #
grep CONFIG_PACKET /usr/src/linux/.config
USEフラグによっては、wpa_supplicantはQt5で書かれた、KDEと親和性の高いグラフィカルインターフェースをインストールします。もしこれが欲しければ、net-wireless/wpa_supplicant で
USE="qt5"
を有効にしてください。次に、wpa_supplicantモジュールがwireless-toolsより優先されるように、/etc/conf.d/net の設定をします(両方がインストールされている場合、wireless-toolsがデフォルトになります)。
# wpa_supplicantをwireless-toolsより優先する
modules="wpa_supplicant"
host-apドライバを利用する場合、カードをwpa_supplicantで正しく使えるようにするため、前もってカードを"マネージドモード"にしておく必要があります。このためには、/etc/conf.d/net で
iwconfig_eth0="mode managed"
と設定します。次に、wpa_supplicant自体の設定をします(アクセスポイントのセキュアさによっては、ややトリッキーになってきます)。下の例は、wpa_supplicantに付属する /usr/share/doc/wpa_supplicant-<version>/wpa_supplicant.conf.gz を抜き出し、簡単にしたものです。
# この行は変更しないこと。さもないと、wpa_supplicantは仕事をしません
ctrl_interface=/var/run/wpa_supplicant
# 確実にrootのみがWPAの設定を読めるようにする
ctrl_interface_group=0
# wpa_supplicantがスキャンとAP選択の面倒をみるようにする
ap_scan=1
# シンプルなケース: WPA-PSK、ASCIIパスフレーズのPSK、有効な暗号化方式を全て許可
network={
ssid="simple"
psk="very secret passphrase"
# priorityが高いほど早くマッチする
priority=5
}
# 上と同じ、但しSSIDを明確にしたスキャンを要求
# (ブロードキャストSSIDを拒否するAP向け)
network={
ssid="second ssid"
scan_ssid=1
psk="very secret passphrase"
priority=2
}
# WPA-PSKのみを使用。有効な暗号化方式の組み合わせを全て許可
network={
ssid="example"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
# 平文での接続(WPAなし、IEEE 802.1Xなし)
network={
ssid="plaintext-test"
key_mgmt=NONE
}
# 共有WEPキー接続(WPAなし、IEEE 802.1Xなし)
network={
ssid="static-wep-test"
key_mgmt=NONE
# 引用符で囲われたキーはASCIIキー
wep_key0="abcde"
# 引用符なしで指定されたキーは16進キー
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
# 共有キーによる共有WEPキー接続(WPAなし、IEEE 802.1Xなし)
# IEEE 802.11認証
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
# WPA-None/TKIPを使ったIBSS/ad-hocネットワーク
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="secret passphrase"
}
Wireless tools
初期セットアップと managed モード
wireless tools project はWEPセキュリティーレベルまでの基本的な無線インターフェースを設定する一般的な方法を提供します。WEPは脆弱なセキュリティ手法ですが、いまだ世界中で広く使われています。
wireless toolsの設定はいくつかの主要な変数によって制御されます。以下の設定ファイルのサンプルで必要なものすべてが説明されているはずです。設定がないことは"もっとも強い暗号化されていないアクセスポイントへ接続せよ"という意味になることを心に留めておいてください - wireless toolsは常にシステムを何かに接続させようとします。
root #
emerge --ask net-wireless/wireless-tools
net-wireless/iw は無線スタック用の現行のツールですが、バージョン 0.6.0 より前の net-misc/netifrc はこの新しいコマンドとの組み合わせでは動作しません。以前のバージョンの netifrc は net-wireless/wireless-tools とともに使用する必要があります。詳細については変数名についてのドキュメントを参照してください。
# iwconfigをwpa_supplicantより優先する
modules="iwconfig"
# ESSID1とESSID2というアクセスポイントのWEPキーを設定する
# 最大4つのWEPキーを設定できますが、同時に有効になるのは1つだけなので
# デフォルトのインデックスとして[1]を指定してキー[1]を設定し、
# それから再度アクティブなキーを[1]に変更します
# 1以外のWEPキーを使用する他のESSIDを定義する場合に備えてこのようにします
#
# キーの前に s: と付けることでASCIIキーとして扱われ、それ以外はHEXキーになります
#
# enc open とするとオープンセキュリティ(もっとも安全性が高い)が指定されます
# enc restricted とすると制限セキュリティ(もっとも安全性が低い)が指定されます
key_ESSID1="[1] s:yourkeyhere key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
# 以下の部分は利用可能なアクセスポイントをスキャンするときのみ有効です
# 複数のアクセスポイントが見える場合があるので、
# 接続先の優先順位を定義する必要があります
preferred_aps="'ESSID1' 'ESSID2'"
AP の選択を微調整する
いくつかのオプションを追加してAPの選択を微調整することができますが、これらは必須ではありません。
1つの方法は、選択したAPのみに接続するようシステムを設定することです。デフォルトでは、すべての設定済みのものに失敗し、かつwireless-toolsが暗号化されていないアクセスポイントに接続できる場合、それに接続します。associate_order 変数でこの振る舞いを変更できます。値とどのように変更されるかを示した表は以下のとおりです。
Value | Description |
---|---|
any | デフォルトの動作。 |
preferredonly | 選択したAPリストの中の見えるAPのみに接続します。 |
forcepreferred | 選択したリストの中にあるAPがスキャンで見つからない場合、順番に強制的にそれらに接続します。 |
forcepreferredonly | APをスキャンしません - 代わりに順番に各APへの接続を試します。 |
forceany | forcepreferredと同様にし、さらに利用可能な他のAPに接続します。 |
blacklist_apsとunique_apという選択もあります。blacklist_apsはpreferred_apsと似た動作をします。unique_apはyesまたはnoの値で、2つめの無線インターフェースが1つめのインターフェースと同じアクセスポイントに接続できるかを表します。
# あるアクセスポイントに絶対に接続したくない場合もあります
blacklist_aps="'ESSID3' 'ESSID4'"
# 複数の無線カードがある場合、各カードに
# 同じアクセスポイントへの接続を許すかどうか指定できます
# 値は"yes"か"no"です
# デフォルトは"yes"です
unique_ap="yes"
Ad-hoc および master モード
managedモードですべてのアクセスポイントへの接続が失敗した場合、フォールバックとしてシステムをad-hocノードに設定するには以下を使います:
adhoc_essid_eth0="This Adhoc Node"
ad-hocネットワークに接続したり、システムをmasterモードにしてそれ自体をアクセスポイントにすることもできます。
# モードの設定 - managed (default), ad-hoc または master に設定できます
# すべてのドライバーがすべてのモードをサポートしているとは限りません
mode_eth0="ad-hoc"
# インターフェースのESSIDを設定します
# managedモードでは、インターフェースは指定されたESSIDのみを試行、接続します
essid_eth0="This Adhoc Node"
# 指定されていない場合、チャンネル3が使用されます
channel_eth0="9"
チャンネルの選択についての重要な資料がNetBSDの文書の BSD wavelan documentation にあります。14のチャンネルが使用可能です; 北米ではチャンネル1-11、欧州の大部分ではチャンネル1-13、フランスではチャンネル10-13、日本ではチャンネル14のみが合法であるとのことです。疑問があれば、カードやアクセスポイントの付属文書を参照してください。選択したチャンネルがアクセスポイント(またはad-hocネットワークの他のカード)があるチャンネルと同じになっていることを確認してください。北米で売られているカードのデフォルトは3、フランスで売られているカードのデフォルトは11、日本で売られているカードのデフォルトは14です。
wireless tools のトラブルシューティング
ドライバーや環境の問題によっては無線を立ち上げ維持する上で役に立つさらにいくつかの変数があります。
変数名 | デフォルト値 | 説明 |
---|---|---|
iwconfig_eth0 | iwconfigの送信内容の詳細については iwconfigのman pageを参照してください。 | |
iwpriv_eth0 | iwprivの送信内容の詳細についてはiwprivのman pageを参照してください。 | |
sleep_scan_eth0 | 0 | スキャンを試みる前にスリープする秒数。ドライバー/ファームウェアが使用可能になるまでにより時間がかかる場合に必要になります。 |
sleep_associate_eth0 | 5 | 次のアクセスポイントに移る前に、アクセスポイントに接続しようとしているインターフェースを待機する秒数。 |
associate_test_eth0 | MAC | いくつかのドライバーは接続が失われたり接続を試行した際に不正なMACアドレスをリセットしません。あるドライバーは接続が失われたり接続を試行した際にクオリティレベルをリセットしません。有効な設定は MAC、quality、そして all です。 |
scan_mode_eth0 | いくつかのドライバーはad-hocモードでスキャンする必要があります。スキャンが失敗する場合はここで ad-hoc の設定を試してみてください。 | |
iwpriv_scan_pre_eth0 | スキャンの前にいくつかのiwprivコマンドをインターフェースに送信します。詳細についてはiwprivのman pageを参照してください。 | |
iwpriv_scan_post_eth0 | スキャンの後にいくつかのiwprivコマンドをインターフェースに送信します。詳細についてはiwprivのman pageを参照してください。 |
ESSID ごとにネットワーク設定を定義する
この節では、ESSIDベースでネットワークを設定する方法を説明します。例として、ESSIDが ESSID1 の無線ネットワークには静的IPアドレスを設定し、ESSIDが ESSID2 のものにはDHCPを使用します。
この設定はwpa_supplicantとwireless-toolsのいずれでも動作します。
変数名についてのドキュメントを参照してください。
config_ESSID1="192.168.0.3/24 brd 192.168.0.255"
routes_ESSID1="default via 192.168.0.1"
config_ESSID2="dhcp"
fallback_ESSID2="192.168.3.4/24"
fallback_route_ESSID2="default via 192.168.3.1"
# ネームサーバーその他についても定義できます
# 注意: 特に設定しない限り、DHCPはこれらを上書きします
dns_servers_ESSID1="192.168.0.1 192.168.0.2"
dns_domain_ESSID1="some.domain"
dns_search_domains_ESSID1="search.this.domain search.that.domain"
# アクセスポイントのMACアドレスによって上書きします
# これは同じESSIDを持つ別の場所に行く場合に便利です
config_001122334455="dhcp"
dhcpcd_001122334455="-t 10"
dns_servers_001122334455="192.168.0.1 192.168.0.2"