Wvdial
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 オプションだけが変更されます。
ログイン情報を入力したら、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 したりウェブブラウザを開くことで簡単に確認できます。