跳转至内容

Wvdial

来自 ArchWiki

WvDial 是一个点对点协议(Point-to-Point Protocol)拨号器:它拨打调制解调器并启动 ppp 以连接到互联网。

安装

安装 wvdial 包。

配置

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 选项会被更改,并且仅在自动检测成功时才会更改。

注意 wvdialconf 不会自动填写你的登录信息。你需要编辑 /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

警告 这可以说是最简单的设置,但对系统安全有重大影响,因为它意味着**所有用户都可以以 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 的组(组名可随意更改),并允许该组成员以 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 地址轻松检查。

参见