Wicd

提供: ArchWiki
2015年1月6日 (火) 21:47時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

関連記事

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

ノート: 現在、人材不足のために Wicd の開発は滞っています。詳しくは、こちらのバグレポートを見て下さい。活発に開発されているネットワークマネージャを使いたい場合は、Connmannetctl を選択してください。

インストール

基本パッケージ

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

GTK+ クライアント

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

KDE クライアント

KDE フロントエンドを使いたい場合は、AUR から wicd-kdeAUR をインストールしてください。

通知

ネットワークの状態に関する通知を有効にするには、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-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

トラブルシューティング

有線接続のトラブルシューティングについてはネットワーク設定#トラブルシューティングを、無線接続のトラブルシューティングについてはワイヤレス設定#トラブルシューティングを見てください。このセクションでは wicd に関する問題だけを取り扱います。

ハイバネート・サスペンドから復帰したときに自動接続

いくつかの理由で、ハイバネートやサスペンドからの復帰時の自動接続は自動的に動作しません。以下のサービスファイルを有効化することで Wicd を手動で再起動できます。

/etc/systemd/system/wicd-resume@.service
[Unit]
Description=Restart Wicd autoconnect service on resume
After=suspend.target

[Service]
Type=oneshot
User=%i
RemainAfterExit=yes
ExecStartPre=/usr/share/wicd/daemon/suspend.py
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 を見てください。

Bad password using PEAP with TKIP/MS-CHAPv2

The connection template PEAP with TKIP/MS-CHAPv2 requires the user to enter the path to a CA certificate besides entering username and password. However this can cause troubles resulting in an error message of a bad password [1]. A possible solution is the usage of PEAP with GTC instead of TKIP/MS-CHAPv2 which does not require one to enter the path of the CA cert.

Wicd skips obtaining IP address on wlp

This can be caused by dhcpcd running alongside wicd as systemd service. A solution would be to stop/disable dhcpcd.

dhcpcd が動作しない

Normally it should not be required, nor recommended to run the dhcpcd service next to wicd. However, if you encounter the error message that dhcpcd is not running, then you can try running dhcpcd and see if you encounter any incompatibilities when using both services at the same time.

# systemctl start dhcpcd

Alternatively, as a workaround you might consider switching to dhclient in the Wicd settings.

ノート: If you get send_packet: Network is unreachable errors, then try increasing the timeout in /usr/share/dhclient/dhclient.conf.

参照