pppsetup 是一个交互式的命令行工具,用于配置PPP(Point-to-Point Protocol,点对点协议)拨号连接。它提供了一个简单易用的界面,帮助用户设置调制解调器连接、ISP账户信息和网络参数,适用于通过调制解调器拨号上网的场景。
在基于Debian/Ubuntu的系统上安装:
sudo apt-get update
sudo apt-get install ppp pppoeconf
在基于RHEL/CentOS的系统上安装:
sudo yum install ppp rp-pppoe
# 或者
sudo dnf install ppp rp-pppoe
在基于Arch Linux的系统上安装:
sudo pacman -S ppp rp-pppoe
pppsetup [选项]
或者在某些系统中:
sudo ppp-setup
| 选项 | 说明 |
|---|---|
--help |
显示帮助信息 |
--version |
显示版本信息 |
--interactive |
交互式配置模式(默认) |
--noninteractive |
非交互式配置模式 |
--device=DEVICE |
指定调制解调器设备 |
--provider=NAME |
指定ISP提供商名称 |
sudo pppsetup
# 或
sudo ppp-setup
运行pppsetup后,会进入交互式配置界面:
Welcome to the PPP connection setup utility.
1. 选择调制解调器设备
可用设备:
1) /dev/ttyS0 (COM1)
2) /dev/ttyS1 (COM2)
3) /dev/ttyS2 (COM3)
4) 其他设备
请选择 [1-4]: 1
2. 输入调制解调器初始化字符串
[默认: ATZ]
3. 输入拨号号码
[例如: 16300, 96163, 或其他ISP号码]
4. 输入用户名
[您的ISP账户用户名]
5. 输入密码
[您的ISP账户密码]
6. 配置DNS服务器
1) 自动获取DNS
2) 手动指定DNS
请选择 [1-2]: 1
7. 配置身份验证协议
1) PAP (Password Authentication Protocol)
2) CHAP (Challenge-Handshake Authentication Protocol)
3) 两者都使用
请选择 [1-3]: 1
8. 保存配置
配置将保存到: /etc/ppp/peers/provider
是否立即测试连接? [y/N]: y
pppsetup会创建以下配置文件:
| 配置文件 | 说明 | 示例内容 |
|---|---|---|
/etc/ppp/peers/provider |
ISP连接配置 |
|
/etc/ppp/pap-secrets |
PAP认证信息 |
|
/etc/ppp/chap-secrets |
CHAP认证信息 |
|
/etc/chatscripts/provider |
拨号脚本 |
|
/etc/ppp/options |
PPP全局选项 |
|
手动创建配置文件连接ISP:
# 创建peer配置文件
sudo nano /etc/ppp/peers/myisp
# 添加以下内容
/dev/ttyS0
115200
connect "/usr/sbin/chat -v -f /etc/chatscripts/myisp"
user "myusername"
password "mypassword"
noauth
noipdefault
defaultroute
persist
maxfail 5
holdoff 30
创建chat脚本:
sudo nano /etc/chatscripts/myisp
# 添加以下内容
TIMEOUT 60
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "BUSY"
ABORT "ERROR"
"" "ATZ"
OK "ATDT16300"
CONNECT ""
# 启动PPP连接
sudo pon myisp
# 查看连接状态
plog
# 或
tail -f /var/log/syslog | grep ppp
# 查看网络接口
ifconfig ppp0
# 查看路由
route -n
# 或
ip route show
# 断开连接
sudo poff myisp
# 强制断开所有PPP连接
sudo poff -a
# 查看是否已断开
ifconfig
# 或
ip addr show
# 查看PPP进程
ps aux | grep pppd
# 查看PPP日志
plog
tail -f /var/log/messages | grep ppp
# 查看PPP接口统计
ifconfig ppp0
ip -s link show ppp0
| ISP/服务 | 拨号号码 | 用户名/密码 | 备注 |
|---|---|---|---|
| 中国电信 | 16300 | 16300/16300 | 已基本淘汰 |
| 中国联通 | 165 | 165/165 | 已基本淘汰 |
| 中国移动 | 17201 | 172/172 | 已基本淘汰 |
| PPPoE宽带 | 不适用 | 宽带账号/密码 | 使用pppoeconf配置 |
| GPRS/3G | *99# | 不适用 | 移动数据连接 |
# 检查调制解调器设备
ls -l /dev/ttyS*
# 测试调制解调器响应
echo "ATZ" > /dev/ttyS0
cat < /dev/ttyS0
# 使用minicom测试
sudo apt-get install minicom
sudo minicom -s
# 配置串口设备,发送AT命令
# 查看详细日志
sudo pon myisp debug
tail -f /var/log/syslog
# 检查chat脚本
sudo chat -v -f /etc/chatscripts/myisp
# 检查线路状态
stat serial /dev/ttyS0
# 调整PPP选项
sudo nano /etc/ppp/options
# 添加或修改
lcp-echo-interval 30
lcp-echo-failure 4
persist
maxfail 0
# 检查线路质量
# 可能需要更换电话线或调制解调器
# 检查DNS配置
cat /etc/resolv.conf
# 手动设置DNS
sudo nano /etc/ppp/resolv.conf
# 添加
nameserver 8.8.8.8
nameserver 8.8.4.4
# 在PPP选项中添加
usepeerdns
# 或禁用自动DNS获取,手动设置
| 命令 | 说明 |
|---|---|
pppd |
PPP守护进程,核心连接程序 |
pon |
启动PPP连接 |
poff |
断开PPP连接 |
plog |
查看PPP日志 |
pppstats |
显示PPP连接统计 |
chat |
调制解调器对话脚本工具 |
pppoeconf |
PPPoE宽带连接配置工具 |
wvdial |
智能拨号工具 |
minicom |
串行通信程序,可用于测试调制解调器 |
setserial |
配置串行端口 |
对于ADSL等宽带连接,通常使用PPPoE而不是传统的PPP拨号:
# 安装PPPoE客户端
sudo apt-get install pppoeconf
# 配置PPPoE连接
sudo pppoeconf
# 启动连接
sudo pon dsl-provider
# 断开连接
sudo poff dsl-provider
# 查看状态
plog
ifconfig ppp0
使用USB调制解调器连接移动网络:
# 安装移动宽带工具
sudo apt-get install wvdial
# 配置wvdial
sudo wvdialconf
# 编辑配置文件
sudo nano /etc/wvdial.conf
# 添加以下内容
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Phone = *99#
Modem = /dev/ttyUSB0
Username =
Password =
Stupid Mode = 1
Baud = 460800
# 连接
sudo wvdial
sudo pon provider debugtail -f /var/log/syslog | grep pppstat serial /dev/ttyS0sudo chat -v -f /etc/chatscripts/providersudo pppd call provider debug/etc/ppp/pap-secrets和/etc/ppp/chap-secrets文件权限为600对于现代网络连接,推荐使用以下工具:
自动重连PPP脚本:
#!/bin/bash
# ppp_auto_reconnect.sh - 自动监控和重连PPP
CONNECTION="provider"
LOG_FILE="/var/log/ppp_reconnect.log"
CHECK_INTERVAL=60
MAX_RETRIES=3
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
echo "$1"
}
check_connection() {
if ip link show ppp0 >/dev/null 2>&1; then
if ping -c 2 -W 2 8.8.8.8 >/dev/null 2>&1; then
return 0
fi
fi
return 1
}
reconnect() {
log "断开现有连接..."
sudo poff -a
sleep 5
for i in $(seq 1 $MAX_RETRIES); do
log "尝试连接 ($i/$MAX_RETRIES)..."
sudo pon "$CONNECTION"
sleep 10
if check_connection; then
log "连接成功!"
return 0
fi
done
log "连接失败,达到最大重试次数"
return 1
}
# 主循环
log "PPP自动重连脚本启动"
log "检查间隔: ${CHECK_INTERVAL}秒"
log "最大重试次数: ${MAX_RETRIES}"
while true; do
if ! check_connection; then
log "检测到连接断开"
reconnect
fi
sleep "$CHECK_INTERVAL"
done
运行脚本:
chmod +x ppp_auto_reconnect.sh
sudo ./ppp_auto_reconnect.sh