一、环境准备
- 一台具备公网IP的Linux服务器(用于企业内网远程接入、运维管理,仅作内部业务访问,严格遵守网络安全规范)
- 服务器已部署稳定Docker运行环境,保障容器正常调度运行
- 放行对应访问端口:本次使用TCP 2024,需要在云服务商安全组、系统防火墙同时开放TCP 2024端口
二、创建持久化数据目录
配置、证书、日志统一存宿主机本地目录,不使用docker虚拟卷,方便备份管理
mkdir-p/data/intranet-gateway/datamkdir-p/data/intranet-gateway/data/log三、生成基础服务配置
通过容器执行初始化命令,把下方你的公网IP替换为服务器真实公网地址
dockerrun-v/data/intranet-gateway/data:/etc/gateway\--rmkylemanna/openvpn\ovpn_genconfig-utcp://你的公网IP:2024说明:服务采用TCP 2024作为通信端口,适配企业办公网络环境;可根据需求更换端口。
四、初始化证书签发体系
整套接入服务依靠SSL双向证书完成身份校验,执行命令初始化证书仓库
dockerrun-v/data/intranet-gateway/data:/etc/gateway\--rm-itkylemanna/openvpn\ovpn_initpki执行过程中设置根证书密码,务必妥善保存,后续新增、吊销接入账号都需要该密码;交互提示直接回车使用默认参数即可。
💡优化建议:测试环境可使用
ovpn_initpki nopass无密码模式,避免每次操作证书需要输入密码,适合自动化管理。
五、启动内网接入网关容器
dockerrun-d\--nameintranet-gateway\--cap-add=NET_ADMIN\-p2024:1194/tcp\-v/data/intranet-gateway/data:/etc/gateway\-v/data/intranet-gateway/data/log:/var/log\--restartunless-stopped\kylemanna/openvpn参数说明:
--cap-add=NET_ADMIN:授予网络权限,用于建立内网隧道、路由转发--restart unless-stopped:服务器重启后自动恢复服务,人为停止后不自动拉起
六、创建员工接入账号与配置文件
每一位运维/办公人员独立一套证书,实现一人一账号,离职可单独吊销权限
# 创建接入账号(示例账号:staff01)dockerrun-v/data/intranet-gateway/data:/etc/gateway\--rm-itkylemanna/openvpn\easyrsa build-client-full staff01 nopass# 导出接入配置文件,保存至宿主机/data目录dockerrun-v/data/intranet-gateway/data:/etc/gateway\--rmkylemanna/openvpn\ovpn_getclient staff01>/data/staff01.ovpn
staff01为自定义账号名称,按员工名、工位编号区分;.ovpn文件下发给对应人员,本地客户端导入使用。
七、本地客户端接入指南(Windows/macOS/Android/iOS通用)
- 客户端软件:OpenVPN Connect(官方正规客户端,仅用于企业内网远程访问)
- 获取地址:OpenVPN官网下载对应系统安装包
- 使用流程:安装客户端 → 导入管理员下发的
.ovpn配置文件 → 建立隧道,访问企业内网服务器、业务系统
八、日常运维常用命令
# 实时查看网关运行日志,排查接入异常dockerlogs-fintranet-gateway# 修改配置后,重启网关生效dockerrestart intranet-gateway# 新增接入账号(示例:staff02)dockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa build-client-full staff02 nopassdockerrun-v/data/intranet-gateway/data:/etc/gateway--rmkylemanna/openvpn ovpn_getclient staff02>/data/staff02.ovpn# 停止并删除容器(配置文件保留,可重新启动)dockerstop intranet-gateway&&dockerrmintranet-gateway员工账号吊销(离职人员回收权限)
read-p"输入需要吊销的账号名称: "DNAMEdockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa revoke$DNAMEdockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa gen-crldockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpnrm-f/etc/gateway/pki/reqs/"$DNAME".reqdockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpnrm-f/etc/gateway/pki/private/"$DNAME".keydockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpnrm-f/etc/gateway/pki/issued/"$DNAME".crtdockerrestart intranet-gateway九、证书有效期管理方案
1. 查看证书过期时间
# 查看网关服务证书有效期openssl x509-in/data/intranet-gateway/data/pki/issued/server.crt-noout-dates# 查看根证书有效期(根证书过期影响全部账号)openssl x509-in/data/intranet-gateway/data/pki/ca.crt-noout-dates# 查看员工接入证书有效期(替换staff01为账号名)openssl x509-in/data/intranet-gateway/data/pki/issued/staff01.crt-noout-dates2. 仅网关服务证书过期(无需重建整套体系)
# 备份旧证书cd/data/intranet-gateway/data/pki/mvissued/server.crt issued/server.crt.bakmvprivate/server.key private/server.key.bakmvreqs/server.req reqs/server.req.bak# 重新生成网关服务证书dockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa build-server-full server nopass# 重启网关加载新证书dockerrestart intranet-gateway3. 根证书过期(完整重建证书体系,所有员工需要重新获取配置)
# 备份旧全套证书配置mv/data/intranet-gateway/data /data/intranet-gateway/data.bak# 重新初始化证书体系dockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn ovpn_initpki# 生成网关服务证书dockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa build-server-full server nopass# 重启服务dockerrestart intranet-gateway# 重新为员工生成接入配置(示例staff01)dockerrun-v/data/intranet-gateway/data:/etc/gateway--rm-itkylemanna/openvpn easyrsa build-client-full staff01 nopassdockerrun-v/data/intranet-gateway/data:/etc/gateway--rmkylemanna/openvpn ovpn_getclient staff01>/data/staff01_new.ovpn