美文网首页
OpenVPN服务部署及使用文档

OpenVPN服务部署及使用文档

作者: DGFM | 来源:发表于2023-05-29 16:23 被阅读0次

OpenVPN服务部署及使用文档

本文档目的为实现vpn便捷访问,使用闲置设备,绑定公网IP后,搭建vpn服务,使办公网设备访问池中其他无公网设备;

环境

云主机名 系统 内网IP 公网IP VPN服务端口 备注
openvpn服务器 CentOS7.9 172.17.1.65 123.247.xxx.xxx 1194

部署OpenVPN

原文档链接:在 CentOS7 上搭建 OpenVPN 服务端并添加用户 (babamumu.com)

安装openvpn及其他依赖

安装服务

yum -y install epel-release
yum -y install openvpn easy-rsa iptables-services

配置IP地址转发

很重要,如果不配置,则无法实现vpn功能;

echo -e "###OpenVPN ADD\nnet.ipv4.conf.default.accept_source_route = 1\nnet.ipv4.conf.default.rp_filter = 0\nnet.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

生成证书和密钥

查看文件

安装完openvpn服务端后,会生成/usr/share/easy-rsa/3.0.8/目录,其中保存的是生成证书用的工具;

[root@openvpn ~]# ls /usr/share/easy-rsa/3.0.8/
easyrsa  openssl-easyrsa.cnf  x509-types

创建目录

mkdir -p /etc/openvpn/easy-rsa/

将所需文件复制到指定目录中

cp -r /usr/share/easy-rsa/3.0.8/* /etc/openvpn/easy-rsa/
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa/vars

进入/etc/openvpn/easy-rsa/并编辑vars文件

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

.
.
102 set_var EASYRSA_REQ_COUNTRY     "CN"
103 set_var EASYRSA_REQ_PROVINCE    "LiaoNing"
104 set_var EASYRSA_REQ_CITY        "ShenYang"
105 set_var EASYRSA_REQ_ORG         "LNSZ"
106 set_var EASYRSA_REQ_EMAIL       "xxxxx@qq.com"
107 set_var EASYRSA_REQ_OU          "Lnsz test vpn"
.
.

生效变量

source ./vars

生成CA根证书

./easyrsa init-pki
./easyrsa build-ca nopass

生成 OpenVPN 服务器证书和密钥

./easyrsa build-server-full remitProd nopass     #第一个参数 remitProd 为证书名称
./easyrsa gen-dh
openvpn --genkey --secret ta.key
#如果出现警告
#WARNING: Using --genkey --secret filename is DEPRECATED.  Use --genkey secret filename instead.
#则执行下面的命令
openvpn --genkey secret ta.key

复制证书及密钥文件

cd /etc/openvpn/
cp /etc/openvpn/easy-rsa/{pki/dh.pem,pki/ca.crt,ta.key,pki/issued/remitProd.crt,pki/private/remitProd.key} /etc/openvpn/

配置OpenVPN服务

cd /etc/openvpn/
vim service.conf

#local 123.57.xxx.xxx #指定监听的本机IP(因为有些计算机具备多个IP地址),该命令是可选的,默认监听所有IP地址
port 1194 #服务端端口号
proto tcp #通过tcp协议来连接,也可以通过udp
dev tun #路由模式,注意windows下必须使用dev tap
ca /etc/openvpn/ca.crt #ca证书存放位置
cert /etc/openvpn/remitProd.crt #服务器证书存放位置
key /etc/openvpn/remitProd.key  # #服务器密钥存放位置
dh /etc/openvpn/dh.pem #dh.pem存放位置
tls-auth /etc/openvpn/ta.key 0  #ta.key存放位置
server 20.20.20.0 255.255.255.0 #虚拟局域网网段设置
ifconfig-pool-persist ipp.txt
client-to-client                         #开启客户端互访
duplicate-cn                             #支持一个证书多个客户端登录使用,建议不启用
keepalive 10 120
cipher AES-128-CBC
#comp-lzo
max-clients 100                          #最大客户端并发连接数量
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
push "route 172.17.1.0 255.255.255.0" #实际内网ip网段

配置iptables和selinux

在安装centos系统后,初始化阶段应关闭selinux服务;

配置iptables规则实现ip转发

注意:以下内容中的地址是vpn的虚拟地址,应与配置文件保持一致。而且如果系统开启了firewalld,则需要同时开放1194端口;

systemctl enable iptables && systemctl start iptables
iptables -F   # 清理所有防火墙规则
iptables -t nat -A POSTROUTING -s 20.20.20.0/24 -j MASQUERADE
iptables-save > /etc/sysconfig/iptables   # iptables 规则持久化保存

安装zip

yum -y install zip

服务启动测试

systemctl start openvpn@server  && systemctl enable openvpn@server

服务启动后,需要确认服务状态是否正常,并且端口是否开启;

[root@openvpn openvpn]# systemctl status openvpn@server
● openvpn@server.service - OpenVPN Robust And Highly Flexible Tunneling Application On server
   Loaded: loaded (/usr/lib/systemd/system/openvpn@.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-05-30 14:41:10 CST; 1h 6min ago
 Main PID: 22860 (openvpn)
   Status: "Initialization Sequence Completed"
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─22860 /usr/sbin/openvpn --cd /etc/openvpn/ --config server.conf

May 30 14:41:10 openvpn systemd[1]: Starting OpenVPN Robust And Highly Flexible Tunneling Application On server...
May 30 14:41:10 openvpn systemd[1]: Started OpenVPN Robust And Highly Flexible Tunneling Application On server.
[root@openvpn openvpn]# ss -tunl
Netid State      Recv-Q Send-Q                             Local Address:Port                                            Peer Address:Port
.
.
tcp   LISTEN     0      32                                             *:1194                                                       *:*
.
.

服务管理命令

systemctl start openvpn@server      # 启动服务;
systemctl stop openvpn@server       # 关闭服务;
systemctl status openvpn@server     # 查询服务状态;

创建client端配置文件及证书文件

原文当中使用脚本方式实现半自动用户管理;

创建脚本保存目录

mkdir /etc/openvpn/client

创建配置模板文件

cd /etc/openvpn/client
vim sample.ovpn

#!/bin/bash

client
remote 123.247.xxx.xxx 1194    # 此处为该vpn服务器的公网地址,例:remote 106.12.1.1 1194
dev tun
proto tcp
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client.crt
key /etc/openvpn/client.key
tls-auth /etc/openvpn/ta.key 1
remote-cert-tls server
resolv-retry infinite
nobind
persist-key
persist-tun
#comp-lzo
verb 3
mute-replay-warnings

创建添加vpn用户脚本

vim ovpn_user.sh

# ! /bin/bash
 
set -e
 
OVPN_USER_KEYS_DIR=/etc/openvpn/client/keys
EASY_RSA_DIR=/etc/openvpn/easy-rsa/
PKI_DIR=$EASY_RSA_DIR/pki
 
for user in "$@"
do
  if [ -d "$OVPN_USER_KEYS_DIR/$user" ]; then
    rm -rf $OVPN_USER_KEYS_DIR/$user
    rm -rf  $PKI_DIR/reqs/$user.req
    sed -i '/'"$user"'/d' $PKI_DIR/index.txt
  fi
  cd $EASY_RSA_DIR
  # 生成客户端SSL证书文件
  ./easyrsa build-client-full $user nopass
  # 整理下生成的文件
  mkdir -p  $OVPN_USER_KEYS_DIR/$user
  cp $PKI_DIR/ca.crt $OVPN_USER_KEYS_DIR/$user/   # CA 根证书
  cp $PKI_DIR/issued/$user.crt $OVPN_USER_KEYS_DIR/$user/   # 客户端证书
  cp $PKI_DIR/private/$user.key $OVPN_USER_KEYS_DIR/$user/  # 客户端证书密钥
  cp /etc/openvpn/client/sample.ovpn $OVPN_USER_KEYS_DIR/$user/$user.ovpn # 客户端配置文件
  sed -i 's/client.crt/'"$user".crt'/g' $OVPN_USER_KEYS_DIR/$user/$user.ovpn
  sed -i 's/client.key/'"$user".key'/g' $OVPN_USER_KEYS_DIR/$user/$user.ovpn
  cp $EASY_RSA_DIR/ta.key $OVPN_USER_KEYS_DIR/$user/ta.key  # auth-tls 文件
  cd $OVPN_USER_KEYS_DIR
  zip -r $user.zip $user
done
exit 0

脚本测试

bash ovpn_user.sh [要添加的vpn用户名]

示例
bash ovpn_user.sh test

创建完成后可以在/etc/openvpn/client/keys/下看到相关文件

[root@openvpn openvpn]# ls /etc/openvpn/client/keys/
test  test.zip

创建删除vpn用户脚本

vim del_ovpn_user.sh

#!/bin/bash

set -e
OVPN_USER_KEYS_DIR=/etc/openvpn/client/keys
EASY_RSA_DIR=/etc/openvpn/easy-rsa/
for user in "$@"
do
  cd $EASY_RSA_DIR
  echo -e 'yes\n' | ./easyrsa revoke $user
  ./easyrsa gen-crl
  # 吊销掉证书后清理客户端相关文件
  if [ -d "$OVPN_USER_KEYS_DIR/$user" ]; then
    rm -rf $OVPN_USER_KEYS_DIR/${user}*
  fi
  systemctl restart openvpn@server
done
exit 0

使用方式与添加用户脚本相同;

windows连接测试

下载并安装client端

下载地址(可能需要翻墙):https://openvpn.net/client/

下载完成后直接安装即可;

下载添加的vpn用户中的压缩包

[root@openvpn openvpn]# ls client/keys/
test  test.zip

连接VPN测试

打开openvpn客户端,点击右下方+,选择FILE,将之前下载的压缩包中test.ovpn文件加载进去即可;

之后就可以进行访问测试了,步骤略;

相关文章

  • openvpn 部署文档

    0. 当前 网络拓扑 环境图示(VMware 环境) 1. 配置并生成 证书、公私钥和算法等文件 1.1 安装软件...

  • 搭建open唯品恩

    1.安装 OpenVPN 服务。使用以下命令安装 OpenVPN 2.配置 OpenVPN。OpenVPN 配置文...

  • vpn

    文件下载: openvpn服务端部署: 下载配置和客户端手册:http://192.168.16.144:1180...

  • Linux 部署 OpenVPN server

    参考文件 OpenVPN 安装文档[https://openvpn.net/community-resources...

  • Istio on ACK集成生态(2): 扩展AlertMana

    阿里云容器服务Kubernetes(简称ACK)支持一键部署Istio,可以参考文档在ACK上部署使用Isito。...

  • ES安装部署文档

    ES安装部署文档 1.环境及准备 服务器:Ubuntu Jdk:1.8 Elasticsearch版本:5.6.9...

  • Apollo的简单使用

    Apollo的简单使用 Apollo官方使用文档 JAVA客户端使用指南(Apollo官方文档) 服务地址及用户 ...

  • Minio 文件服务(2)—— Minio用Nginx做负载均衡

    Minio 文件服务(1)—— Minio部署使用及存储机制分析Minio 文件服务(2)—— Minio用Ngi...

  • centos7安装seafile7.1.x

    本文档主要用来说明如何使用预编译安装包来部署 Seafile 服务器 参考seafile官方的文档,但是官方文档太...

  • 五、SVN(subversion)的部署和使用

    概要 (本文介绍过程,SVN部署和使用,并且将研发通过SVN更新的代码进行自动上线)搭建完openvpn之后,研发...

网友评论

      本文标题:OpenVPN服务部署及使用文档

      本文链接:https://www.haomeiwen.com/subject/ubgjedtx.html