openvpn搭建

发布于 2024-08-21  138 次阅读


文章目录

展开

OpenVPN 服务端搭建部署

安装配置证书软件
  0 ✓ 15:02:37 root@gouwo,172.25.0.1:~ # yum -y install easy-rsa
  0 ✓ 15:02:37 root@gouwo,172.25.0.1:~ # mkdir /opt/easy-rsa
  0 ✓ 15:02:40 root@gouwo,172.25.0.1:~ # cd /opt/easy-rsa
  0 ✓ 15:02:40 root@gouwo,172.25.0.1:/opt/easy-rsa # rpm -ql easy-rsa   #查看已安装的RPM包中名为 easy-rsa 的文件列表
  0 ✓ 15:02:41 root@gouwo,172.25.0.1:/opt/easy-rsa # cp -a /usr/share/easy-rsa/3.0.8/* .
  0 ✓ 15:02:41 root@gouwo,172.25.0.1:/opt/easy-rsa # cp -a /usr/share/doc/easy-rsa-3.0.8/vars.example ./vars
  0 ✓ 15:02:44 root@gouwo,172.25.0.1:/opt/easy-rsa # vim vars 
if [ -z "$EASYRSA_CALLER" ]; then
        echo "You appear to be sourcing an Easy-RSA 
'vars' file." >&2
        echo "This is no longer necessary and is 
disallowed. See the section called" >&2
        echo "'How to use this file' near the top 
comments for more details." >&2
       return 1
fi
set_var EASYRSA_DN "cn_only"
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Shanghai"
set_var EASYRSA_REQ_ORG "koten"
set_var EASYRSA_REQ_EMAIL "888888@qq.comm"
set_var EASYRSA_NS_SUPPORT "yes"
创建证书

代码语言:javascript

复制

#1、初始化,在当前目录创建PKI目录,用于存储整数
0 ✓ 15:03:58 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa init-pki

#2、创建根证书,会提示设置密码,用于ca对之后生成的server和client证书签名时使用,其他提示内容直接回车即可
 0 ✓ 15:04:11 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa build-ca
Enter New CA Key Passphrase:         #注意密码不能太短,我这边设置的是六位数
Re-Enter New CA Key Passphrase: 

#3、创建server端证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可
0 ✓ 15:04:28 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa gen-req server nopass

#4、给server端证书签名,提示内容需要输入yes和创建ca根证书时候的密码
 0 ✓ 15:04:37 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa sign server server

#5、创建Diffie-Hellman文件,密钥交换时的Diffie-Hellman算法
  0 ✓ 15:04:52 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa gen-dh

#6、创建client端的证书和私钥文件,nopass表示不加密私钥文件,提示内容直接回车即可
  0 ✓ 15:05:24 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa gen-req client nopass

#7、给client端证书前面,提示内容输入yes和创建ca根证书时候的密码
  0 ✓ 15:05:31 root@gouwo,172.25.0.1:/opt/easy-rsa # ./easyrsa sign client client

#8、检查是否有ca根证书、客户端服务端证书、客户端服务端私钥
  0 ✓ 15:05:44 root@gouwo,172.25.0.1:/opt/easy-rsa # tree
.
|-- easyrsa                                                  # 管理命令
|-- openssl-easyrsa.cnf
|-- pki
|   |-- ca.crt                                               #ca根证书,服务端与客户端都需要用
|   |-- certs_by_serial
|   |   |-- 802D90369110ABF39909AB659CE0C72C.pem
|   |   `-- E14A36BE8008769975F1747FB0DCB712.pem
|   |-- dh.pem                                               #认证算法 服务端
|   |-- index.txt
|   |-- index.txt.attr
|   |-- index.txt.attr.old
|   |-- index.txt.old
|   |-- issued
|   |   |-- client.crt                                       #客户端证书
|   |   `-- server.crt                                       #服务端证书
|   |-- openssl-easyrsa.cnf
|   |-- private
|   |   |-- ca.key
|   |   |-- client.key                                       #客户端私钥
|   |   `-- server.key                                       #服务端私钥
|   |-- renewed
|   |   |-- certs_by_serial
|   |   |-- private_by_serial
|   |   `-- reqs_by_serial
|   |-- reqs
|   |   |-- client.req
|   |   `-- server.req
|   |-- revoked
|   |   |-- certs_by_serial
|   |   |-- private_by_serial
|   |   `-- reqs_by_serial
|   |-- safessl-easyrsa.cnf
|   |-- serial
|   `-- serial.old
|-- vars
`-- x509-types
    |-- ca
    |-- client
    |-- code-signing
    |-- COMMON
    |-- email
    |-- kdc
    |-- server
    `-- serverClient
安装openvpn并写入服务端配置文件
## 安装openvpn
  0 ✓ 15:05:48 root@gouwo,172.25.0.1:/opt/easy-rsa # yum install -y openvpn

## 修改配置文件
  0 ✓ 15:07:05 root@gouwo,172.25.0.1:/opt/easy-rsa # cat /etc/openvpn/server.conf
port 1194                                    #端口
proto udp                                    #协议
dev tun                                      #采用路由隧道模式
ca /opt/easy-rsa/pki/ca.crt                  #ca证书的位置
cert /opt/easy-rsa/pki/issued/server.crt     #服务端公钥的位置
key /opt/easy-rsa/pki/private/server.key     #服务端私钥的位置
dh /opt/easy-rsa/pki/dh.pem                  #证书校验算法  
server 10.8.0.0 255.255.255.0                #给客户端分配的地址池
push "route 10.0.16.16 255.255.252.0"        #允许客户端访问的内网网段
ifconfig-pool-persist ipp.txt                #地址池记录文件位置,未来让openvpn客户端固定ip地址使用的
keepalive 10 120                             #存活时间,10秒ping一次,120秒如果未收到响应则视为短线
max-clients 100                              #最多允许100个客户端连接
status openvpn-status.log                    #日志位置,记录openvpn状态
log /var/log/openvpn.log                     #openvpn日志记录位置
verb 3                                       #openvpn版本
client-to-client                             #允许客户端与客户端之间通信
persist-key                                  #通过keepalive检测超时后,重新启动VPN,不重新读取
persist-tun                                  #检测超时后,重新启动VPN,一直保持tun是linkup的,否则网络会先linkdown然后再linkup
duplicate-cn                                 #客户端密钥(证书和私钥)是否可以重复
comp-lzo                                     #启动lzo数据压缩格式
启动并检查端口
## 启动
0 ✓ 15:08:14 root@gouwo,172.25.0.1:/opt/easy-rsa # systemctl restart openvpn@server

## 加入开机自启
  0 ✓ 15:08:37 root@gouwo,172.25.0.1:/opt/easy-rsa # systemctl enable openvpn@server
Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn@server.service to /usr/lib/systemd/system/openvpn@.service.

## 查看网段
0 ✓ 15:08:42 root@gouwo,172.25.0.1:/opt/easy-rsa # ip a s tun0
74: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::c9b5:21e6:24ee:bc34/64 scope link flags 800 
       valid_lft forever preferred_lft forever

## 检测端口
  0 ✓ 16:50:36 root@gouwo,172.25.0.1:/etc/nginx/ssl # ss -lntup|grep 1194
udp    UNCONN     0      0         *:1194                  *:*                   users:(("openvpn",pid=12176,fd=6))

## 查看进程
0 ✓ 15:09:04 root@gouwo,172.25.0.1:/opt/easy-rsa # ps -ef | grep openvpn
root     24895     1  0 15:08 ?        00:00:00 /usr/sbin/openvpn --cd /etc/openvpn/ --config server.conf
root     25371 13539  0 15:09 pts/0    00:00:00 grep --color=auto openvpn

OpenVPN客户端搭建部署(windows端)

安装OpenVPN软件

https://download.wodeyumengouwo.com/other/openvpn-install-2.4.6-I601.exe

https://download.wodeyumengouwo.com/other/tap-windows-9.21.1.exe

配置OpenVPN

image-20240819172524571

将ca根证书、client.key、client.crt放入config目录

  0 ✓ 15:09:28 root@gouwo,172.25.0.1:/opt/easy-rsa # sz pki/ca.crt 
  0 ✓ 15:11:11 root@gouwo,172.25.0.1:/opt/easy-rsa # sz pki/private/client.key 
  0 ✓ 15:11:33 root@gouwo,172.25.0.1:/opt/easy-rsa # sz pki/issued/client.crt 

创建client.ovpn

client
dev tun
proto udp
remote 服务器ip 1194    #注意此处更改为openvpn服务端ip
resolv-retry infinite
nobind
ca ca.crt
cert wp.crt
key wp.key
verb 3
persist-key
comp-lzo

目录最终状态(因为这里有同名的client文件了所以改名了)

image-20240819173339050

连接测试

以管理员身份运行后连接

image-20240819173726823

连接成功

image-20240819173811131