凌峰创科服务平台

Linux如何搭建VPN服务器?步骤有哪些?

在Linux系统中搭建VPN服务器是一项实用的网络配置任务,通常可通过OpenVPN、WireGuard或PPTP等协议实现,本文将以主流的OpenVPN为例,详细讲解在CentOS 7系统上的完整搭建流程,包括环境准备、安装配置、证书生成、服务启动及安全加固等步骤,同时辅以表格说明关键参数,并在文末提供常见问题解答。

Linux如何搭建VPN服务器?步骤有哪些?-图1
(图片来源网络,侵删)

环境准备与基础配置

首先需要一台具有公网IP的Linux服务器(推荐CentOS 7/Ubuntu 18.04+),确保系统已更新至最新状态,并关闭防火墙和SELinux(生产环境建议正确配置而非直接关闭),执行以下命令更新系统并安装必要依赖:

sudo yum update -y  # CentOS系统
# sudo apt update && sudo apt upgrade -y  # Ubuntu系统
sudo yum install -y epel-release wget openssl tar curl

接着关闭防火墙和SELinux(临时关闭):

sudo systemctl stop firewalld && sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config

安装OpenVPN与EasyRSA

OpenVPN依赖EasyRSA管理证书,需先下载并安装二者,执行以下命令获取最新版本:

wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
tar xzf EasyRSA-3.0.8.tgz && sudo mv EasyRSA-3.0.8 /etc/openvpn/easy-rsa

然后安装OpenVPN服务端:

Linux如何搭建VPN服务器?步骤有哪些?-图2
(图片来源网络,侵删)
sudo yum install -y openvpn

生成CA证书与服务器证书

证书是VPN安全通信的核心,需按以下步骤生成:

  1. 初始化PKI目录
    cd /etc/openvpn/easy-rsa
    sudo ./easyrsa init-pki
  2. 构建CA证书
    sudo ./easyrsa build-ca nopass
  3. 生成服务器证书
    sudo ./easyrsa gen-req server nopass
    sudo ./easyrsa sign-req server server
  4. 生成Diffie-Hellman参数(耗时较长):
    sudo ./easyrsa gen-dh
  5. 生成HMAC密钥
    sudo openvpn --genkey --secret pki/ta.key

    所有证书将生成在/etc/openvpn/easy-rsa/pki/目录下,需将其复制到OpenVPN配置目录:

    sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem pki/ta.key /etc/openvpn/server/

配置OpenVPN服务器

创建服务器配置文件/etc/openvpn/server/server.conf如下(关键参数说明见表1):

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
explicit-exit-notify 1

表1:OpenVPN关键配置参数说明 | 参数 | 说明 | 示例值 | |------|------|--------| | port | 服务器监听端口 | 1194 | | proto | 传输协议(udp/tcp) | udp | | server | VPN分配的子网 | 10.8.0.0 255.255.255.0 | | push redirect-gateway | 客户端所有流量通过VPN | redirect-gateway def1 | | cipher | 加密算法 | AES-256-CBC | | tls-crypt | 防止TLS攻击 | ta.key |

Linux如何搭建VPN服务器?步骤有哪些?-图3
(图片来源网络,侵删)

启动服务与配置转发

  1. 启用IP转发: 编辑/etc/sysctl.conf,添加net.ipv4.ip_forward=1,然后执行:
    sudo sysctl -p
  2. 配置NAT转发: 添加iptables规则(假设公网网卡为eth0):
    sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    sudo iptables-save > /etc/sysconfig/iptables
  3. 启动OpenVPN服务
    sudo systemctl start openvpn-server@server
    sudo systemctl enable openvpn-server@server

生成客户端配置文件

客户端配置文件需包含证书、服务器地址等信息,创建/etc/openvpn/client/client.ovpn如下:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256
auth-user-pass
tls-crypt ta.key
verb 3

ca.crtclient.crtclient.key(需单独生成)与client.ovpn打包提供给客户端,或使用easyrsa为每个客户端生成独立证书。

安全加固建议

  1. 启用双因素认证:结合Google Authenticator实现动态口令。
  2. 限制访问IP:通过防火墙规则仅允许特定IP连接VPN端口。
  3. 定期轮换证书:设置证书过期时间,定期重新签发。
  4. 日志监控:通过status logsyslog监控连接状态。

常见问题FAQs

问题1:客户端连接提示“authentication failed”如何解决?
解答:通常由证书错误或配置文件问题导致,检查步骤:

  1. 确认客户端配置文件中的remote地址为服务器公网IP;
  2. 验证ca.crtclient.crtclient.key是否完整且路径正确;
  3. 检查服务器端/var/log/openvpn/server.log,查看具体错误信息(如证书链不匹配或密钥错误)。

问题2:VPN连接后无法访问互联网,但内网资源正常?
解答:多为NAT转发或DNS配置问题,解决方法:

  1. 确认服务器已开启IP转发(sysctl net.ipv4.ip_forward值为1);
  2. 检查iptables MASQUERADE规则是否正确应用(iptables -t nat -L -v);
  3. 客户端配置文件中的DNS服务器是否有效(如Google DNS 8.8.8),可尝试替换为运营商DNS或服务器本地DNS。
分享:
扫描分享到社交APP
上一篇
下一篇