Wicd

提供: ArchWiki
移動先: 案内検索

Wicd は有線・無線インターフェイスを管理することができるネットワーク接続マネージャであり、NetworkManager と似ています。Wicd は PythonGTK+ で書かれています。また、Qt で書かれた、KDE 用の Wicd も Arch User Repository からインストールできます。Wicd は curses インターフェイスでターミナルから実行することもでき、X サーバーセッションやタスクパネルを必要としません (#テキストモードで Wicd を実行 を参照)。

インストール

基本パッケージ

公式リポジトリから wicdインストールしてください。wicd デーモンを実行するのに必要な全てのプログラムと wicd-cliwicd-curses インターフェイスが含まれています。

GTK+ クライアント

GTK+ フロントエンドを使いたい場合は、公式リポジトリの wicd-gtk をインストールしてください。wicd の GTK インターフェイスを実行するのに必要な全てのプログラムと、システムトレイにクライアントを表示させるための autostart ファイルが含まれています。

KDE クライアント

KDE フロントエンドを使いたい場合は、AUR から wicd-kdeAUR[リンク切れ: アーカイブ: aur-mirror] をインストールしてください。

通知

ネットワークの状態に関する通知を有効にするには、notification-daemonpython2-notify パッケージをインストールする必要があります。

GNOME を使ってない場合は、notification-daemon の代わりに、GNOME パッケージを必要としない xfce4-notifyd を通知デーモンとしてインストールすると良いでしょう。

その他

AUR には wicd-bzrAUR[リンク切れ: パッケージが存在しません] ビルドスクリプトが入っており、最新の開発ブランチをビルドします。別のバージョンを使ったり自分でパッケージを作りたい場合は、ABS を使うことで簡単にビルドできます。

設定

初期設定

Wicd にはデーモンがあり、それを起動する必要があります。

警告: 複数のネットワークマネージャを起動すると問題が発生するので、あらかじめ他のネットワーク管理デーモンは全て無効化しておいてください。

まず、(netctl, netcfg, dhcpcd, NetworkManager など) 前に使っていたネットワークデーモンを停止させます。

netctl, netcfg, dhcpcd, networkmanager などの既存のネットワーク管理サービスを無効化してください。Systemd#ユニットを使う を参照。

ノート: network サービスを置き換えている netctl ではなく、network デーモンを停止・無効化する必要があるかもしれません。よくわからないならば、両方とも無効化してください。

wicd systemd デーモンを起動して、ブート時に起動するように有効化してください。

ユーザーを users グループに追加してください:

# gpasswd -a USERNAME users
ノート: The Unix group that D-Bus allows to access wicd is subject to change, and it may be different than users. Check which policy group is specified in /etc/dbus-1/system.d/wicd.conf, and add your user to that group.

ユーザーを新しいグループに追加したら、一度ログアウトして再ログインしてください。

デスクトップ環境で 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
ノート:
  • Wicd はパスキーのプロンプトを表示しません。鍵がかけられた接続 (WPA/WEP) を使う場合、接続したいネットワークを開いて、Advanced をクリックして必要な情報を入力してください。
  • wicd-curseswicd-gtk より不安定で、定期的にクラッシュします。無線ネットワークに接続しようとするとクラッシュする場合は wicd-patchedAUR を使用してください。

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 のスタートアップに追加することでログイン時にアプリケーションを起動させることができます。

ノート: /etc/xdg/autostart/wicd-tray.desktop が存在しているのに wicd-client を DE/WM のスタートアップに追加してしまうと、wicd-client のインスタンスが2つ実行してしまいます。

スクリプト

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
	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
	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 クライアントがロードできなくなることが時々あります。

/etc/wicd/ ディレクトリの設定ファイルを削除するのが解決方法です。

# systemctl stop wicd
# rm /etc/wicd/*.conf
# systemctl start wicd

sudo のグラフィカルプログラムについての注意事項

wicd がグラフィカルな sudo プログラムを見つけられないというエラーを表示する場合 gksu, 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 に切り替えることもできます。

ノート: send_packet: Network is unreachable エラーが表示される場合、/usr/share/dhclient/dhclient.conf の timeout の値を上げてみて下さい。

参照