凌峰创科服务平台

Linux OpenVPN服务器搭建如何快速实现?

重要提醒:使用 Root 权限

以下所有命令都需要 root 权限执行,您可以通过 sudo -i 切换到 root 用户,或者在命令前加上 sudo

Linux OpenVPN服务器搭建如何快速实现?-图1
(图片来源网络,侵删)

第一步:环境准备

  1. 一台干净的 Linux 服务器

    • 推荐使用 CentOS 7 / RHEL 7 / AlmaLinux / Rocky Linux,本教程以此为例。
    • 推荐配置:1 核 CPU, 1GB 内存, 20GB 硬盘。
    • 公网 IP 地址:服务器必须有一个公网 IP,并且防火墙允许 VPN 端口(默认 1194)和 SSH 端口(22)的流量。
    • 操作系统:确保系统已更新。
  2. 更新系统

    yum update -y

第二步:安装 OpenVPN 和 Easy-RSA

Easy-RSA 是一个用于管理 PKI (Public Key Infrastructure) 的工具集,我们将用它来创建和管理服务器与客户端的证书。

  1. 安装 EPEL 仓库

    Linux OpenVPN服务器搭建如何快速实现?-图2
    (图片来源网络,侵删)
    yum install -y epel-release
  2. 安装 OpenVPN 和 Easy-RSA

    yum install -y openvpn easy-rsa

第三步:配置证书颁发机构 (CA)

这是整个 VPN 安全的核心,用于签发服务器和客户端的证书。

  1. 创建 CA 工作目录

    mkdir -p /etc/openvpn/easy-rsa/keys
    cp -rf /usr/share/easy-rsa/3.0.8/* /etc/openvpn/easy-rsa/

    注意:您的 easy-rsa 版本号可能不是 0.8,请根据实际情况调整。

  2. 编辑 vars 文件 这个文件包含了 CA 的一些默认变量,如国家、城市、组织名等,修改它可以让后续生成证书更方便。

    cd /etc/openvpn/easy-rsa/
    vim vars

    找到并修改以下几行(取消注释并修改为你自己的信息):

    set_var EASYRSA_REQ_COUNTRY     "CN"
    set_var EASYRSA_REQ_PROVINCE    "Beijing"
    set_var EASYRSA_REQ_CITY        "Beijing"
    set_var EASYRSA_REQ_ORG         "My Company Name"
    set_var EASYRSA_REQ_EMAIL       "admin@example.com"
    set_var EASYRSA_REQ_OU          "My VPN Unit"

    保存并退出 (wq)。

  3. 初始化 PKI (Public Key Infrastructure)

    ./easyrsa init-pki
  4. 构建 CA 证书 这会创建根证书,是所有其他证书的信任基础。

    ./easyrsa build-ca nopass
    • nopass 参数表示 CA 私钥不设置密码,方便服务器自动启动,如果安全性要求极高,可以去掉此参数,但需要在服务器启动时手动输入密码。
    • 过程中会要求输入 Common Name,直接按回车使用默认值(Easy-RSA CA)即可。
  5. 创建并签发服务器证书

    # 为服务器创建一个证书请求,并指定 Common Name 为 "server"
    ./easyrsa gen-req server nopass
    # 使用 CA 签发服务器证书
    ./easyrsa sign-req server server
    • 在签发时,会问你 "Confirm request details: [y/n]",输入 y 确认。
  6. 创建 Diffie-Hellman (DH) 参数 DH 参数用于增强前向安全性,防止密钥交换被破解,这个过程可能需要几分钟时间,请耐心等待。

    ./easyrsa gen-dh
  7. 生成 HMAC 密钥 HMAC 用于提供额外的身份验证层,防止 DDoS 攻击。

    openvpn --genkey --secret pki/ta.key
  8. 整理证书文件 将所有需要的证书和密钥文件复制到 OpenVPN 配置目录。

    cp pki/ca.crt /etc/openvpn/
    cp pki/issued/server.crt /etc/openvpn/
    cp pki/private/server.key /etc/openvpn/
    cp pki/dh.pem /etc/openvpn/  # dh.pem 是 gen-dh 的输出文件
    cp pki/ta.key /etc/openvpn/

第四步:配置 OpenVPN 服务器

  1. 创建服务器配置文件 我们将使用一个示例配置文件作为模板。

    cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
  2. 编辑 server.conf 文件

    vim /etc/openvpn/server.conf

    确保以下配置项正确:

    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
    cipher AES-256-CBC
    auth SHA256
    user nobody
    group nobody
    # 日志
    status openvpn-status.log
    log-append /var/log/openvpn.log
    # 启用 TLS 认证
    tls-crypt ta.key
    # 允许客户端之间互相通信(可选)
    client-to-client
    # 每个客户端使用独立的证书(推荐)
    duplicate-cn

    配置解释:

    • port 1194:VPN 服务器监听的端口,可以修改为其他未被占用的端口。
    • proto udp:使用 UDP 协议,速度更快,更适合流媒体,UDP 被墙,可以改为 tcp
    • server 10.8.0.0 255.255.255.0:定义 VPN 服务器为客户端分配的虚拟子网。
    • push "redirect-gateway def1":指示客户端将所有网络流量都通过 VPN 传输。
    • push "dhcp-option DNS ...":为客户端指定 DNS 服务器,这里使用 Google DNS,你也可以换成 Cloudflare DNS (1.1.1) 或其他。
    • cipher AES-256-CBCauth SHA256:指定加密和认证算法,这是目前安全且广泛兼容的组合。
    • tls-crypt ta.key:启用 TLS 密钥交换,能有效防御 DDoS 攻击。
  3. 创建日志文件并设置权限

    touch /var/log/openvpn.log
    chown nobody:nobody /var/log/openvpn.log

第五步:配置服务器端网络和防火墙

这是最关键的一步,确保 VPN 流量能够正确路由。

  1. 启用 IP 转发 编辑 /etc/sysctl.conf 文件:

    vim /etc/sysctl.conf

    找到 net.ipv4.ip_forward = 0 这一行,将其改为 1

    net.ipv4.ip_forward = 1

    保存后,立即生效:

    sysctl -p
  2. 配置防火墙 (firewalld)

    # 添加 OpenVPN 服务 (默认端口 1194/udp)
    firewall-cmd --permanent --add-service=openvpn
    # 启用 NAT (网络地址转换) 并伪装流量
    firewall-cmd --permanent --add-masquerade
    # 重新加载防火墙
    firewall-cmd --reload
  3. 配置 SELinux (如果启用) 如果你的系统启用了 SELinux,需要为 OpenVPN 设置正确的上下文。

    # 安装 SELinux 管理工具
    yum install -y policycoreutils-python
    # 为 OpenVPN 的
分享:
扫描分享到社交APP
上一篇
下一篇