• Linux
  • apache
  • centos
  • Git版本管理
  • Linux基本命令
  • linux配置与优化
  • Nginx
  • PHP
  • Redis
  • Supervisor
  • Swoole
  • windows
  • THINKPHP
  • 开发者手册
  • Chat GPT / Open Ai
  • docker-compose安装部署openvpn,实现内网通信

    全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2022年10月09日 15:26:17
  • 所属分类:Docker
  • 阅读次数:1622次阅读
  • 标签:
  • OpenVPN是我们常用的开源商业软件,它实施虚拟专用网(VPN)技术,以在路由或桥接配置以及远程访问设施中创建安全的点对点或站点对站点连接。 它使用定制安全协议,该协议利用SSL / TLS进行密钥交换。 它能够遍历网络地址转换器(NAT)和防火墙。

    OpenVPN允许对等方使用预共享的密钥,证书或用户名/密码来相互认证。 在多客户端服务器配置中使用时,它允许服务器使用签名和证书颁发机构为每个客户端发布身份验证证书。 它广泛使用OpenSSL加密库以及TLS协议,并且包含许多安全性和控制功能。

    通俗的说就是服务端配置openvpn服务,并且创建客户端需要的文件,客户端再导入文件输入密码进行连接,连接成功就可以使用内网直接访问。大概形式是两种:

    第一种:客户端与服务端之间互相可以访问,如下图所示,要打通路由

    第二种:相对来说比较简单,只在服务侧部署openvpn服务,生成配置,在客户端本地进行连接(这种是单向的,只是客户端访问服务端,服务端不需要访问客户端)。

    今天小编先介绍第二种,并且使用docker-compose进行部署

    一、编写docker-compose.yml文件

    version: '2'
    
    services:
    
    openvpn:
    
    image: kylemanna/openvpn
    
    container_name: openvpn
    
    ports:
    
    - "1194:1194/udp"
    
    restart: always
    
    volumes:
    
    - ./openvpn-data/conf:/etc/openvpn
    
    cap_add:
    
    - NET_ADMIN

    这里面UDP监听的端口1194,需开放外网访问权限,客户端通过这个端口来连接服务端的openvpn。

    二、在启动容器前,初始化配置文件和证书

    (1)配置openvpn容器:

    docker-compose run --rm openvpn ovpn_genconfig -u udp://SERVER_DOMAIN_NAME

    注:SERVER_DOMAIN_NAME需要替换成实际的域名或者IP,此IP或域名需外网能够访问

    (2)初始化(固定命令格式):

    docker-compose run --rm openvpn ovpn_initpki

    按照提示输入密码、确认密码等

    (可选步骤) 如果有需要的话,修改配置目录的权限:

    chmod -R 777 ./openvpn-data/conf

    三、启动容器

    进入到docker-compose.yml目录,执行以下命令:

    docker-compose up -d

    四、创建用户客户端文件

    设置环境变量(使用 export 可以使该变量成为环境变量,使变量在子进程下也可以执行),其中引号内的your_client_name替换成自己需要创建的文件名称,后续直接引用该名称。

    export CLIENTNAME="your_client_name"

    创建用户客户端文件(格式固定,CLIENTNAME为上面设置的环境变量名,也可以使用名称,则不需要使用前面的$符号)

    docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME

    docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn

    说明:easyrsa是为了做PKI使用的。openvpn使用easy_rsa生成的CA证书,公钥和私钥来实现SSLVPN。

    执行完会在docker-compose.yml同级目录下生成后缀为ovpn的文件,用于客户端进行连接

    五、删除用户(可选,需要时再使用)

    docker-compose run --rm openvpn easyrsa revoke $CLIENTNAME

    docker-compose run --rm openvpn easyrsa gen-crl update-db

    docker-compose restart

    六、下载openvpn客户端OpenVPN GUI,直接导入.ovpn文件即可使用。

    导致之后进行连接,若提示success相关信息,则表示连接成功,此时,可以使用服务端的内网ip来访问服务端上的服务或者程序。

    顶一下
    (0)
    100%
    订阅 回复
    踩一下
    (0)
    100%
    » 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 【上一篇】
  • 【下一篇】
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言

    您必须 [ 登录 ] 才能发表留言!