Linux pppsetup命令

pppsetup 是一个交互式的命令行工具,用于配置PPP(Point-to-Point Protocol,点对点协议)拨号连接。它提供了一个简单易用的界面,帮助用户设置调制解调器连接、ISP账户信息和网络参数,适用于通过调制解调器拨号上网的场景。

注意:随着宽带和移动网络的普及,PPP拨号连接已较少使用,但在某些特定场景(如偏远地区、工业控制、旧系统维护)中仍然有用。

安装pppsetup

在基于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提供商名称

交互式配置步骤

步骤1:启动pppsetup

sudo pppsetup
# 或
sudo ppp-setup

步骤2:配置流程示例

运行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连接配置
/dev/ttyS0
115200
noipdefault
defaultroute
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/provider"
user "username"
remotename provider
/etc/ppp/pap-secrets PAP认证信息
# 客户端 服务器 密码 IP地址
"username" provider "password" *
/etc/ppp/chap-secrets CHAP认证信息
# 客户端 服务器 密码 IP地址
"username" provider "password" *
/etc/chatscripts/provider 拨号脚本
ABORT BUSY
ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "NO DIAL TONE"
ABORT "NO ANSWER"
"" ATZ
OK ATDT16300
CONNECT ""
/etc/ppp/options PPP全局选项
asyncmap 0
noauth
crtscts
lock
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx

使用示例

示例1:手动创建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 ""

示例2:启动PPP连接

# 启动PPP连接
sudo pon myisp

# 查看连接状态
plog
# 或
tail -f /var/log/syslog | grep ppp

# 查看网络接口
ifconfig ppp0

# 查看路由
route -n
# 或
ip route show

示例3:断开PPP连接

# 断开连接
sudo poff myisp

# 强制断开所有PPP连接
sudo poff -a

# 查看是否已断开
ifconfig
# 或
ip addr show

示例4:查看PPP连接状态

# 查看PPP进程
ps aux | grep pppd

# 查看PPP日志
plog
tail -f /var/log/messages | grep ppp

# 查看PPP接口统计
ifconfig ppp0
ip -s link show ppp0

常见ISP配置参数

ISP/服务 拨号号码 用户名/密码 备注
中国电信 16300 16300/16300 已基本淘汰
中国联通 165 165/165 已基本淘汰
中国移动 17201 172/172 已基本淘汰
PPPoE宽带 不适用 宽带账号/密码 使用pppoeconf配置
GPRS/3G *99# 不适用 移动数据连接

故障排除

问题1:调制解调器无响应

# 检查调制解调器设备
ls -l /dev/ttyS*

# 测试调制解调器响应
echo "ATZ" > /dev/ttyS0
cat < /dev/ttyS0

# 使用minicom测试
sudo apt-get install minicom
sudo minicom -s
# 配置串口设备,发送AT命令

问题2:无法建立连接

# 查看详细日志
sudo pon myisp debug
tail -f /var/log/syslog

# 检查chat脚本
sudo chat -v -f /etc/chatscripts/myisp

# 检查线路状态
stat serial /dev/ttyS0

问题3:连接频繁断开

# 调整PPP选项
sudo nano /etc/ppp/options
# 添加或修改
lcp-echo-interval 30
lcp-echo-failure 4
persist
maxfail 0

# 检查线路质量
# 可能需要更换电话线或调制解调器

问题4:DNS解析失败

# 检查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 配置串行端口

PPPoE宽带连接配置

对于ADSL等宽带连接,通常使用PPPoE而不是传统的PPP拨号:

# 安装PPPoE客户端
sudo apt-get install pppoeconf

# 配置PPPoE连接
sudo pppoeconf

# 启动连接
sudo pon dsl-provider

# 断开连接
sudo poff dsl-provider

# 查看状态
plog
ifconfig ppp0

移动宽带(3G/4G)连接

使用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

调试技巧

调试PPP连接:
  1. 启用详细日志:sudo pon provider debug
  2. 查看实时日志:tail -f /var/log/syslog | grep ppp
  3. 检查调制解调器:stat serial /dev/ttyS0
  4. 测试chat脚本:sudo chat -v -f /etc/chatscripts/provider
  5. 手动启动pppd:sudo pppd call provider debug

安全注意事项

  1. PAP认证以明文传输密码,建议使用CHAP或MS-CHAPv2
  2. 确保/etc/ppp/pap-secrets/etc/ppp/chap-secrets文件权限为600
  3. 定期更换拨号密码
  4. 使用防火墙保护PPP接口
  5. 考虑使用VPN在PPP连接上建立加密隧道

现代替代方案

对于现代网络连接,推荐使用以下工具:

  • NetworkManager:图形化网络管理工具,支持多种连接类型
  • systemd-networkd:systemd的网络配置工具
  • pppoeconf:PPPoE宽带连接配置工具
  • wvdial:智能拨号工具,支持更多调制解调器
  • ModemManager:移动宽带管理工具

实用脚本示例

自动重连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