luler 一、简介 本文介绍如何利用基于 Docker 封装的 openvpn 镜像快速实现异地组网 集成了 Web UI,可实现在线授权访问,在线调整openvpn客户端、服务端配置,在线管理客户端连接证书配置 基于企业级的 openvpn 工具生态,可靠、稳定、安全,各种操作系统的连接客户端一键接入虚拟网络 开源项目参考:https://github.com/d3vilh/openvpn-server OpenVPN 异地组网拓扑图参考 二、安装与使用 1. 快速搭建 openvpn-server、可视化Web UI服务 克隆仓库,该仓库已经配置好各种启动配置 git clone https://github.com/d3vilh/openvpn-server.git 进入openvpn-server目录,查看编辑目录下的docker-compose.yml配置文件 version: "3.5" services: openvpn: container_name: openvpn # If you want to build your own image with docker-compose, uncomment the next line, comment the "image:" line and run "docker-compose build" following by "docker-compose up -d" # build: . image: d3vilh/openvpn-server:latest privileged: true ports: - "1194:1194/udp" # openvpn UDP port - "1194:1194/tcp" # openvpn TCP port # - "2080:2080/tcp" # management port. uncomment if you would like to share it with the host environment: TRUST_SUB: "10.0.70.0/24" GUEST_SUB: "10.0.71.0/24" HOME_SUB: "192.168.88.0/24" volumes: - ./pki:/etc/openvpn/pki - ./clients:/etc/openvpn/clients - ./config:/etc/openvpn/config - ./staticclients:/etc/openvpn/staticclients - ./log:/var/log/openvpn - ./fw-rules.sh:/opt/app/fw-rules.sh - ./checkpsw.sh:/opt/app/checkpsw.sh - ./server.conf:/etc/openvpn/server.conf cap_add: - NET_ADMIN restart: always depends_on: - "openvpn-ui" openvpn-ui: container_name: openvpn-ui image: d3vilh/openvpn-ui:latest environment: - OPENVPN_ADMIN_USERNAME=admin #web ui登录账号,必须调整成复杂的 - OPENVPN_ADMIN_PASSWORD=gagaZush #web ui登录密码,必须调整成复杂的 privileged: true ports: - "18080:8080/tcp" #web ui的端口,根据需要调整外部端口 volumes: - ./:/etc/openvpn - ./db:/opt/openvpn-ui/db - ./pki:/usr/share/easy-rsa/pki - /var/run/docker.sock:/var/run/docker.sock:ro restart: always 配置完成,执行下面命令一键启动 docker-compose up -d 成功启动截图 2. 登录管理界面,进行初始化配置,新建客户端连接配置 输入docker-compose.yml中配置的OPENVPN_ADMIN_USERNAME、OPENVPN_ADMIN_PASSWORD,即可登录 登录之后,进入首页,可以实时查看服务器运行信息 (可选)调整 openvpn-server 服务端配置,可以在线调整服务端口、协议等等,调整后保存并重启 (必须)调整客户端配置,需要调整IP、端口、协议等,这个只是调整模板,后面在Certificates菜单中新建客户端就是基于这个模板 限制只有虚拟局域网的IP才走虚拟专用局域网 新建客户端连接配置 创建新的客户端连接证书,设置一下英文名称、静态IP 下载xx.ovpn连接配置文件,也支持重建、取消、删除等各种操作 3. 客户端节点接入虚拟局域网 各种操作系统的客户端下载地址参考:https://openvpn.net/client/ 也可以通过Docker容器作为客户端连接(不支持Windows) 新建客户端docker-compose.yml配置文件,内容如下: version: '3' services: openvpn-client: image: dperson/openvpn-client restart: always cap_add: - NET_ADMIN # 需要此权限来修改网络设置 volumes: - ./vpn:/vpn # 将配置文件挂载到容器内 network_mode: host 把新增的客户端配置文件复制到./vpn目录内,然后一键启动 docker-compose up -d 客户端启动之后,就能连接进入虚拟局域网,可以通过访问虚拟局域网中的IP来访问远程或异地的机器 ping一下局域网中的其他IP 访问组网中的其他机器的服务,如http服务、MySQL服务等 三、总结 使用该工具可以快速搭建虚拟专用网络,实现多机器异地组网 openvpn 是成熟的企业级的VPN方案,安全稳定可靠 集成了 Web UI 在线管理,便于在线监控与管理,实现可观测的管控