wvdial是linux下的智能化撥號工具,利用wvdial和ppp可以實現linux下的輕松上網。在整個過程中wvdial的作用是撥號并等待提示,并根據提示輸入相應的用戶名和密碼等認證信息;ppp的作用是與撥入方協商傳輸數據的方法并維持該連接。
一、wvdial及其相關配置
wvdial的功能很強大,會試探著去猜測如何撥號及登錄到服務器,同時它還會對常見的錯誤智能的進行處理,不象chat一樣,要求你去寫登錄腳本。
wvdial只有一個配置文件 /etc/wvdial.conf。wvdial的啟動過程是這樣的:首先載入wvdial.conf配置文件,然后再初始化modem并撥號,撥號后等待撥入方的響應,收到撥入方響應后則啟動pppd。
可以用wvdialconf程序自動生成wvdial.conf配置文件,自行該程序的格式為:
wvdialconf
/etc/wvdial.conf
在執行該程序的過程中,程序會自動檢測你的modem的相關配置,包括可用的設備文件名,modem的波特率,初始化字符等等相關的撥號信息,并根據這些信息自動生成wvdial.conf配置文件。如果/etc/wvdial.conf文件已經存在時,再次執行該命令只會改變其中的
Modem、Band、Init等選項。一個典型的自動生成的配置文件可能是這樣的:
[Dialer Defaults]
Modem = /dev/ttyS1
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1
&D2 S11=55 +FCLASS=0
;Phone =
;Username =
;Password =
wvdial
的執行格式為
:
wvdial --help | --version | section
相關的說明如下
:
--help:
顯示簡單的幫助信息
--version:
顯示
wvdial
的版本號
section:
這里的
section
有點象
windows
里的
ini
文件
,
一個
wvdial.conf
配置文件可以有好多個
section,
每一個
section
由一些變量組成
,
即由
變量
=
值的語句組成
,
如上所示。使用wvdialconf自動生成配置文件時將會自動生成一些常用的變量說明如下:
Inherits=InheritedSection:
使用wvdialconf自動生成配置文件時將會自動生成[Dialer
Defaults],除此之外,你還可以自定義你自己的section。程序運行時,首先載入[Dialer Defaults],然后再用指定的section的相應選項覆蓋[Dialer
Defaults]的相應選項。比如,我們在 wvdial.conf中還有[Dialer Tom],假如我們運行wvdail Tom,則系統將先讀入[Dialer
Defaults],然后再用[Dialer Tom]覆蓋[Dialer Defaults]的相應選項。如果除了以上 的section之外還有[Dialer
169]并且內容如下:
[Dialer
Tom]
Username=tom
Password=xxx
Inherits=169
[Dialer
169]
Phone=169
如果這時候我們執行wvdial
Tom則系統將先讀入[Dialer Defaults],然后再用[Dialer Tom]覆蓋[Dialer Defaults]的相應選項,最后再用[Dialer
169]的相應選項來覆蓋前二者的相應選項。由此可見,利用wvdial,我們可以很方便地在不同的ISP或modem之間來回移動(假如你有幾個ISP 或medom的話)。
Medom=/dev/ttySx:用于指定是用的medom,缺省的為/dev/medom。當然,在這里我們的medom是由wvdialconf自動檢測并配置的,所以我們可以忽略該變量。
Band=57600:wvdial與modem通信的波特率,同上可以忽略。
Area
Code=xxxx : 設置區號
Dial
Prefix=x: 假如你正在使用分機,撥外線需撥9時,可設該值為9。
Username=xxxx:登錄時的用戶名
Passwd=xxxxxx:登錄密碼
Phone=xxxxx:
所撥的號碼
PPPP
Path=:設置pppd所在的路徑,缺省為/usr/sbin/pppd
Force
Address=x.x.x.x :設置靜態ip,一般的isp都會為你分配動態的ip地址。
New
PPPD= 1 or 0: pppd 2.3.0及其以上版本需要/etc/ppp/peers/wvdial文件,如果你的pppd是2.3.0以上版本請設為1.
Auto
Reconnect=on :斷線時是否自動重新連接,缺省設為是。
以上只是wvdial.conf中的常用選項,具體情參考wvdial手冊。
二、pppd及其相關配置
pppd的配置選項相對要復雜得多,你可以用命令行的形式引用有關的選項,也可以把要引用的選項寫到/etc/ppp/options中進行引用。
下面的示例文件包含了最常用的選項及其相關的說明:
#
/etc/ppp/options
#
主機名稱
mng.null.edu.cn
#
如果沒有給定本地ip, pppd 將使用主機的第一個ip地址;
#
如果指定了"noipdefault" 選項, pppd將使用撥入方提供的ip地址
noipdefault
#
選定該選項, pppd 將接受撥入方提供的ip地址
ipcp-accept-local
#
選定該選項, pppd 將接受撥入方自己的ip地址
ipcp-accept-remote
#
設置缺省網關
defaultroute
#
在傳輸數據包之前,讓撥入方先自我認證,注意一般的ISP(如169、163)都不包含該機 # 制,故應選中noauth
noauth
#
使用硬件流控制
crtscts
#將撥號信息作日志
debug
以上只是options中的常用選項,具體情參考pppd手冊。
三、一個實例
下面讓我們來看一個具體的應用,在該應用中我們實現了撥號和斷開連接的自動化。涉及到的配置文件有:
/etc/wvdial.conf
:wvdial的配置文件
/etc/ppp/option : pppd
的配置文件
/etc/ppp/ppp-on :
撥號自動化腳本
/etc/ppp/ppp-of :
斷開連接自動化腳本
步驟一
:
確保
modem
已經正確連接
,linux
已檢測并自動配置了該
modem
步驟二
:
運行
wvdialconf,
生成
/etc/wvdial.conf
文件并修改如下
:
[Dialer Defaults]
Modem = /dev/ttyS1
Baud = 115200
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1
&D2 S11=55 +FCLASS=0
New PPPD= 1
[Dialer Tom]
Phone =
169
Username =
tom
Password = *******
步驟三
:
編輯并配置
/etc/ppp/options,
如下所示
:
noipdefault
ipcp-accept-local
ipcp-accept-remote
defaultroute
noauth
crtscts
debug
步驟四
:
編寫自動化腳本
1.
撥號腳本
/etc/ppp/ppp-on:
#!/bin/sh
# This script initiates the ppp
connections by wvdial
wvdial tom &
2.
斷開連接自動化腳本
/etc/ppp/ppp-off:
#!/bin/sh
#!stop wvdial
killall wvdial
# If the ppp0 pid file is present
then the program is running. Stop it
if [ -r /var/run/ppp0.pid ]; then
kill -INT `cat /var/run/ppp0.pid`
echo "PPP link to ppp0
terminated."
else
echo "ERROR: PPP link is not
active on ppp0"
exit 0
fi
exit 1
編輯完后
,
執行
chmod u+x /etc/ppp/ppp*
改變文件權限。到此大功告成
,
以后只要運行
/etc/ppp/ppp-on
便自動撥號
,
執行
/etc/ppp/ppp-of
便自動斷開連接。