【运维笔记】openVPN+docker-compose部署实录
问题背景
需要访问另一个(堆)不能直接访问的网络服务。
思路
将两个不能互访的子网称为子网A和子网B,其中子网B的路由器有虚拟服务器的功能,可以将网内部分服务映射到外网。
现要使子网A内的主机登录VPN后能访问子网B的所有服务,因此,考虑在子网B的主机部署VPN服务端,通过虚拟服务器的功能映射VPN服务端口,完成VPN的搭建。
技术选择
基于快速部署考虑,本文选择docker+openVPN进行部署。
docker镜像
在dockerhub上找到了linuxserver发布的openvpn镜像,按照指引部署之后发现还需要做点国内的本地化适配。
dockerfile
首先在dockerfile里将apt源修改为国内镜像源,然后openvpn的软件源需要用上技术手段。
FROM linuxserver/openvpn-as:latest
# 技术手段,不然会安装不了openvpn
RUN echo 'Acquire::http::Proxy "http://192.168.2.148:10809/";\nAcquire::http::Proxy "http://192.168.2.148:10809/";'>/etc/apt/apt.conf.d/proxy.conf
# apt替换为国内镜像源
RUN echo 'deb http://mirrors.cernet.edu.cn/ubuntu/ jammy main restricted universe multiverse\ndeb http://mirrors.cernet.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse\ndeb http://mirrors.cernet.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse\ndeb http://mirrors.cernet.edu.cn/ubuntu/ jammy-security main restricted universe multiverse'> /etc/apt/sources.list
docker-compose file
基本都是linuxserver的默认配置,就是镜像换了、时区换了。
version: "3"
services:
openvpn-as:
build:
context: .
image: openvpn-as
container_name: openvpn-as
cap_add:
- NET_ADMIN
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- INTERFACE=eth1 #网卡名,可选
volumes:
- <openvpn_data>:/config
ports:
- 943:943
- 9443:9443
- 1194:1194/udp
restart: unless-stopped
一条命令即可成功部署
docker-compose up -d
部署成功后访问https://domain:943/admin即可进行网页管理,默认账号密码admin/password
新增配置
在user management新增一个用户,记得编辑密码,然后就能登录了。