凌峰创科服务平台

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

在Linux系统中搭建VPN服务器是实现远程安全访问、数据加密传输的常用方法,以下以主流的OpenVPN为例,详细讲解在CentOS 7系统上的完整搭建流程,包括环境准备、服务端配置、客户端连接及安全优化等关键步骤。

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

环境准备与依赖安装

首先需要一台具有公网IP的Linux服务器(建议CentOS 7/Ubuntu 18.04+),并确保系统已更新至最新状态,登录服务器后,执行以下命令更新系统并安装必要的依赖包:

# CentOS系统
yum update -y && yum install -y epel-release wget openssl openssl-devel lzo-devel pam-devel
# Ubuntu系统
apt update && apt install -y wget openssl libssl-dev liblzo2-dev libpam-dev

安装完成后,关闭防火墙和SELinux(生产环境建议配置规则而非直接关闭):

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

安装与配置OpenVPN

  1. 安装OpenVPN及Easy-RSA
    Easy-RSA用于生成证书和密钥,是OpenVPN安全通信的基础,从官方源下载并安装:

    wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
    tar -zxvf EasyRSA-3.0.8.tgz && mv EasyRSA-3.0.8 /etc/openvpn/easy-rsa
    cd /etc/openvpn/easy-rsa
  2. 生成CA证书与服务端密钥
    初始化PKI并构建CA证书:

    Linux VPN服务器搭建步骤有哪些?-图2
    (图片来源网络,侵删)
    ./easyrsa init-pki
    ./easyrsa --batch build-ca nopass

    生成服务端证书(需输入 Common Name,建议填写服务器域名或IP):

    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server

    生成Diffie-Hellman参数(增强密钥交换安全性):

    ./easyrsa gen-dh

    生成HMAC密钥(防止攻击):

    openvpn --genkey --secret pki/ta.key
  3. 创建服务端配置文件
    /etc/openvpn/目录下创建server.conf文件,核心配置如下:

    Linux VPN服务器搭建步骤有哪些?-图3
    (图片来源网络,侵删)
    port 1194
    proto udp
    dev tun
    ca /etc/openvpn/easy-rsa/pki/ca.crt
    cert /etc/openvpn/easy-rsa/pki/issued/server.crt
    key /etc/openvpn/easy-rsa/pki/private/server.key
    dh /etc/openvpn/easy-rsa/pki/dh.pem
    tls-crypt /etc/openvpn/easy-rsa/pki/ta.key
    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
    cipher AES-256-CBC
    auth SHA256
    user nobody
    group nobody
    persist-key
    persist-tun
    status /var/log/openvpn-status.log
    verb 3
    explicit-exit-notify 1

    配置说明:

  • server 10.8.0.0 255.255.255.0:定义VPN客户端分配的IP段
  • push指令:强制客户端使用VPN网关并指定DNS服务器
  • cipherauth:加密算法与认证方式,确保安全性
  1. 启动OpenVPN服务
    将配置文件复制到OpenVPN配置目录并启动服务:
    cp /etc/openvpn/server.conf /etc/openvpn/
    systemctl start openvpn@server
    systemctl enable openvpn@server

配置客户端密钥与连接

  1. 生成客户端证书
    在服务器端为每个客户端生成独立证书(以客户端名client1为例):

    cd /etc/openvpn/easy-rsa
    ./easyrsa gen-req client1 nopass
    ./easyrsa sign-req client client1
  2. 打包客户端配置文件
    创建客户端配置目录,并将证书、密钥及配置文件打包:

    mkdir -p /etc/openvpn/clients/client1
    cp pki/ca.crt pki/issued/client1.crt pki/private/client1.key pki/ta.key /etc/openvpn/clients/client1/

    创建客户端配置文件client1.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-nocache
    verb 3
    <ca>
    -----BEGIN CERTIFICATE-----
    (粘贴ca.crt内容)
    -----END CERTIFICATE-----
    </ca>
    <cert>
    -----BEGIN CERTIFICATE-----
    (粘贴client1.crt内容)
    -----END CERTIFICATE-----
    </cert>
    <key>
    -----BEGIN PRIVATE KEY-----
    (粘贴client1.key内容)
    -----END PRIVATE KEY-----
    </key>
    <tls-crypt>
    -----BEGIN OpenVPN Static key V1-----
    (粘贴ta.key内容)
    -----END OpenVPN Static key V1-----
    </tls-crypt>

    your_server_ip替换为服务器公网IP,最后将client1.ovpn下载到客户端设备。

安全优化与故障排查

  1. 启用防火墙规则
    生产环境中需开放1194端口并允许NAT转发:

    firewall-cmd --permanent --add-port=1194/udp
    firewall-cmd --permanent --add-masquerade
    firewall-cmd --reload
  2. 常见问题排查

  • 客户端无法获取IP:检查server.conf中的ifconfig-pool-persist文件是否正确记录分配的IP
  • 连接超时:确认服务器防火墙已放行1194端口,且客户端配置的remote地址正确
  • 证书错误:验证客户端证书是否经CA签名,检查ca.crt是否完整

以下是客户端连接参数配置表,供快速参考:

参数 说明 示例值
remote 服务器IP与端口 your_server_ip 1194
dev 虚拟网卡类型 tun
proto 传输协议 udp
cipher 加密算法 AES-256-CBC
auth 认证算法 SHA256

相关问答FAQs

Q1: 如何限制VPN客户端只能访问特定内网资源?
A1: 在server.conf中添加route指令定义允许访问的内网网段,并配置iptables/NAT规则,若客户端仅能访问192.168.1.0/24网段,可添加:

route 192.168.1.0 255.255.255.0
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 192.168.1.0/24 -j MASQUERADE

Q2: 如何实现多用户同时连接且互不干扰?
A2: 为每个用户生成独立证书(如上述client1生成步骤),并在server.conf中配置ccd(Client Config Directory)目录,为不同用户分配固定IP,具体操作:

  1. 创建/etc/openvpn/ccd目录
  2. 为用户创建配置文件(如client1ifconfig-push 10.8.0.2 255.255.255.0
  3. server.conf中添加client-config-dir ccd
    这样用户client1连接后将固定获得10.8.0.2 IP地址。
分享:
扫描分享到社交APP
上一篇
下一篇