1: 環(huán)境
服務(wù)器系統(tǒng):CentOS Linux release 7.9.2009 (Core)
服務(wù)器配置:不重要
服務(wù)器IP:
Openvpn服務(wù)器:
外網(wǎng):124.70.49.106
內(nèi)網(wǎng):192.168.0.155
內(nèi)網(wǎng)測試服務(wù)器:192.168.0.21
openvpn客戶端服務(wù)器網(wǎng)段:172.16.16.0/24
OpenVpn版本:2.5.6
easy-rsa版本:3.0.8
安裝包存放的路徑:/tmp/install/
程序安裝目錄:/data/openvpn
備注:
root# 代表在root用戶下執(zhí)行的命令
$ 代表是在普通用戶下執(zhí)行的命令
# 單個#號代表注釋
2:安裝步驟
2.1 準(zhǔn)備工作
(以下所有操作均在Openvpn服務(wù)器操作)
# 關(guān)閉防火墻
root# systemctl stop firewalld
root# systemctl disable firewalld
# 關(guān)閉selinux
root# sed -i 's/enforcing/disabled/' /etc/selinux/config
root# setenforce 0
# 安裝依賴
root# yum install -y vim wget lrzsz gcc-c++ openssl openssl-devel net-tools lzo lzo-devel pam pam-devel
# 下載安裝包
root# mkdir /tmp/install
root# cd /tmp/install
root# wget https://swupdate.openvpn.org/community/releases/openvpn-2.5.6.tar.gz
root# wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
2.2 安裝OpenVpn和EasyRSA
#1)安裝OpenVpn
root# cd /tmp/install
#創(chuàng)建目錄
root# mkdir /data
#解壓縮
root# tar -zxvf openvpn-2.5.6.tar.gz
root# cd openvpn-2.5.6
#--prefix= 后面路徑是安裝openvpn到那個文件路徑下
root# ./configure --prefix=/data/openvpn/
#編譯
root# make && make install
#添加openvpn的環(huán)境變量
root# echo -e "PATH=\$PATH:/data/openvpn/sbin" >/etc/profile.d/openvpn256.sh
#加載環(huán)境變量
root# source /etc/profile
#執(zhí)行下面的命令看看是否成功,出現(xiàn)以下內(nèi)容表示成功
root# openvpn --version
OpenVPN 2.5.6 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on May 5 2022
#2)安裝EasyRSA
root# cd /tmp/install
root# tar -zxvf EasyRSA-3.0.8.tgz
root# mv EasyRSA-3.0.8 /data/EasyRSA
2.3 服務(wù)端配置
2.3.1 準(zhǔn)備CA簽發(fā)機(jī)構(gòu)環(huán)境
#拷貝EasyRSA
root# cp -r /data/EasyRSA /data/openvpn/easy-rsa-server
root# cd /data/openvpn/easy-rsa-server
#準(zhǔn)備簽發(fā)證書的默認(rèn)變量文件
root# egrep -v "^$|^#" vars.example >vars
#編輯vars文件,在最后一行增加以下內(nèi)容
root# vim vars
#添加參數(shù),設(shè)置CA證書有效期為100年(日期可以你自己決定設(shè)置多長)
set_var EASYRSA_CA_EXPIRE 36500
#添加參數(shù),設(shè)置服務(wù)器證書為10年
set_var EASYRSA_CERT_EXPIRE 3650
2.3.2 創(chuàng)建CA機(jī)構(gòu)與服務(wù)器證書
#1)創(chuàng)建CA機(jī)構(gòu)
root# cd /data/openvpn/easy-rsa-server
#初始化,執(zhí)行此命令會生成pki目錄
root# ./easyrsa init-pki
#創(chuàng)建CA機(jī)構(gòu),nopass代表不需要密碼的意思
root# ./easyrsa build-ca nopass
#這里是CA機(jī)構(gòu)的名稱,我這邊使用的是CATEST,這個名字可以用默認(rèn)的也可以你自己輸入
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CATEST
#執(zhí)行創(chuàng)建ca機(jī)構(gòu)成功的話,會出現(xiàn)下面的這個ca.crt文件
Your new CA certificate file for publishing is at:
/data/openvpn/easy-rsa-server/pki/ca.crt
#CA證書文件
root# ls -l /data/openvpn/easy-rsa-server/pki/ca.crt
-rw------- 1 root root 1151 May 5 09:56 /data/openvpn/easy-rsa-server/pki/ca.crt
#CA秘鑰文件
root# ls -l /data/openvpn/easy-rsa-server/pki/private/ca.key
-rw------- 1 root root 1679 May 5 09:56 /data/openvpn/easy-rsa-server/pki/private/ca.key
#2)創(chuàng)建服務(wù)端證書
root# cd /data/openvpn/easy-rsa-server
#創(chuàng)建服務(wù)端證書申請文件,openvpnserver為了區(qū)別參數(shù)標(biāo)識,我這里設(shè)置為openvpnserver,如果你自己安裝的話可以使用默認(rèn)的server 這個名稱
root# ./easyrsa gen-req openvpnserver nopass
#默認(rèn)回車就行
Common Name (eg: your user, host, or server name) [openvpnserver]:
Keypair and certificate request completed. Your files are:
#請求文件
req: /data/openvpn/easy-rsa-server/pki/reqs/openvpnserver.req
#私鑰文件
key: /data/openvpn/easy-rsa-server/pki/private/openvpnserver.key
#3)簽發(fā)服務(wù)端證書
root# cd /data/openvpn/easy-rsa-server
#這里的server是代表服務(wù)端意思,openvpnserver這個是上面我們創(chuàng)建的服務(wù)端證書的名稱
root# ./easyrsa sign server openvpnserver
#輸入yes
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
#服務(wù)端的證書文件
Certificate created at: /data/openvpn/easy-rsa-server/pki/issued/openvpnserver.crt
#4)創(chuàng)建交互秘鑰
root# cd /data/openvpn/easy-rsa-server
root# ./easyrsa gen-dh
DH parameters of size 2048 created at /data/openvpn/easy-rsa-server/pki/dh.pem
#5) 啟用安全增強配置
root# cd /data/openvpn/easy-rsa-server
root# openvpn --genkey tls-auth ta.key
2.3.3 OpenVPN服務(wù)端配置
#創(chuàng)建openvpn用戶
root# groupadd openvpn
root# useradd -M -s /sbin/nologin -g openvpn openvpn
# 創(chuàng)建證書存放目錄
root# mkdir /data/openvpn/certificate
# 創(chuàng)建日志存放目錄
root# mkdir /data/openvpn/logs
root# chown openvpn. /data/openvpn/logs
# 將服務(wù)端證書秘鑰和交互秘鑰復(fù)制到certificate目錄
root# cp /data/openvpn/easy-rsa-server/pki/ca.crt /data/openvpn/certificate/
root# cp /data/openvpn/easy-rsa-server/pki/issued/openvpnserver.crt /data/openvpn/certificate/
root# cp /data/openvpn/easy-rsa-server/pki/private/openvpnserver.key /data/openvpn/certificate/
root# cp /data/openvpn/easy-rsa-server/pki/dh.pem /data/openvpn/certificate/
root# cp /data/openvpn/easy-rsa-server/ta.key /data/openvpn/certificate/
#添加配置文件
root# cd /data/openvpn/
root# vim /data/openvpn/server.conf
#__server.conf—stat___
#端口
port 1194
#協(xié)議
proto tcp
dev tun
#ca證書文件
ca /data/openvpn/certificate/ca.crt
#服務(wù)端證書文件
cert /data/openvpn/certificate/openvpnserver.crt
#服務(wù)端私鑰文件
key /data/openvpn/certificate/openvpnserver.key
#交換秘鑰文件
dh /data/openvpn/certificate/dh.pem
#安全增強文件,0是服務(wù)端,1是客戶端
tls-auth /data/openvpn/certificate/ta.key 0
#分配客戶端IP的網(wǎng)段,不能和服務(wù)器一個網(wǎng)段,不能沖突
server 10.8.0.0 255.255.255.0
#運行通訊的內(nèi)網(wǎng)路由,可以多條
push "route 192.168.0.0 255.255.255.0"
#會話檢測,每十秒測試一下,超過120秒沒回應(yīng)就認(rèn)為對方down
keepalive 10 120
#加密算法
cipher AES-256-CBC
#壓縮算法
compress lz4-v2
#推送客戶端使用lz4-v2算法
push "compress lz4-v2"
#最大客戶端數(shù)
max-clients 100
#運行openvpn的用戶和用戶組
user openvpn
group openvpn
#權(quán)限檢測
persist-tun
persist-key
#狀態(tài)日志
status /data/openvpn/logs/openvpn-status.log
log-append /data/openvpn/logs/openvpn.log
#日志級別
verb 3
mute 20
#__server.conf—end___
#內(nèi)核轉(zhuǎn)發(fā)規(guī)則
root# echo "net.ipv4.ip_forward=1" >>/etc/sysctl.conf
root# sysctl -p
#iptablesNAT規(guī)則
#這里的ip就是server.conf 中的server 10.8.0.0 255.255.255.0 ;添加轉(zhuǎn)發(fā)規(guī)則到開機(jī)啟動項
root# echo 'iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE' >> /etc/rc.d/rc.local
root# chmod +x /etc/rc.d/rc.local
root# /etc/rc.d/rc.local
2.3.4 啟動OpenVPN
# 創(chuàng)建啟動文件
root# vim /etc/systemd/system/openvpn.service(以下內(nèi)容直接復(fù)制粘貼即可)
[Unit]
Description=OpenVPN Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=/data/openvpn/sbin/openvpn --config /data/openvpn/server.conf
#加載系統(tǒng)服務(wù)
root# systemctl daemon-reload
#開機(jī)啟動
root# systemctl enable openvpn.service
#啟動服務(wù)
root# systemctl start openvpn.service
#查看服務(wù)運行狀態(tài)
root# systemctl status openvpn.service
2.4 客戶端文件配置
2.4.1 準(zhǔn)備客戶端證書
#1)創(chuàng)建客戶端申請證書
root# cp -r /data/EasyRSA /data/openvpn/easy-rsa-client
root# cd /data/openvpn/easy-rsa-client
#初始化,執(zhí)行此命令會生成pki目錄
root# ./easyrsa init-pki
#創(chuàng)建客戶端申請證書,我這里用的是名字全拼
root# ./easyrsa gen-req zhangsan nopass(后續(xù)創(chuàng)建新證書也必須回到/data/openvpn/easy-rsa-client的目錄下創(chuàng)建)
#直接回車就行
Common Name (eg: your user, host, or server name) [zhangsan]:
req: /data/openvpn/easy-rsa-client/pki/reqs/zhangsan.req
key: /data/openvpn/easy-rsa-client/pki/private/zhangsan.key
#2)服務(wù)端簽發(fā)證書
root# cd /data/openvpn/easy-rsa-server
#將客戶端證書復(fù)制到CA工作目錄
root# ./easyrsa import-req /data/openvpn/easy-rsa-client/pki/reqs/zhangsan.req zhangsan
#設(shè)置客戶端證書有效期,我這里設(shè)置的是90天
root# sed -i "s/set_var EASYRSA_CERT_EXPIRE.*$/set_var EASYRSA_CERT_EXPIRE\t90/g" ./vars
#簽發(fā)證書
root# ./easyrsa sign client zhangsan
#輸入yes
Type the word 'yes' to continue, or any other input to abort.
Confirm request details:yes
#生成的證書
Certificate created at: /data/openvpn/easy-rsa-server/pki/issued/zhangsan.crt
2.4.2 準(zhǔn)備客戶端配置文件
#創(chuàng)建存放目錄
root# mkdir /data/openvpn/client/
#創(chuàng)建張三證書存放的目錄
root# mkdir /data/openvpn/client/zhangsan
#復(fù)制證書
root# find /data/openvpn/ \( -name "zhangsan.key" -o -name "zhangsan.crt" -o -name "ca.crt" -o -name "ta.key" \) -exec cp {} /data/openvpn/client/zhangsan \;
#配置客戶端文件
root# vim /data/openvpn/client/zhangsan/client.ovpn
client
dev tun
proto tcp
remote 124.70.49.106 1194
resolv-retry infinite
nobind
ca ca.crt
cert zhangsan.crt
key zhangsan.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
compress lz4-v2
2.5 測試
#將證書下載下來
root# cd /data/openvpn/client/
root# tar -zcvf zhangsan.tar.gz zhangsan
root# sz zhangsan.tar.gz
這里截圖為自己電腦通scp把證書等文件下載到自己電腦
#win10 安裝客戶端(這里不演示了)
https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.5-I601.exe
#將 zhangsan.tar.gz 復(fù)制到 openvpn的config目錄,然后點擊鏈接
佰馬Baimatech,集M2M產(chǎn)品研發(fā)、IoT平臺服務(wù)、國際化運營于一體,讓我們聯(lián)接,共創(chuàng)未來