一、环境准备

  • 一台具备公网IP的Linux服务器(用于企业内网远程接入、运维管理,仅作内部业务访问,严格遵守网络安全规范)
  • 服务器已部署稳定Docker运行环境,保障容器正常调度运行
  • 放行对应访问端口:本次使用TCP 2024,需要在云服务商安全组、系统防火墙同时开放TCP 2024端口

二、创建持久化数据目录

配置、证书、日志统一存宿主机本地目录,不使用docker虚拟卷,方便备份管理

mkdir -p /data/intranet-gateway/data
mkdir -p /data/intranet-gateway/data/log

三、生成基础服务配置

通过容器执行初始化命令,把下方你的公网IP替换为服务器真实公网地址

docker run -v /data/intranet-gateway/data:/etc/gateway \
  --rm kylemanna/openvpn \
  ovpn_genconfig -u tcp://你的公网IP:2024

说明:服务采用TCP 2024作为通信端口,适配企业办公网络环境;可根据需求更换端口。

四、初始化证书签发体系

整套接入服务依靠SSL双向证书完成身份校验,执行命令初始化证书仓库

docker run -v /data/intranet-gateway/data:/etc/gateway \
  --rm -it kylemanna/openvpn \
  ovpn_initpki

执行过程中设置根证书密码,务必妥善保存,后续新增、吊销接入账号都需要该密码;交互提示直接回车使用默认参数即可。

💡优化建议:测试环境可使用ovpn_initpki nopass无密码模式,避免每次操作证书需要输入密码,适合自动化管理。

五、启动内网接入网关容器

docker run -d \
  --name intranet-gateway \
  --cap-add=NET_ADMIN \
  -p 2024:1194/tcp \
  -v /data/intranet-gateway/data:/etc/gateway \
  -v /data/intranet-gateway/data/log:/var/log \
  --restart unless-stopped \
  kylemanna/openvpn

参数说明:

  • --cap-add=NET_ADMIN:授予网络权限,用于建立内网隧道、路由转发
  • --restart unless-stopped:服务器重启后自动恢复服务,人为停止后不自动拉起

六、创建员工接入账号与配置文件

每一位运维/办公人员独立一套证书,实现一人一账号,离职可单独吊销权限

# 创建接入账号(示例账号:staff01)
docker run -v /data/intranet-gateway/data:/etc/gateway \
  --rm -it kylemanna/openvpn \
  easyrsa build-client-full staff01 nopass

# 导出接入配置文件,保存至宿主机/data目录
docker run -v /data/intranet-gateway/data:/etc/gateway \
  --rm kylemanna/openvpn \
  ovpn_getclient staff01 > /data/staff01.ovpn

staff01为自定义账号名称,按员工名、工位编号区分;.ovpn文件下发给对应人员,本地客户端导入使用。

七、本地客户端接入指南(Windows/macOS/Android/iOS通用)

  1. 客户端软件:OpenVPN Connect(官方正规客户端,仅用于企业内网远程访问)
  2. 获取地址:OpenVPN官网下载对应系统安装包
  3. 使用流程:安装客户端 → 导入管理员下发的.ovpn配置文件 → 建立隧道,访问企业内网服务器、业务系统

八、日常运维常用命令

# 实时查看网关运行日志,排查接入异常
docker logs -f intranet-gateway

# 修改配置后,重启网关生效
docker restart intranet-gateway

# 新增接入账号(示例:staff02)
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa build-client-full staff02 nopass
docker run -v /data/intranet-gateway/data:/etc/gateway --rm kylemanna/openvpn ovpn_getclient staff02 > /data/staff02.ovpn

# 停止并删除容器(配置文件保留,可重新启动)
docker stop intranet-gateway && docker rm intranet-gateway

员工账号吊销(离职人员回收权限)

read -p "输入需要吊销的账号名称: " DNAME
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa revoke $DNAME
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa gen-crl
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn rm -f /etc/gateway/pki/reqs/"$DNAME".req
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn rm -f /etc/gateway/pki/private/"$DNAME".key
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn rm -f /etc/gateway/pki/issued/"$DNAME".crt
docker restart 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 -dates

2. 仅网关服务证书过期(无需重建整套体系)

# 备份旧证书
cd /data/intranet-gateway/data/pki/
mv issued/server.crt issued/server.crt.bak
mv private/server.key private/server.key.bak
mv reqs/server.req reqs/server.req.bak

# 重新生成网关服务证书
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa build-server-full server nopass

# 重启网关加载新证书
docker restart intranet-gateway

3. 根证书过期(完整重建证书体系,所有员工需要重新获取配置)

# 备份旧全套证书配置
mv /data/intranet-gateway/data /data/intranet-gateway/data.bak

# 重新初始化证书体系
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn ovpn_initpki

# 生成网关服务证书
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa build-server-full server nopass

# 重启服务
docker restart intranet-gateway

# 重新为员工生成接入配置(示例staff01)
docker run -v /data/intranet-gateway/data:/etc/gateway --rm -it kylemanna/openvpn easyrsa build-client-full staff01 nopass
docker run -v /data/intranet-gateway/data:/etc/gateway --rm kylemanna/openvpn ovpn_getclient staff01 > /data/staff01_new.ovpn
Logo

欢迎加入我们的广州开发者社区,与优秀的开发者共同成长!

更多推荐