新手向导:轻松离线搭建最新版OpenVPN(含一键安装脚本)

最常见的openvpn搭建方式就是通过docker,非常的简单、方便。如果是搭建过openvpn应该会知道这个镜像kylemanna/openvpn,但是它一直没有更新了,也就是三年前更新过然后就再也没更新过了,版本停留在openvpn2.4的版本。

那么如何升级openvpn到最新版本呢?可以到官方的开源社区找到最新的安装版本,可以看到最近一次更新是在2024年2月份openvpn v2.6.9。可以看到2.6.7 2.6.8 2.6.9 官方的开源社区更新还是很频繁的。

以下是详细的安装步骤:

离线包安装步骤

1、openvpn安装

  • 官方下载最新版本openvpn

  • 安装前先安装以下依赖,不然会报错

    apt install -y gcc libnl-genl-3-dev libcap-ng-dev pkg-confi liblzo2-dev libssl-dev libpam0g-dev

bash 复制代码
./configure
  • 安装openssl
vbnet 复制代码
checking additionally if OpenSSL is available and version >= 1.0.2... configure: error: OpenSSL version too old
  • 下载编译安装,opensslv1.1.1最新的一个版本是1.1.1w。如果你的版本是3.x好像也不行,只能是1.1.1x的版本。
bash 复制代码
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz
tar -zxvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
apt install -y gcc make zlib1g-dev
./config --prefix=/usr/local/openssl shared zlib
make -j32  (j32使用多线程,比make会快一些)
make install
  • 备份旧版本openssl,设置新版本
bash 复制代码
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -sv /usr/local/openssl/bin/openssl /usr/bin/openssl

#更新动态链接库数据
echo "/usr/local/openssl/lib" >>sudo /etc/ld.so.conf
ldconfig -v
openssl version

如果openssl version报以下错

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

继续执行以下命令

bash 复制代码
sudo ln -sv /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/
sudo ln -sv /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/
openssl version

如果openssl version已经是最新版本,但还是提示too old可以执行以下命令:

复制代码
apt install libssl-dev 

执行就可以了,最后,确认一下版本:

yaml 复制代码
# openssl version
OpenSSL 1.1.1w  11 Sep 2023

继续./configure

configure: error: No compatible LZ4 compression library found. Consider --disable-lz4

如果报以上错误的话就执行:

bash 复制代码
./configure --disable-lz4

如果正常就成功了,如果报以下错误:

configure: error: libpam required but missing

复制代码
apt install libpam0g-dev

执行后应该就没错了

接着就是执行

go 复制代码
make
make install

看到以上结果就完成安装了,也可以看看openvpn的版本信息。

css 复制代码
openvpn --version

2、证书生成

  • 初始化密钥
bash 复制代码
cd  /usr/share/easy-rsa
./easyrsa init-pki 

初始化,程序将自动创建pki并生成相应的密钥文件

完成后会生成pki目录

  • 编辑easyrsa的配置文件 vars:
perl 复制代码
set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "Zhe Jiang"
set_var EASYRSA_REQ_CITY        "Hang Zhou"
set_var EASYRSA_REQ_ORG         "test"
set_var EASYRSA_REQ_EMAIL       "xx@test.com"
set_var EASYRSA_REQ_OU          "openvpn"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            "rsa"
set_var EASYRSA_DIGEST          "sha256"
set_var EASYRSA_CA_EXPIRE       365000
set_var EASYRSA_CERT_EXPIRE     3650
set_var EASYRSA_CERT_RENEW      180
set_var EASYRSA_CRL_DAYS        60
  • 输入以下命令,生成根证书:
bash 复制代码
./easyrsa build-ca

PEM pass phrase,这个就是根证书密码,后面好几个步骤需要用到它,出现 "Common Name" 的时候直接敲回车默认即可。

  • 服务器证书生成:
bash 复制代码
./easyrsa gen-req server nopass

Common Name直接回车使用默认名称:server

  • 签发服务器证书:
vbscript 复制代码
./easyrsa sign-req server server

出现 "Type the word 'yes' to continue" 的时候输入: yes

然后输入刚才在上一步设置的根证书密码。

  • 生成Diffie-Hellman
bash 复制代码
./easyrsa gen-dh

至此,我们就完成了全部所需证书文件的生成,下面将这些零散的文件集中聚合到 keys 目录中去:

  • 把文件复制到 /etc/openvpn

mkdir /etc/openvpn

cp /usr/share/easy-rsa/pki/ca.crt /etc/openvpn/

cp /usr/share/easy-rsa/pki/private/server.key /etc/openvpn/

cp /usr/share/easy-rsa/pki/issued/server.crt /etc/openvpn/

cp /usr/share/easy-rsa/pki/dh.pem /etc/openvpn/dh2048.pem

  • tls密钥生成ta.key

tls密钥生成:openvpn --genkey secret ta.key这个密钥由openvpn主程序生成,起作用是用密钥取代密码输入

css 复制代码
openvpn --genkey secret ta.key
  • 复制server.conf配置文件
bash 复制代码
cp /usr/local/src/openvpn-2.6.8/sample/sample-config-files/server.conf /etc/openvpn/
  • 启动openvpn
sql 复制代码
openvpn --config /etc/openvpn/server.conf

openvpn3 session-start --config ${MY_CONFIGURATION_FILE}

一键安装脚本


⭐⭐⭐⭐⭐

重点来了↓↓↓

一键安装,来了!!!

如果感到上面的命令太多、太麻烦。那么可以看看这个github上的大牛们做成了一键安装的命令openvpn-install.sh,一键安装。

安装完客户端文件也会自动生成,直接下载使用就可以了。

相关推荐
Shulex1 天前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
茉莉玫瑰花茶1 天前
GO [ 方法 ]
开发语言·后端·golang
Wx-bishekaifayuan1 天前
django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Eric_见嘉1 天前
在职前端 Skill 和 MCP 分享
前端·后端·agent
bloglin999991 天前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣1 天前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP1 天前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
孟健1 天前
出海开发者资金合规:从港卡结汇到完税申报实操
后端·架构
梦帮科技1 天前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
乌暮1 天前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习