在Linux命令行环境中配置和使用VPN是许多高级用户和系统管理员的需求,尤其适用于服务器管理或自动化脚本场景,Linux支持多种VPN协议,如PPTP、L2TP/IPsec、OpenVPN和WireGuard等,每种协议的配置方式略有不同,以下将详细介绍基于OpenVPN和WireGuard两种常见VPN的命令行配置方法,并辅以实用示例和注意事项。

OpenVPN命令行配置
OpenVPN是一种成熟的开源VPN协议,支持加密和认证,适用于多种操作系统,在Linux中,通常使用openvpn客户端工具进行连接。
安装OpenVPN客户端
以Ubuntu/Debian系统为例,可通过以下命令安装:
sudo apt update && sudo apt install openvpn
对于CentOS/RHEL系统,使用:
sudo yum install epel-release && sudo yum install openvpn
配置VPN连接
假设已从VPN服务提供商获取了配置文件(如client.ovpn),将其放置在/etc/openvpn/目录下,连接命令为:

sudo openvpn --config /etc/openvpn/client.ovpn
若需要后台运行并记录日志,可添加--daemon和--log参数:
sudo openvpn --config /etc/openvpn/client.ovpn --daemon --log /var/log/openvpn.log
验证连接状态
通过以下命令检查VPN是否成功建立:
ip a show tun0 # 查看虚拟网卡 curl ifconfig.me # 获取出口IP,确认是否为VPN服务器IP
WireGuard命令行配置
WireGuard是一种新型、高性能的VPN协议,配置更简洁,适合现代Linux内核(5.6及以上版本)。
安装WireGuard
Ubuntu/Debian:

sudo apt install wireguard
CentOS/RHEL:
sudo yum install wireguard-tools
生成密钥对
在客户端生成私钥和公钥:
wg genkey | tee privatekey | wg pubkey > publickey
将privatekey保存到/etc/wireguard/privatekey,publickey提交给VPN服务器管理员。
创建配置文件
在/etc/wireguard/目录下创建wg0.conf:
[Interface] Address = 10.0.0.2/24 PrivateKey = <客户端私钥内容> DNS = 8.8.8.8 [Peer] PublicKey = <服务器公钥内容> Endpoint = vpn.example.com:51820 AllowedIPs = 0.0.0.0/0 # 路由所有流量通过VPN
启动并管理连接
启用WireGuard接口:
sudo wg-quick up wg0
设置为开机自启:
sudo wg-quick enable wg0
查看连接状态:
sudo wg show
断开连接:
sudo wg-quick down wg0
常见问题与注意事项
- 路由配置:若需要仅代理特定流量(如访问公司内网),可在
AllowedIPs中指定IP段,例如168.1.0/24,避免所有流量通过VPN。 - 防火墙规则:确保防火墙允许VPN端口(如OpenVPN默认1194,WireGuard默认51820),
sudo ufw allow 1194/udp # OpenVPN sudo ufw allow 51820/udp # WireGuard
- 多用户/多设备:WireGuard可通过添加多个
[Peer]段支持多设备,每个设备需唯一公钥。
相关问答FAQs
Q1: 如何在Linux命令行中断开VPN连接?
A1: 对于OpenVPN,若以daemon模式运行,可通过sudo pkill openvpn终止进程;若前台运行,直接按Ctrl+C,对于WireGuard,使用sudo wg-quick down wg0(假设接口名为wg0)。
Q2: VPN连接后无法访问互联网,如何排查?
A2: 首先检查VPN接口状态(如ip a show tun0或sudo wg show),确认IP分配和路由表是否正确,检查防火墙规则是否拦截了流量,可临时关闭防火墙测试(sudo ufw disable),验证DNS配置是否正确,尝试手动指定DNS服务器(如8.8.8),若问题依旧,可能是VPN服务器端配置问题,需联系服务提供商。
