菜鸟科技网

Linux命令行如何搭建VPN?

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

Linux命令行如何搭建VPN?-图1
(图片来源网络,侵删)

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/目录下,连接命令为:

Linux命令行如何搭建VPN?-图2
(图片来源网络,侵删)
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:

Linux命令行如何搭建VPN?-图3
(图片来源网络,侵删)
sudo apt install wireguard

CentOS/RHEL:

sudo yum install wireguard-tools

生成密钥对

在客户端生成私钥和公钥:

wg genkey | tee privatekey | wg pubkey > publickey

privatekey保存到/etc/wireguard/privatekeypublickey提交给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

常见问题与注意事项

  1. 路由配置:若需要仅代理特定流量(如访问公司内网),可在AllowedIPs中指定IP段,例如168.1.0/24,避免所有流量通过VPN。
  2. 防火墙规则:确保防火墙允许VPN端口(如OpenVPN默认1194,WireGuard默认51820),
    sudo ufw allow 1194/udp  # OpenVPN
    sudo ufw allow 51820/udp  # WireGuard
  3. 多用户/多设备: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 tun0sudo wg show),确认IP分配和路由表是否正确,检查防火墙规则是否拦截了流量,可临时关闭防火墙测试(sudo ufw disable),验证DNS配置是否正确,尝试手动指定DNS服务器(如8.8.8),若问题依旧,可能是VPN服务器端配置问题,需联系服务提供商。

分享:
扫描分享到社交APP
上一篇
下一篇