7人参与 • 2025-12-19 • Windows
openvpn 是一个用于创建虚拟专用网络 ( virtual private network ) 加密通道的免费开源软件openvpn 可以方便地在专用网络通道内互相访问( 当两个网络是使用私有 ip 地址的私有局域网络时,它们之间是不能相互访问的 )openvpn 采用了高强度的数据加密,再加上其开源免费的特性,使得 openvpn 成为中小型企业及个人的 vpn 首选产品openvpn 核心机制就是在 openvpn 服务器和客户端所在的计算机上都安装一个虚拟网卡 (又称虚拟网络适配器),并获得一个对应的虚拟 ip 地址
openvpn 的服务器和多个客户端就可以通过虚拟网卡,使用这些虚拟 ip 进行相互访问了
vpn 服务器 - 通过在网络中心搭建 vpn 服务器的方法实现 vpn硬件 vpn - 通过专用的硬件实现软件 vpn - 通过专用的软件实现集成 vpn - 通过含有 vpn 功能的网络设备,如:防火墙、路由器实现摘抄自 深信服社区
vpn 技术:在公有网络中构建专用的虚拟网络
按协议分类:
pptp vpnl2tp vpnmpls vpnipsec vpngre vpnssl vpnopenvpn按协议层分类:
数据链路层 [ 第二层 ]
pptp vpnl2tp vpnmpls vpn网络层 [ 第三层 ]
ipsec vpngre vpn传输层与应用层之间ssl vpn点对点隧道协议
一种支持多协议虚拟专用网络(vpn)的网络技术
以同样工作在第二层的点对点传输协议( ppp )为基础,
pptp 将 ppp 帧封装成 ip 数据包,以便于在互联网上传输并可以通过密码验证协议( pap ),可扩展认证协议( eap )增加安全性远程用户能够通过安装有点对点协议的操作系统访问公司网络资源pptp vpn 的实现需要:
客户机和服务器之间必须有联通并且可用的 ip 网络pptp vpn 可在 windows、linux 环境下搭建,或者通过配置路由器来实现二层隧道协议:
l2f - 第二层转发协议
跨越公共网络的安全隧道来将 isp pop 连接到企业内部网关l2f 允许高层协议的链路层隧道技术,使得把原始拨号服务器的位置和拨号协议连接终止与提供的网络访问位置分离成为可能结合 pptp 与 l2f 两种二层隧道协议的优点
l2tp 扩展了 ppp 模型,它使用 ppp 来封装用户数据,允许多协议通过隧道传送
l2tp 与 ipsec( internet 协议安全性 )结合 – l2tp/ipsecl2tp 基于 udp 协议
l2tp 不保证数据消息的可靠投递,若数据丢失,不予重传l2tp 的实现与 pptp 不同
pptp 要求网络为 ip 网络l2tp 要求面向数据包的点对点连接多协议标签交换:
一种用于快速数据包交换和路由的体系
目标、路由地址、转发和交换等能力管理各种不同形式通信流的机制ip 地址映射为简单的具有固定长度的标签,用于不同的包转发和包交换技术传统的 vpn 是基于 pptp、l2tp 等隧道协议来实现私有网络间数据流在公网上的传送
lsp 本身就是公网上的隧道mpls 来实现 vpn 有天然的优势mpls 的 vpn 就是通过 lsp 将私有网络的不同分支联结起来,形成一个统一的网络mpls 的 vpn 还支持对不同 vpn 间的互通控制mpls vpn 网络主要由 ce、pe 和 p 等 3 部分组成
ce(customer edge) - 用户网络边缘设备,可以是路由器交换机主机pe(provider edge) - 服务商边缘路由器,位于骨干网络p(provider) - 服务提供商网络中的骨干路由器mpls vpn 需通过配置路由器搭建internet 协议安全性:
框架结构,通过使用加密的安全服务以确保在 internet 协议 (ip) 网络上进行保密而安全的通讯ipsec· 协议通过包封装技术,还可以封装内部网络的地址,实现异地网络的互连联ipsec 不是一个单独的协议,它给出了应用于 ip 层上网络数据安全的一整套体系结构,该体系结构包括:
ah( authentication header ) - 认证头协议esp( encapsulatingsecurity payload ) - 封装安全负载协议ipsec 可以在两种模式下运行
传输模式 - 被用来计算 ah 或 esp 头,ah 或 esp 头以及 esp 加密的用户数据被放置在原 ip 包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯
隧道模式 - 用户的整个 ip 数据包被用来计算 ah 或 esp 头,ah 或 esp 头以及 esp 加密的用户数据被封装在一个新的 ip 数据包中。通常,隧道模式应用在两个安全网关之间的通讯。由此可知隧道模式可以掩盖原 ip 地址实现异地网络访问内部网络,也就是 vpn
ipsec vpn 可在 windows、linux 环境下搭建
或者通过配置防火墙、路由器、第三方软件实现
通用路由封装协议(generic routing encapsulation):
网络设备,目前有多数厂商的网络设备均支持 gre 隧道协议gre vpn 是对某些网络层协议的数据报进行封装,使这些被封装的数据报能够在另一个网络层协议中传输gre vpn 是 vpn 的第三层隧道协议,在协议层之间采用了一种被称之为 tunnel(隧道)的技术tunnel 是一个虚拟的点对点的连接·安全套接层协议( secure sockets layer )·
应用程序协议(如 http 、 telenet 、nmtp 和 ftp 等)和 tcp/ip 协议之间提供数据安全性分层的机制
tcp/ip 连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证ssl 协议可分为两层
ssl 记录协议 (ssl record protocol) - 建立在可靠的传输协议(如 tcp)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持ssl 握手协议 (ssl handshake protocol) - 建立在 ssl 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等ssl vpn 是接入企业内部的应用,而不是企业的整个网络ssl vpn 可通过标准的 web 浏览器连接因特网即可通过网页访问到企业应用ssl 协议的远程访问不需要依赖客户端软件基于 ssl 加密的应用层 vpn 协议:
openvpn 的技术核心是虚拟网卡,其次是 ssl 协议实现虚拟网卡是使用网络底层编程技术实现的一个驱动软件,安装后在主机上多出现一个网卡,可以像其它网卡一样进行配置服务程序可以在应用层打开虚拟网卡
openvpn 能够跨平台的一个很重要的理由openvpn 需要 epel 源
openvpn 需要 epel 源yum provides /usr/*bin/openvpn
没有 epel 源会有下面的报错
no matches found
使用下面的命令可以安装 epel 源
yum install -y epel-release.noarch
有 epel 源 就会输出相关的信息
2.4.12,当然,官方已经更新到 2.6_beta1loaded plugins: fastestmirror, langpacks loading mirror speeds from cached hostfile openvpn-2.4.12-1.el7.x86_64 : a full-featured ssl vpn solution repo : epel matched from: filename : /usr/sbin/openvpn
easy-rsa 可以用来生成 open vpn 服务端需要的证书
yum install -y openvpn easy-rsa
cp /usr/share/doc/openvpn-2.4.12/sample/sample-config-files/server.conf /etc/openvpn/
########################################################################### # 针对多客户端的openvpn 2.0 的服务器端配置文件示例 # # 本文件用于多客户端<->单服务器端的openvpn服务器端配置 # # openvpn也支持单机<->单机的配置(更多信息请查看网站上的示例页面) # # 该配置支持windows或者linux/bsd系统。此外,在windows上,记得将路径加上双引号, # 并且使用两个反斜杠,例如:"c:\\program files\\openvpn\\config\\foo.key" # # '#' or ';'开头的均为注释内容 ########################################################################### # openvpn应该监听本机的哪些ip地址 # 该命令是可选的,如果不设置,则默认监听本机的所有ip地址 ;local a.b.c.d # openvpn 应该监听哪个 tcp/udp 端口 # 如果你想在同一台计算机上运行多个 openvpn 实例,你可以使用不同的端口号来区分它们 # 此外,你需要在防火墙上开放这些端口 port 1194 # openvpn 使用 tcp 还是 udp 协议 ;proto tcp proto udp # 指定 openvpn 创建的通信隧道类型 # "dev tun" 将会创建一个路由ip隧道 # "dev tap" 将会创建一个以太网隧道 # 如果你是以太网桥接模式,并且提前创建了一个名为 "tap0" 的与以太网接口进行桥接的虚拟接口,则你可以使用 "dev tap0" # 如果你想控制 vpn 的访问策略,你必须为 tun/tap 接口创建防火墙规则 # 在非windows系统中,你可以给出明确的单位编号(unit number),例如"tun0" # 在 windows 中,你也可以使用 "dev-node" # 在多数系统中,除非你部分禁用或者完全禁用了 tun/tap 接口的防火墙,否则 vpn 将不起作用 ;dev tap dev tun # 如果你想配置多个隧道,你需要用到网络连接面板中 tap-win32 适配器的名称(例如 "mytap" ) # 在 xp sp2 或更高版本的系统中,你可能需要有选择地禁用掉针对 tap 适配器的防火墙 # 通常情况下,非windows系统则不需要该指令 ;dev-node mytap # 设置ssl/tls根证书(ca)、证书(cert)和私钥(key) # 每个客户端和服务器端都需要它们各自的证书和私钥文件 # 服务器端和所有的客户端都将使用相同的ca证书文件 # 通过 easy-rsa 目录下的一系列脚本可以生成所需的证书和私钥 # 记住,服务器端和每个客户端的证书必须使用唯一的 common name # 你也可以使用遵循 x509 标准的任何密钥管理系统来生成证书和私钥。 # openvpn 也支持使用一个 pkcs #12 格式的密钥文件(详情查看站点手册页面的 "pkcs12" 指令) ca ca.crt cert server.crt # 该文件应该保密 key server.key # diffie hellman parameters 算法 # 你可以使用如下名称命令生成你的文件: # openssl dhparam -out dh1024.pem 1024 # 如果你使用的是2048位密钥,使用2048替换其中的1024 dh dh2048.pem # 网络拓扑结构 # 应为子网(通过 ip 寻址),除非必须支持 windows 客户端 v2.0.9 或更低版本 # (然后是 net30,即每个客户端一个 /30) # 默认值为 net30(不推荐) topology subnet # 设置服务器端模式,并提供一个 vpn 子网,以便于从中为客户端分配 ip 地址 # 在此处的示例中,服务器端自身将占用 10.8.0.1,其他的将提供客户端使用 # 如果你使用的是以太网桥接模式,请注释掉该行。更多信息请查看官方手册页面 server 10.8.0.0 255.255.255.0 # 指定用于记录客户端和虚拟 ip 地址的关联关系的文件 # 当重启 openvpn 时,再次连接的客户端将分配到与上一次分配相同的虚拟ip地址 ifconfig-pool-persist ipp.txt # 该指令仅针对以太网桥接模式 # 首先,你必须使用操作系统的桥接能力将以太网网卡接口和tap接口进行桥接 # 然后,你需要手动设置桥接接口的ip地址、子网掩码;在这里,我们假设为 10.8.0.4 和 255.255.255.0 # 最后,我们必须指定子网的一个ip范围 (例如从 10.8.0.50 开始,到 10.8.0.100 结束),以便于分配给连接的客户端 # 如果你不是以太网桥接模式,直接注释掉这行指令即可 ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 # 该指令仅针对使用 dhcp 代理的以太网桥接模式, # 此时客户端将请求服务器端的 dhcp 服务器,从而获得分配给它的 ip 地址和 dns 服务器地址 # 在此之前,你也需要先将以太网网卡接口和 tap 接口进行桥接 # 注意:该指令仅用于 openvpn 客户端,并且该客户端的 tap 适配器需要绑定到一个 dhcp 客户端上 ;server-bridge # 推送路由信息到客户端,以允许客户端能够连接到服务器背后的其他私有子网 # (简而言之,就是允许客户端访问 vpn 服务器自身所在的其他局域网) # 记住,这些私有子网也要将 openvpn 客户端的地址池( 10.8.0.0/255.255.255.0 )反馈回 openvpn 服务器 ;push "route 192.168.10.0 255.255.255.0" ;push "route 192.168.20.0 255.255.255.0" # 为指定的客户端分配指定的 ip 地址,或者客户端背后也有一个私有子网想要访问 vpn, # 那么你可以针对该客户端的配置文件使用ccd子目录 # (简而言之,就是允许客户端所在的局域网成员也能够访问vpn) # 举个例子:假设有个 common name 为 "thelonious" 的客户端背后也有一个小型子网想要连接到 vpn, # 该子网为 192.168.40.128/255.255.255.248 # 首先,你需要去掉下面两行指令的注释: ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 # 然后创建一个文件 ccd/thelonious,该文件的内容为: # iroute 192.168.40.128 255.255.255.248 # 这样客户端所在的局域网就可以访问vpn了 # 注意,这个指令只能在你是基于路由、而不是基于桥接的模式下才能生效 # 比如,你使用了 "dev tun" 和 "server" 指令 # 再举个例子:假设你想给 thelonious 分配一个固定的ip地址 10.9.0.1 # 首先,你需要去掉下面两行指令的注释: ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 # 然后在文件 ccd/thelonious 中添加如下指令: # ifconfig-push 10.9.0.1 10.9.0.2 # 如果你想要为不同群组的客户端启用不同的防火墙访问策略,你可以使用如下两种方法: # (1) 运行多个 openvpn 守护进程,每个进程对应一个群组,并为每个进程(群组)启用适当的防火墙规则 # (2) (进阶)创建一个脚本来动态地修改响应于来自不同客户的防火墙规则 # 关于 learn-address 脚本的更多信息请参考官方手册页面 ;learn-address ./script # 如果启用该指令,所有客户端的默认网关都将重定向到vpn,这将导致诸如 web 浏览器、dns 查询等所有客户端流量都经过vpn # (为确保能正常工作,openvpn 服务器所在计算机可能需要在 tun/tap 接口与以太网之间使用 nat 或桥接技术进行连接) ;push "redirect-gateway def1 bypass-dhcp" # 某些具体的 windows 网络设置可以被推送到客户端,例如 dns 或 wins 服务器地址 # 下列地址来自 opendns.com 提供的 public dns 服务器 ;push "dhcp-option dns 208.67.222.222" ;push "dhcp-option dns 208.67.220.220" ;push "dhcp-option dns 114.114.114.114" # 去掉该指令的注释将允许不同的客户端之间相互"可见"(允许客户端之间互相访问) # 默认情况下,客户端只能"看见"服务器 # 为了确保客户端只能看见服务器,你还可以在服务器端的 tun/tap 接口上设置适当的防火墙规则 ;client-to-client # 如果多个客户端可能使用相同的证书/私钥文件或 common name 进行连接,那么你可以取消该指令的注释。 # 建议该指令仅用于测试目的。对于生产使用环境而言,每个客户端都应该拥有自己的证书和私钥。 # 如果你没有为每个客户端分别生成 common name 唯一的证书/私钥,你可以取消该行的注释 (但不推荐这样做) ;duplicate-cn # keepalive 指令将导致类似于 ping 命令的消息被来回发送,以便于服务器端和客户端知道对方何时被关闭 # 每 10 秒钟 ping一次,如果 120 秒内都没有收到对方的回复,则表示远程连接已经关闭 keepalive 10 120 # 出于 ssl/tls 之外更多的安全考虑,创建一个 "hmac 防火墙" 可以帮助抵御 dos 攻击和 udp 端口淹没攻击 # 你可以使用以下命令来生成: # openvpn --genkey --secret ta.key # 服务器和每个客户端都需要拥有该密钥的一个拷贝 # 第二个参数在服务器端应该为'0',在客户端应该为'1' # 该文件应该保密 tls-auth ta.key 0 # 选择一个密码加密算法。 # 该配置项也必须复制到每个客户端配置文件中 # 注意,v2.4 客户端 / 服务器将在 tls 模式下自动协商 aes-256-gcm # 另请参阅手册页中的 ncp 密码选项 cipher aes-256-cbc # 在 vpn 链接上启用压缩并将该选项推送到客户端(仅限 v2.4+,早期版本请参见下文) ;compress lz4-v2 ;push "compress lz4-v2" # 在vpn连接上启用压缩 # 如果你在此处启用了该指令,那么也应该在每个客户端配置文件中启用它 ;comp-lzo # 客户端最大连接数 max-clients 100 # 在完成初始化工作之后,降低 openvpn 守护进程的权限是个不错的主意 # 该指令仅限于非 windows 系统中使用 ;user nobody ;group nobody # 持久化选项可以尽量避免访问那些在重启之后由于用户权限降低而无法访问的某些资源 persist-key persist-tun # 输出一个简短的状态文件,用于显示当前的连接状态,该文件每分钟都会清空并重写一次 status openvpn-status.log # 默认情况下,日志消息将写入 syslog (在 windows 系统中,如果以服务方式运行,日志消息将写入 openvpn 安装目录的 log 文件夹中) # 你可以使用 log 或者 log-append 来改变这种默认情况 # "log" 方式在每次启动时都会清空之前的日志文件 # "log-append" 这是在之前的日志内容后进行追加 # 你可以使用两种方式之一(但不要同时使用) ;log openvpn.log ;log-append openvpn.log # 为日志文件设置适当的冗余级别 (0~9) # 冗余级别越高,输出的信息越详细 # 0 表示静默运行,只记录致命错误 # 4 表示合理的常规用法 # 5 和 6 可以帮助调试连接错误 # 9 表示极度冗余,输出非常详细的日志信息 verb 3 # 重复信息的沉默度 # 相同类别的信息只有前 20 条会输出到日志文件中 ;mute 20 # 通知客户端,当服务器重新启动时,它可以自动重新连接 [ 这个必须 proto 配置为 udp 才行 ] # 如果不是 udp 模式,会报错 'options error: --explicit-exit-notify can only be used with --proto udp' explicit-exit-notify 1
根据自己的实际情况,配置好服务端的配置文件
port 31194 proto tcp dev tun ca /etc/openvpn/server/cert/ca.crt # 这里要以自己实际的证书文件名称来命名,以自己的实际场景为准 cert /etc/openvpn/server/cert/chen2ha.crt # 这里要以自己实际的证书文件名称来命名,以自己的实际场景为准 key /etc/openvpn/server/cert/chen2ha.key dh /etc/openvpn/server/cert/dh2048.pem topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 10.0.0.0 255.255.252.0" push "redirect-gateway def1 bypass-dhcp" push "dhcp-option dns 114.114.114.114" keepalive 10 120 cipher aes-256-cbc comp-lzo max-clients 100 persist-key persist-tun status /etc/openvpn/server/logs/openvpn-status.log log-append /etc/openvpn/server/logs/openvpn.log verb 3 mute 20
创建相关的路径
mkdir /etc/openvpn/server/{cert,logs}
复制 easy-rsa 文件
cp -r /usr/share/easy-rsa /etc/openvpn/
复制 easy-rsa 变量配置文件
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easy-rsa/3/vars
配置变量文件
# 所在的国家 set_var easyrsa_req_country "cn" # 所在的省份 set_var easyrsa_req_province "shang hai" # 所在的城市 set_var easyrsa_req_city "shang hai" # 所属的组织 set_var easyrsa_req_org "devops" # 邮件地址 set_var easyrsa_req_email "chen2ha@devops.com" # 组织单位,部门 set_var easyrsa_req_ou "openvpn" # 密钥长度 set_var easyrsa_key_size 2048 # 算法 set_var easyrsa_algo rsa # ca 有效期,单位为天 set_var easyrsa_ca_expire 365000 # 服务端和客户端证书有效期,单位为天 set_var easyrsa_cert_expire 3650
初始化 pki 相关目录和文件
cd /etc/openvpn/easy-rsa/3 ./easyrsa init-pki
创建 ca 机构
common name (eg: your user, host, or server name) [easy-rsa ca]: 可以随意填写,也可以直接回车
./easyrsa build-ca nopass
完成后,会提示 ca 证书的路径
your new ca certificate file for publishing is at: /etc/openvpn/easy-rsa/3/pki/ca.crt
复制 ca 证书到配置文件指定的路径下
cp /etc/openvpn/easy-rsa/3/pki/ca.crt /etc/openvpn/server/cert/
以下的申请文件和颁发,可以归结成一个命令
cd /etc/openvpn/easy-rsa/3 ./easyrsa build-server-full chen2ha nopass
chen2ha 表示生成的 申请文件的名称,生成的文件名称为:chen2ha.req 和 chen2ha.key
common name (eg: your user, host, or server name) [chen2ha]: 直接回车
cd /etc/openvpn/easy-rsa/3 ./easyrsa gen-req chen2ha nopass
完成后,会提示证书的路径
keypair and certificate request completed. your files are: req: /etc/openvpn/easy-rsa/3/pki/reqs/chen2ha.req key: /etc/openvpn/easy-rsa/3/pki/private/chen2ha.key
复制证书到配置文件指定的路径下
cp /etc/openvpn/easy-rsa/3/pki/private/chen2ha.key /etc/openvpn/server/cert/chen2ha.key
server 表示类型
./easyrsa sign server chen2ha
完成后,会提示证书的路径
certificate created at: /etc/openvpn/easy-rsa/3/pki/issued/chen2ha.crt
复制证书到配置文件指定的路径下
cp /etc/openvpn/easy-rsa/3/pki/issued/chen2ha.crt /etc/openvpn/server/cert/chen2ha.crt
注意 -out 参数后面的路径和文件名称要改成和配置文件里面的一致
openssl dhparam -out /etc/openvpn/server/cert/dh2048.pem 2048
查看服务端是否开启了
grep net.ipv4.ip_forward /etc/sysctl.conf
如果返回为空,执行下面的命令
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
如果返回 net.ipv4.ip_forward = 0,执行下面的命令
sed -i 's/net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
使功能立即生效
sysctl -p
iptables -t nat -a postrouting -s 10.8.0.0/24 -j masquerade
如果没有其他 iptables 规则,可以执行 iptables save 保存这条规则,如果不确定,可以把这条命令追加到 /etc/rc.d/rc.local 文件内
/etc/rc.d/rc.local 文件必须要有执行权限才能保证开机后会被读取
echo 'iptables -t nat -a postrouting -s 10.8.0.0/24 -j masquerade' >> /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local
实际的 unit 文件名称是 openvpn@.service
systemctl enable --now openvpn@server
验证隧道网卡是否创建成功
ifconfig tun0
同样可以总结成一个命令
cd /etc/openvpn/easy-rsa/3 ./easyrsa build-client-full zhangsan nopass
和服务端的操作方式一致,只需要将 zhangsan 替换成自己需要分配的人员名称即可
cd /etc/openvpn/easy-rsa/3 ./easyrsa gen-req zhangsan nopass
./easyrsa sign client zhangsan
需要以 .ovpn 后缀,配置的解释和 server 端的一致
client dev tun proto tcp remote <公网 ip> 1194 # 无限期地尝试解析 openvpn 服务器的主机名 ## 对于笔记本电脑等未永久连接到互联网的机器非常有用 resolv-retry infinite # 大多数客户端不需要绑定到特定的本地端口号 nobind persist-key persist-tun ca ca.crt # 用户的证书文件名称 cert <用户名称>.crt key <用户名称>.key remote-cert-tls server verb 3 comp-lzo route <ip> <netmask> vpn_gateway # 客户端路由配置 # route-nopull - openvpn 连接后不会添加路由,也就是不会有任何网络请求走 openvpn # vpn_gateway - 指定 ip 的网络请求走 openvpn # net_gateway - 和 vpn_gateway 相反,表示在默认出去的访问全部走 openvpn 时,强行指定部分 ip 访问不通过 openvpn 出去 ## max-routes 参数表示可以添加路由的条数,默认只允许添加 100 条路由,如果少于 100 条路由可不加这个参数
mkdir /etc/openvpn/client/zhangsan vim /etc/openvpn/client/zhangsan/zhangsan.ovpn
client dev tun proto tcp remote <公网 ip> 31194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert zhangsan.crt key zhangsan.key remote-cert-tls server verb 3 comp-lzo route 10.0.0.0 255.255.252.0 vpn_gateway
汇总证书文件
cp /etc/openvpn/easy-rsa/3/pki/ca.crt /etc/openvpn/client/zhangsan/
for i in crt key;do find /etc/openvpn/easy-rsa/3/pki/ -name "zhangsan.${i}" -exec cp {} /etc/openvpn/client/zhangsan/ \;;done
打包证书和配置文件
cd /etc/openvpn/client/ tar czf zhangsan.tgz zhangsan/*
执行完命令后,相关的证书文件都会被删除,如果做了上面的证书汇总的操作,也要记得把汇总的文件删除了,避免后期的管理混乱
cd /etc/openvpn/easy-rsa/3 ./easyrsa revoke zhangsan
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论