Wicd
Wicd は有線・無線インターフェイスを管理することができるネットワーク接続マネージャであり、NetworkManager と似ています。Wicd は Python と GTK+ で書かれています。また、Qt で書かれた、KDE 用の Wicd も Arch User Repository からインストールできます。Wicd は curses インターフェイスでターミナルから実行することもでき、X サーバーセッションやタスクパネルを必要としません (#テキストモードで Wicd を実行 を参照)。
インストール
基本パッケージ
wicd パッケージをインストールしてください。wicd デーモンを実行するのに必要な全てのプログラムと wicd-cli
と wicd-curses
インターフェイスが含まれています。
GTK+ クライアント
GTK+ フロントエンドを使いたい場合は、wicd-gtk をインストールしてください。wicd の GTK インターフェイスを実行するのに必要な全てのプログラムと、システムトレイにクライアントを表示させるための autostart ファイルが含まれています。
KDE クライアント
KDE フロントエンドを使いたい場合は、AUR から wicd-kdeAUR[リンク切れ: アーカイブ: aur-mirror] をインストールしてください。
通知
ネットワークの状態に関する通知を有効にするには、notification-daemon と python2-notify パッケージをインストールする必要があります。
GNOME を使ってない場合は、notification-daemon の代わりに、GNOME パッケージを必要としない xfce4-notifyd を通知デーモンとしてインストールすると良いでしょう。
その他
wicd-gitAUR パッケージで最新の開発ブランチをインストールできます。別のバージョンを使ったり自分でパッケージを作りたい場合は、ABS を使うことで簡単にビルドできます。
設定
初期設定
Wicd にはデーモンがあり、それを起動する必要があります。
まず、(netctl, netcfg, dhcpcd, NetworkManager など) 前に使っていたネットワークデーモンを停止させます。
netctl
, netcfg
, dhcpcd
, networkmanager
などの既存のネットワーク管理サービスを無効化してください。Systemd#ユニットを使う を参照。
wicd systemd デーモンを起動して、ブート時に起動するように有効化してください。
ユーザーを users
グループに追加してください:
# gpasswd -a USERNAME users
ユーザーを新しいグループに追加したら、一度ログアウトして再ログインしてください。
デスクトップ環境で Wicd を実行
wicd-gtk をインストールしてデスクトップ環境がある場合、仮想ターミナルを開いて以下のコマンドを実行します。
- システムサービスとして Wicd を起動するには、次のコマンドを実行:
# systemctl start wicd
- Wicd をロードするには、次のコマンドを実行:
$ wicd-client
- 通知エリアに最小化させて起動するには、次のコマンドを実行:
$ wicd-client --tray
- デスクトップ環境に通知エリアが存在しない場合、または wicd のトレイアイコンを表示してほしくない場合、次のコマンドを実行:
$ wicd-client -n
テキストモードで Wicd を実行
wicd-gtk をインストールしていない場合、wicd-cli か wicd-curses を使います:
$ wicd-curses
WPA supplicant ドライバーの切り替え
Wicd は WPA supplicant ドライバーとして Wext を使うことを推奨しておりデフォルトで使用しますが、これは 時代遅れの挙動 です。古いドライバーでしかサポートされていない場合を除いて、基本的には nl80211 を使うべきです。関連するオプションは Preferences > Advanced Settings にあります。
自動起動
wicd-gtk パッケージは /etc/xdg/autostart/wicd-tray.desktop
ファイルを作成し、DE/WM のログイン時に wicd-client
を自動で起動します。その場合、wicd のシステムサービスを有効にするだけで十分です:
# systemctl enable wicd
/etc/xdg/autostart/wicd-tray.desktop
が存在しない場合、wicd-client を DE/WM のスタートアップに追加することでログイン時にアプリケーションを起動させることができます。
スクリプト
Wicd には接続プロセスの段階 (接続や切断の前後) ごとにスクリプトを実行することができる機能があります。/etc/wicd/scripts/
内のそれぞれの段階にスクリプトを置いて実行可能属性を付与してください。
スクリプトは3つのパラメータを受け取ることができます:
$1 - 接続タイプ (wireless/wired)。 $2 - ESSID (ネットワーク名)。 $3 - BSSID (ゲートウェイ MAC)。
ARP スプーフィング攻撃の防止
以下のスクリプトを使うことで静的な ARP が設定され、ARP スプーフィング攻撃の防止になります。case ステートメントの中の値を、静的な ARP エントリを設定したいネットワークに変更してください。root で実行します:
#!/bin/bash #Set the parameters passed to this script to meaningful variable names. connection_type="$1" essid="$2" bssid="$3" if [ "${connection_type}" == "wireless" ]; then #Change below to match your networks. case "$essid" in YOUR-NETWORK-NAME-ESSID) arp -s 192.168.0.1 00:11:22:33:44:55 ;; Netgear01923) arp -s 192.168.0.1 10:11:20:33:40:50 ;; ANOTHER-ESSID) arp -s 192.168.0.1 11:33:55:77:99:00 ;; *) echo "Static ARP not set. No network defined." ;; esac fi
macchanger を使って MAC を変更
MAC アドレス偽装#macchanger を見て下さい。
以下のスクリプトを使うことでネットワークインターフェイスの MAC アドレスを変更することができます。
ネットワークに接続するときに MAC を変更するには、スクリプトを /etc/wicd/scripts/preconnect/
下に配置してください。
macchanger コマンドは macchanger --help
を見て自由に変更してください。
#!/usr/bin/env bash connection_type="$1" if [[ "${connection_type}" == "wireless" ]]; then ip link set wlp2s0 down macchanger -A wlp2s0 ip link set wlp2s0 up elif [[ "${connection_type}" == "wired" ]]; then ip link set enp1s0 down macchanger -A enp1s0 ip link set enp1s0 up fi
openvpn クライアントの起動・停止
特定の ESSID に接続されたときに openvpn クライアントを再起動させるには /etc/wicd/scripts/postconnect/
に以下のスクリプトを配置してください。YOUR_WIFI_ESSID
は適当な ESSID に置き換えてください。
#!/bin/sh ESSID="YOUR_WIFI_ESSID" if [ $1 == "wireless" ]; then if [ $2 == "$ESSID" ]; then systemctl restart openvpn-client@client fi fi
特定の ESSID から切断されたときに openvpn クライアントを停止するには /etc/wicd/scripts/predisconnect/
に以下のスクリプトを配置してください。YOUR_WIFI_ESSID
は適当な ESSID に置き換えてください。
#!/bin/sh ESSID="YOUR_WIFI_ESSID" if [ $1 == "wireless" ]; then if [ $2 == "$ESSID" ]; then systemctl stop openvpn-client@client fi fi
トラブルシューティング
有線接続のトラブルシューティングについてはネットワーク設定#トラブルシューティングを、無線接続のトラブルシューティングについてはワイヤレス設定#トラブルシューティングを見てください。このセクションでは wicd に関する問題だけを取り扱います。
ハイバネート・サスペンドから復帰したときに自動接続
いくつかの理由で、ハイバネートやサスペンドからの復帰時の自動接続は自動的に動作しません。以下のサービスファイルを有効化することで Wicd を手動で再起動できます。
~/.config/systemd/user/wicd@resume.service
[Unit] Description=Restart Wicd autoconnect service on resume After=suspend.target [Service] Type=oneshot User=%i RemainAfterExit=no ExecStart=/usr/share/wicd/daemon/autoconnect.py [Install] WantedBy=suspend.target
pynotify のインポートが失敗して、通知が使えない
python2-notify パッケージは自動的にインストールされません。手動でインストールしてください。
D-Bus の接続エラーメッセージ
wicd が突然機能停止して D-Bus に関するエラーが表示される場合、設定ファイルも含めて wicd を完全に削除して、始めから再インストールする必要があります:
# pacman -R wicd # rm -rf /etc/wicd /var/log/wicd /etc/dbus-1/system.d/wicd* # pacman -S wicd
詳しくは次のリンクを見て下さい: https://bbs.archlinux.org/viewtopic.php?pid=577141#p577141
設定ファイルの問題によって wicd が動作しないときも Wicd-client は D-Bus の接続エラーのメッセージを吐きます ("Could not connect to wicd's D-Bus interface.")。空のアカウントが /etc/wicd/wired-settings.conf
に追加されているということも考えられます。その場合は
[]
を削除して wicd を再起動してください。
それでも動作しない場合は https://bbs.archlinux.org/viewtopic.php?pid=1268721 を読んで下さい。
パッケージを更新した後の問題
D-Bus のエラーによって、パッケージの更新後に wicd クライアントがロードできなくなることが時々あります。
wicd.service
を停止してから /etc/wicd/
ディレクトリの設定ファイルを削除して、wicd.service
を起動すれば解決します。
sudo のグラフィカルプログラムについての注意事項
wicd がグラフィカルな sudo プログラムを見つけられないというエラーを表示する場合 gksuAUR, ktsussAUR, kdebase-runtime のどれかをインストールして、適当なコマンドを実行してください:
$ ktsuss wicd-client -n
$ gksudo wicd-client -n
$ kdesu wicd-client -n
Eduroam
WPA2 Enterprise#Wicd を見てください。
wicd-client のアイコンがシステムトレイに2つ表示される
#自動起動 にある /etc/xdg/autostart
の autostart ファイルに関するノートや、#参照 にあるフォーラムの投稿やバグレポートを見て下さい。/etc/xdg/autostart/wicd-tray.desktop
が存在する場合、削除してください。systemd で wicd
サービスを有効にしてください。
TKIP/MS-CHAPv2 で PEAP を使用する場合にパスワードが通らない
TKIP/MS-CHAPv2 による PEAP 接続テンプレートでは、ユーザー名やパスワードの入力だけでなく、CA 証明書のパスも入力する必要があります。しかしながら、そのときにパスワードが不正だというエラーメッセージが表示されることがあります [1]。TKIP/MS-CHAPv2 の代わりに GTC で PEAP を使うことで CA 証明書のパスを入力する必要がなくなります。
Wicd が wlp で IP アドレスを取得しない
wicd が systemd サービスとして動作しているのに dhcpcd が動作しているのが原因です。dhcpcd を停止・無効化してください。
dhcpcd が動作しない
通常は、wicd と一緒に dhcpcd サービスを動作させることは必要ありませんし推奨されません。しかしながら、dhcpcd が動作していないというエラーメッセージが表示される場合、dhcpcd を動かしてみることで、同時に両方のサービスを動作させた場合に問題が発生しないか確認することができます:
# systemctl start dhcpcd
もしくは、Wicd の設定で dhclient に切り替えることもできます。
参照
- Forum post about two instances of wicd-client and
/etc/xdg/autostart
- Bug report mentioning /etc/xdg/autostart and wicd-client behavior