Wvdial

提供: ArchWiki
2017年10月12日 (木) 23:34時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「Tips and Tricks」を「ヒントとテクニック‎」に置換)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

WvDial は Point-to-Point Protocol ダイアラです。インターネットに接続するためにモデムに発信して pppd を起動します。

設定

WvDial を起動すると、まず /etc/wvdial.conf~/.wvdialrc から設定が読み込まれます。/etc/wvdial.conf が存在しない場合、WvDial に付属している設定ユーティリティの wvdialconf を使って作成するのが一番簡単です:

wvdialconf /etc/wvdial.conf

wvdialconf は WvDial が必要とするファイルを生成するのを補助します。wvdialconf はモデムを検出して Modem, 最大 Baud レート, 初期化文字列 (Init オプション) を自動的に埋めて、入手した情報を基に WvDial の設定ファイル (/etc/wvdial.conf) を生成・更新してくれます。

設定ファイルが既に存在する場合でも wvdialconf を実行することができます。その場合 [Dialer Defaults] セクションの Modem, Baud, Init, Init2 オプションだけが変更されます。

ノート: Wvdialconf でもログイン情報は自動的に入力されません。WvDial を使うには /etc/wvdial.conf を編集してインターネットアカウントの電話番号, ログイン名, パスワードを指定してください。

ログイン情報を入力したら、wvdial は機能するはずです。次のセクションに進んでください。ただし、特定の USB モデムのプロバイダでは Init 文字列やユーザー/パスワードに特殊な設定が要ることがあります。mkwvconf-gitAUR が wvdial の設定の生成に役に立ちます (mobile-broadband-provider-info-gitAUR パッケージに依存しています)。

手動で設定したら /etc/wvdial.conf は以下のようになります:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Modem = /dev/ttyUSB2
Baud = 9600

[Dialer thenet]
Phone = *99***1#
Username = thenetuser
Password = thenetpw
; Username = 9180****** (If your provider use without Username)
; Password = 9180****** (If your provider use without Password)
Stupid Mode = 1
Baud = 460800
Init3 = AT+CGDCONT=1,"IP","apn.thenet.net"

[Dialer mypin]
Init4 = AT+CPIN=1234

wvdial を使う

通常ユーザーで wvdial を使って ppp 接続を発信できるようにする方法はいくつか存在します。この文章ではそれぞれセットアップの難易度やセキュリティが違う、3つの異なる方法を説明します。

wvdial は以下のコマンドを root で実行することで起動します:

# wvdial <section>

セクションを追加していない場合や /etc/wvdial.conf を自動で生成した場合は <section> は何も指定しなくてかまいません:

# wvdial

suid を使う

一番簡単な方法ですが、全てのユーザーが root で wvdial を実行できるようになるのでセキュリティ的には問題があります。できれば別の方法を使うようにしてください。

デフォルトでは通常ユーザーから wvdial を使って ppp 接続をダイアルすることはできないので、パーミッションを変更します:

# chmod u+s /usr/bin/wvdial

パーミッションは以下のようになるはずです:

# ls -l /usr/bin/wvdial
-rwsr-xr-x  1 root root 114368 2005-12-07 19:21 /usr/bin/wvdial

dialout グループを使う

dialout というグループを作成してグループのメンバーに root で wvdial を実行する権限を与えるというセキュアな方法です (グループの名前は何でもかまいません)。

まずグループを作成してユーザーをグループに追加します:

# groupadd dialout
# gpasswd -a username dialout
ノート: 現在使用しているユーザーのグループリストを更新するには一度ログアウトしてから再ログインする必要があります。

それから wvdial にグループを設定してパーミッションを変更します:

# chgrp dialout /usr/bin/wvdial
# chmod u+s,o= /usr/bin/wvdial

実行ファイルは以下のようなパーミッションになるはずです:

$ ls -l /usr/bin/wvdial
-rwsr-x---  1 root dialout 114368 2005-12-07 19:21 /usr/bin/wvdial

sudo を使う

次の記事を参照: sudo

sudo はおそらく wvdial を使って通常ユーザーでダイアルアップ接続を確立するのに一番セキュアな方法です。sudo ではユーザーごと、あるいはグループごとに権限を与えることができます。sudo を使うときは設定は一回で済むという利点もあります。上記の方法はどちらも wvdial の新しいパッケージをインストールした場合に元に戻ってしまいます。

visudo を使って /etc/sudoers ファイルを編集してください:

# visudo

root で wvdial を実行する権限を特定のユーザーに与える場合、以下の行を追加 (username は適当に置き換えて下さい):

username localhost = /usr/bin/wvdial

グループの全てのメンバーに同じ権限を与える場合 (以下の例では dialout を使用):

%dialout localhost = /usr/bin/wvdial

ip addr で pppd エントリが表示されれば、セッションの準備が出来ています。

ヒントとテクニック‎

以下は USB モデムに当てはまります。

接続速度が遅い

Linux での接続速度が Windows よりも低速になることがあります [1]

速度が遅い問題を解決する方法はまだ完全には確認されていません。大抵の場合、受信機のシグナルが悪かったりセルに人が多すぎるのが低速度の原因です。また、以下の方法を使うことで接続速度を改善することができる場合もあります。

QoS パラメータ

AT+CGEQMIN や AT+CGEQREQ コマンドを使って QoS コマンドを設定することができます。これによって接続速度が速くなったり遅くなったりすることがあります。以下の Init コマンドを /etc/wvdial.conf に追加してください:

Init6 = AT+CGEQMIN=1,4,64,640,64,640
Init7 = AT+CGEQREQ=1,4,64,640,64,640

Baud パラメータ

/etc/wvdial.conf に Baud パラメータを使うことで接続速度を改善することができます:

Baud = 460800

Windows の公式のモデムアプリケーションによって設定される baud レートの値を確認することを推奨します。

自動で再接続

wvdial の接続がランダムに途切れる場合、以下のスクリプトで自動で再接続できます。

#! /bin/bash
(
   while : ; do
       wvdial
       sleep 10
   done
) &

複数のデバイス

デバイスが複数存在して (例えば /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2)、どれを使えばいいのかわからない場合、ひとつずつ試してみるか /dev/gsmmodem (usb_modeswitch によって設定されるリンク) を使って適当なデバイスを使うようにしてください。設定ファイルができたら、以下を実行してインターネット接続を確立します:

$ wvdial <section>

必要であれば、以下のようなセットアップコマンドを追加したシンプルなスクリプトを作成してください:

usb_modeswitch
sleep 2
modprobe usbserial vendor=0xVVVV product=0xMMMM maxSize=4096
sleep 2
wvdial thenet

VVVV は lsusb で確認できる16進数のベンダー ID に、MMMM はモデムモードで確認できる16進数のプロダクト ID に、"thenet" は wvdial.conf の使用したいセクションの名前に置き換えて下さい。maxSize オプションは必要だったり必要なかったりします。SIM の PIN を無効化していれば物事は簡単ですが、PIN が必要な場合、"wvdial thenet" の前に "wvdial mypin" を実行してください。

最後の wvdial コマンドは pppd を起動して IP アドレスを取得し、ターミナルに出力します。インターネット接続が確立されたかどうかは、外部の IP アドレスに ping したりウェブブラウザを開くことで簡単に確認できます。