在Ubuntu命令行中配置VPN通常涉及使用NetworkManager的命令行工具nmcli,尤其适用于支持NetworkManager的VPN类型(如OpenVPN、WireGuard、PPTP等),以下是详细步骤和注意事项,涵盖安装依赖、导入配置文件、连接管理及故障排查等内容。

安装必要工具
首先确保系统已安装NetworkManager和nmcli工具,大多数Ubuntu默认已安装,若未安装可执行:
sudo apt update sudo apt install network-manager network-manager-openvpn network-manager-pptp network-manager-l2tp
对于WireGuard,还需额外安装:
sudo apt install network-manager-wireguard
准备VPN配置文件
根据VPN类型准备配置文件:
- OpenVPN:从VPN服务商获取
.ovpn
文件,或手动编辑配置文件(包含remote
、proto
、auth-user-pass
等参数)。 - WireGuard:获取
.conf
文件,包含[Interface]
和[Peer]
部分。 - PPTP/L2TP:需服务器地址、用户名、密码,以及预共享密钥(L2TP)。
使用nmcli导入并配置VPN
添加VPN连接
以OpenVPN为例,使用以下命令导入.ovpn
文件:

sudo nmcli connection import type openvpn file /path/to/config.ovpn
WireGuard的导入命令类似,只需将type
改为wireguard
:
sudo nmcli connection import type wireguard file /path/to/config.conf
修改连接参数
导入后,VPN连接会显示为“未授权”,需修改权限和认证信息:
# 查看连接名称(通常为文件名) nmcli connection show # 设置连接名称(如vpn-connection)和自动连接 sudo nmcli connection modify "vpn-connection" connection.autoconnect yes # 设置认证信息(OpenVPN需用户名和密码) sudo nmcli connection modify "vpn-connection" vpn.username your_username sudo nmcli connection modify "vpn-connection" vpn.password your_password
对于L2TP,还需添加预共享密钥:
sudo nmcli connection modify "vpn-connection" vpn.secrets "psk=your_psk"
启动连接
sudo nmcli connection up "vpn-connection"
若连接成功,nmcli connection show --active
会显示VPN连接状态。

管理VPN连接
- 查看状态:
nmcli connection show "vpn-connection"
- 断开连接:
sudo nmcli connection down "vpn-connection"
- 删除连接:
sudo nmcli connection delete "vpn-connection"
常见问题排查
- 连接失败:检查配置文件语法(如
.ovpn
中的ca
、cert
路径是否正确),或使用journalctl -u NetworkManager
查看日志。 - 认证错误:确认用户名、密码是否正确,或尝试使用
nmcli connection edit "vpn-connection"
交互式修改参数。 - 权限问题:确保配置文件权限为
600
(chmod 600 config.ovpn
),避免敏感信息泄露。
高级配置(可选)
使用终端交互式编辑
sudo nmcli connection edit "vpn-connection"
进入后输入print
查看当前配置,set
修改参数,save
保存。
配置DNS
通过VPN指定DNS服务器(如Cloudflare的1.1.1.1):
sudo nmcli connection modify "vpn-connection" ipv4.dns "1.1.1.1 8.8.8.8" sudo nmcli connection up "vpn-connection"
路由规则
添加特定流量通过VPN的IP路由:
sudo nmcli connection modify "vpn-connection" ipv4.routes "192.168.0.0/24 10.8.0.1"
VPN类型对比与适用场景
VPN类型 | 加密强度 | 速度 | 适用场景 | 配置复杂度 |
---|---|---|---|---|
OpenVPN | 高 | 中等 | 通用安全连接 | 中等 |
WireGuard | 极高 | 极高 | 移动设备、高性能需求 | 低 |
PPTP | 低 | 高 | 旧设备兼容性 | 低(不推荐用于敏感场景) |
L2TP/IPsec | 中 | 中 | 企业级远程访问 | 中 |
相关问答FAQs
Q1: 如何在Ubuntu命令行中查看VPN连接的详细日志?
A: 使用以下命令查看NetworkManager的实时日志:
journalctl -u NetworkManager -f | grep vpn
若需要更详细的调试信息,可临时开启调试模式:
sudo nmcli connection modify "vpn-connection" connection.debugging 1 sudo nmcli connection down "vpn-connection" && sudo nmcli connection up "vpn-connection"
调试完成后记得关闭调试模式:
sudo nmcli connection modify "vpn-connection" connection.debugging 0
Q2: 为什么VPN连接后无法访问某些网站,但本地网络正常?
A: 可能是DNS配置问题或路由冲突,尝试以下步骤:
- 修改DNS:手动指定可靠的DNS服务器(如
8.8.8
或1.1.1
),如前文所述。 - 检查路由:运行
ip route
查看默认网关是否正确,或添加静态路由:sudo ip route add default via <VPN_GATEWAY> dev <VPN_INTERFACE>
- 禁用IPv6:部分VPN服务暂不支持IPv6,可通过
sudo nmcli connection modify "vpn-connection" ipv6.ignore-auto-dns yes
禁用自动IPv6 DNS。 - 联系VPN服务商:确认是否需要特殊配置(如分代理或自定义端口)。