目 录CONTENT

文章目录

OpenVPN云服务器搭建指南

Administrator
2025-08-04 / 0 评论 / 1 点赞 / 26 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

OpenVPN云服务器搭建指南

项目背景

为突破ZeroTier的10客户端限制,现基于云服务器部署OpenVPN解决方案,构建跨云私有网络环境。本方案实现以下核心功能:

  • 以云服务器作为VPN网关,打通物理机与云主机网络
  • 支持Windows/Linux双平台客户端接入
  • 提供动态IP分配与静态IP绑定双模式
  • 采用AES-256-GCM加密+TLS认证双保险

服务器配置

组件版本要求部署位置
OpenVPN≥2.4.12云服务器
Easy-RSA2.0分支云服务器
windows客户端程序Windows:2.4.12用户终端
linux客户端程序≥2.4.12物理服务器

基础设施要求

  • 云服务器:CentOS 7.9 (购买的是此版本机器)
  • 公网IP:需开放UDP 1194端口
  • 防火墙配置:
    firewall-cmd --permanent --add-port=1194/udp
    firewall-cmd --reload
    
  • 张师傅是直接关闭了防火墙的
    systemctl stop firewalld
    

相关文件及参考

easy-ra-old

openvpn-linux服务端下载

openvpn-windows客户端下载

openvpn-linux客户端下载

快速构建openvpn.pdf

实施步骤

安装openvpn

# 安装openvpn
rpm -ivh openvpn-2.4.12-1.el7.x86_64.rpm

# 查看openvpn版本
openvpn --version

第一阶段:证书体系构建(云服务器操作)

1. 初始化CA系统

# 安装依赖
yum install -y tree nmap lrzsz dos2unix nc lsof wget
yum install -y psmisc net-tools bashcompletion vim-enhanced git

# 将easy-rsa-old-master.zip上传到服务器:/root/,解压easy-rsa-old-master.zip
unzip easy-rsa-old-master.zip
ll /root/easy-rsa-old-master

# 修改变量文件,生成证书时不用输入相关变量,直接使用默认值
cd /root/easy-rsa-old-master/easy-rsa/2.0/
vim vars
source vars && ./clean-all

vars

生成CA证书

cd /root/easy-rsa-old-master/easy-rsa/2.0/

# 生成CA证书
./build-ca

# 查看CA证书
ll ./keys/ca*

生成服务端证书

cd /root/easy-rsa-old-master/easy-rsa/2.0/

# 生成服务端证书
./build-key-server server

# 查看服务端证书
ll ./keys/server*

生成客户端证书

cd /root/easy-rsa-old-master/easy-rsa/2.0/

# 生成客户端证书
# 由于有多台物理服务器要加入vpn,且计划每台物理服务器都有自己的openvpn ip
# 因此需要为每台物理服务器生成一个客户端证书
# 此处建议取有意义的名称,例如:kvm1 kvm2 kvm3

./build-key kvm1
#./build-key kvm2
#./build-key kvm3

# 查看客户端证书
ll ./keys/kvm*

# 给windows客户端生成证书,此处建议使用有意义的名称,例如:zhangshifu
./build-key zhangshifu

# 查看客户端证书
ll ./keys/zhangshifu*

生成DH参数

cd /root/easy-rsa-old-master/easy-rsa/2.0/

# 生成DH参数文件
./build-dh

# 查看DH参数文件
ll ./keys/dh*

生成ta.key文件

cd /root/easy-rsa-old-master/easy-rsa/2.0/

# 生成ta.key文件
openvpn --genkey --secret keys/ta.key

# 查看ta.key文件
ll ./keys/ta.key

拷贝相关文件到openvpn目录下

mkdir -p /etc/openvpn
mkdir -p /etc/openvpn/keys
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ca.crt     /etc/openvpn/keys/
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ta.key     /etc/openvpn/keys/
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/server.crt /etc/openvpn/keys/
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/server.key /etc/openvpn/keys/
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/dh2048.pem /etc/openvpn/keys/

拷贝并编辑openvpn服务模板配置文件

cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf /etc/openvpn/server.conf
vim /etc/openvpn/server.conf
;与#开关的是注释
# 修改以下内容
dev tap                           # 默认是dev tun,改为dev tap,因为我们要搭建私有网络,不仅仅是隧道网络

ca keys/ca.crt                    # ca证书路径
cert keys/server.crt              # 服务端证书路径
key keys/server.key               # 服务端私钥路径
dh keys/dh2048.pem                # dh参数文件路径

server 10.10.10.0 255.255.255.0   # 私有网络地址段

push "route 10.10.10.0 255.255.255.0"         # 推送私有网络地址段,此段命令表明:
# 客户端会将所有发往 10.10.10.0/24 网段的流量通过 VPN 隧道发送,由 OpenVPN 服务器进行路由

push "route 192.168.3.0 255.255.255.0"     # 推送私有网络地址段,此段命令表明:
# 客户端会将所有发往 192.168.3.0/24 网段的流量通过 VPN 隧道发送,由 OpenVPN 服务器进行路由

client-config-dir /etc/openvpn/ccd            # 客户端配置目录,用于存放客户端的特定配置文件,比如说物理机的ip地址分配
route 10.10.10.0 255.255.255.0                # 路由配置,仅在 OpenVPN 服务器端 生效;当客户端访问 10.10.10.0/24 网段时,直接通过 VPN 隧道转发,无需经过系统默认路由

client-to-client                              # 允许客户端之间通信,默认各客户端之间不能通信

duplicate-cnn                                 # 允许同一个证书名称的客户端同时连接 

tls-auth keys/ta.key 0                        # 启用TLS认证,用于加强安全性
cipher AES-256-GCM                            # 加密算法,从 2.4 版本之后不能使用 CBC 模式了,需要改为GCM

3. 启用IP转发

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-openvpn.conf
sysctl -p /etc/sysctl.d/99-openvpn.conf

启动openvpn

# 进入openvpn配置文件目录
cd /etc/openvpn
# 创建ccd目录
mkdir ccd # 不创建会报错
# 启动openvpn服务
openvpn --daemon --config server.conf
# 查看openvpn服务状态
ps -ef | grep openvpn
# 查看openvpn服务端口
netstat -lntup | grep 1194

第三阶段:客户端配置

Windows客户端

  1. 安装客户端程序(默认路径:C:\Program Files\OpenVPN\
    拷贝客户端配置文件,以zhangshifu的windows客户端为便
  2. 在openvpn服务器上为zhangshifu生成客户端配置文件,并拷贝到windows客户端
# openvpn服务器上处理相关证书文件(windows客户端)
mkdir -p /root/zhangshifu
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /root/zhangshifu/ # 拷贝客户端模板配置文件
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/zhangshifu.crt /root/zhangshifu/client.crt # 拷贝客户端证书,需要重命名为client.key
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/zhangshifu.key /root/zhangshifu/client.key # 拷贝客户端私钥,需要重命名为client.key
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ca.crt /root/zhangshifu/ # 拷贝CA证书
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ta.key /root/zhangshifu/ # 拷贝ta.key文件
mv /root/zhangshifu/client.conf /root/zhangshifu/client.ovpn # 重命名客户端模板配置文件,windows客户端需要.ovpn结尾的文件
ll ./keys/*

# 修改客户端zhangshifu的配置文件
vim /root/zhangshifu/client.ovpn
dev tap # 默认是dev tun,改为dev tap,因为我们要搭建私有网络,不仅仅是隧道网络
# remote 外网ip 1194
remote 43.134.30.162 1194

cipher AES-256-GCM

# 拷贝客户端配置文件到windows客户端
cd /root/
zip zhangshifu.zip zhangshifu/*

# 将zip文件拷贝到windows客户端,解压即可使用
# 将zhangshifu.zip的所有文件,拷贝到windows客户端的openvpn安装目录下:默认安装为:C:\Program Files\OpenVPN\config

Linux客户端

linux安装openvpn客户端

rpm -ivh openvpn-2.4.12-1.el7.x86_64.rpm # 离线安装,本篇文章有提供openvpn客户端rpm包
  • 固定linux客户端的ip(在openvpn服务器上配置)
vim /etc/openvpn/server.conf
# 修改或添加以下内容
client-config-dir /etc/openvpn/ccd   
# 客户端配置目录(必须得写绝对路径,排错2小时),用于存放客户端的特定配置文件,比如说物理机的ip地址分配
route 192.168.3.0 255.255.255.0 
# 路由配置,仅在 OpenVPN 服务器端 生效;当客户端访问 10.10.10.0/24 网段时,直接通过 VPN 隧道转发,无需经过系统默认路由
  • 创建ccd文件(在openvpn服务器上配置)
vim /etc/openvpn/ccd/kvm1
# 写入以下内容
# ifconfig-push 预计分配openvpn中的ip 子网掩码
ifconfig-push 10.10.10.10 255.255.255.0
  • 重启openvpn
ps -ef | grep openvpn
kill -9 进程号
cd /etc/openvpn && openvpn --daemon --config server.conf
  • 拷贝客户端配置文件到linux客户端
# openvpn服务器上处理相关证书文件
mkdir -p /root/kvm1
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/client.conf /root/kvm1/ # 拷贝客户端模板配置文件
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/kvm1.crt /root/kvm1/client.crt # 拷贝客户端证书,需要重命名为client.key
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/kvm1.key /root/kvm1/client.key # 拷贝客户端私钥,需要重命名为client.key
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ca.crt /root/kvm1/ # 拷贝CA证书
cp /root/easy-rsa-old-master/easy-rsa/2.0/keys/ta.key /root/kvm1/ # 拷贝ta.key文件
ll ./keys/*

# 修改linux客户端的配置文件
vim /root/kvm1/client.conf
dev tap # 默认是dev tun,改为dev tap,因为我们要搭建私有网络,不仅仅是隧道网络
# remote 外网ip 1194
remote 43.134.30.162 1194

cipher AES-256-GCM

# 打包客户端配置文件
cd /root/
zip kvm1.zip kvm1/*
# 拷贝客户端配置文件到linux客户端的/etc/openvpn/
unzip kvm1.zip -d /etc/openvpn/
rm -rf /etc/openvpn/client
mv /etc/openvpn/kvm1 /etc/openvpn/client
# 启动openvpn客户端
 systemctl start openvpn-client@client
# 查看openvpn客户端状态
systemctl status openvpn-client@client
# 正常来说应该用到了在openvpn中强行指定kvm1机器的ip:10.10.10.10
1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区