【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网

玩技站长
玩技站长
管理员, Keymaster
6917
文章
1
粉丝
软件头条评论17字数 942阅读3分8秒阅读模式

【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片1

一、简介

  • 本文介绍如何利用基于 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

    成功启动截图
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2

2. 登录管理界面,进行初始化配置,新建客户端连接配置

  • 输入docker-compose.yml中配置的OPENVPN_ADMIN_USERNAME、OPENVPN_ADMIN_PASSWORD,即可登录
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2
    登录之后,进入首页,可以实时查看服务器运行信息
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2
  • (可选)调整 openvpn-server 服务端配置,可以在线调整服务端口、协议等等,调整后保存并重启
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2
  • (必须)调整客户端配置,需要调整IP、端口、协议等,这个只是调整模板,后面在Certificates菜单中新建客户端就是基于这个模板
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2
    限制只有虚拟局域网的IP才走虚拟专用局域网
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片2

    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片3

  • 新建客户端连接配置
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片3
    创建新的客户端连接证书,设置一下英文名称、静态IP
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片3
    下载xx.ovpn连接配置文件,也支持重建、取消、删除等各种操作
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片3

3. 客户端节点接入虚拟局域网

  • 各种操作系统的客户端下载地址参考:https://openvpn.net/client/
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片3
  • 也可以通过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
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片4
    访问组网中的其他机器的服务,如http服务、MySQL服务等
    【开源项目】内网穿透系列十五:Docker 部署 OpenVPN 攻略,集成 Web UI,实现一键式异地组网-图片4

三、总结

  • 使用该工具可以快速搭建虚拟专用网络,实现多机器异地组网
  • openvpn 是成熟的企业级的VPN方案,安全稳定可靠
  • 集成了 Web UI 在线管理,便于在线监控与管理,实现可观测的管控

 
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证