Wvdial
WvDial 是一个点对点协议(Point-to-Point Protocol)拨号器:它拨打调制解调器并启动 ppp 以连接到互联网。
安装
配置
当 wvdial 启动时,它首先从 /etc/wvdial.conf 和 ~/.wvdialrc 加载其配置。如果 /etc/wvdial.conf 不存在,最简单的创建方法是使用提供的配置实用程序 wvdialconf。
# wvdialconf /etc/wvdial.conf
它有助于生成 wvdial 所需的配置文件。wvdialconf 会检测你的调制解调器,并自动填写调制解调器、最大波特率和良好的初始化字符串(Init 选项),并根据这些信息生成或更新 wvdial 配置文件(/etc/wvdial.conf)。
如果配置文件已存在,运行 wvdialconf 是安全的。在这种情况下,只有 [Dialer Defaults] 部分的 Modem、Baud、Init 和 Init2 选项会被更改,并且仅在自动检测成功时才会更改。
/etc/wvdial.conf 并指定你的互联网账户的电话号码、登录名和密码,以便 wvdial 能够工作。填写登录信息后,wvdial 应该就可以工作了。你可以继续下一节。然而,对于需要特定初始化字符串和用户名/密码组合的 USB 调制解调器提供商,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 拨打 ppp 连接。本文档描述了三种不同的方法,每种方法的设置难度和对安全性的影响都不同。
wvdial 需要以 root 身份运行,命令如下:
# wvdial option
如果你没有添加任何部分,或者 /etc/wvdial.conf 是自动生成的,请将 option 留空。
# wvdial
SUID
默认情况下,普通用户无法使用 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 的组(组名可随意更改),并允许该组成员以 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 可能是允许普通用户使用 wvdial 建立拨号连接的最安全选项。它可以用于按用户或按组授予权限。使用 sudo 的另一个好处是,它只需要设置一次;前两种解决方案在安装新版本的 wvdial 包时都会被“撤销”。
使用 visudo 编辑 /etc/sudoers 文件:
# visudo
要赋予特定用户以 root 身份运行 wvdial 的权限,请添加以下行(更改用户名):
username localhost = /usr/bin/wvdial
要将组(在此例中为 dialout)的所有成员授予相同的权限:
%dialout localhost = /usr/bin/wvdial
如果 ip addr 显示 pppd 条目,则表示会话已准备就绪。
技巧与窍门
以下适用于 USB 调制解调器。
连接速度慢
请参阅 USB 3G Modem#连接速度慢。
自动重连
如果 wvdial 随机断开连接,你可以使用以下脚本:
#! /bin/bash
(
while : ; do
wvdial
sleep 10
done
) &
多设备
通常会有多个设备(例如 /dev/ttyUSB0、/dev/ttyUSB1、/dev/ttyUSB2)。如果不确定使用哪个,可以逐一尝试,或者使用 /dev/gsmmodem(由 usb_modeswitch 设置的链接),它应该指向正确的设备。准备好配置文件后,通过运行以下命令建立互联网连接:
$ wvdial options
如果需要,可以将额外的设置命令放在一个简单的脚本中,如下所示:
usb_modeswitch sleep 2 modprobe usbserial vendor=0xVVVV product=0xMMMM maxSize=4096 sleep 2 wvdial thenet
其中 VVVV 是 lsusb 中的十六进制厂商 ID,MMMM 是调制解调器模式下的十六进制产品 ID,“thenet”是你希望使用的 wvdial.conf 中的段落名称。 maxSize 选项可能不是必需的。禁用 SIM PIN 会简化问题,但如果需要 PIN,请在运行 wvdial thenet 之前运行 wvdial mypin。
最终的 wvdial 命令应该会启动 pppd,并且获得的 IP 地址应该在终端输出中可见。此时互联网连接应该已经激活,可以通过网络浏览器或 ping 外部 IP 地址轻松检查。