Wvdial

出自 ArchWiki

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

安装

Install 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 应该可以工作了。您可以移动到下一节。但是,对于需要特定 Init 字符串和用户/密码组合的 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 调制解调器#连接速度慢

自动重连

如果 wvdial 随机断开连接,您可以使用以下脚本

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

多个设备

通常会有多个设备(例如,在 /dev/ttyUSB0/dev/ttyUSB1/dev/ttyUSB2)。如果不确定使用哪个,请依次尝试每个设备,或使用 /dev/gsmmodemusb_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,事情会变得简单,但如果您需要它,请在 wvdial thenet 之前运行 wvdial mypin

最终的 wvdial 命令应该启动 pppd,并且获得的 IP 地址应该在终端输出中可见。此时,互联网连接应该已激活,可以通过 Web 浏览器或 ping 外部 IP 地址轻松检查。

参见