- 博客/
使用 Docker-Compose 部署 openConnect Vpn Server
Table of Contents
环境说明#
docker-compose
:1.18.0操作系统:
openwrt (x86)
docker version:
19.03.12
docker image
yangzun/docker-openconnect-ldap:latest
此镜像基于
morganonbass/ocserv-ldap
之上做了修饰修改,原因为此容器存在 bug,无法正常启动。
部署前的准备工作#
安装 docker-compose#
yum install -y docker-compose
创建 docker-compose 部署文件#
创建目录
mkdir -p /data/docker-compose/openConnect
创建部署文件
cd /data/docker-compose/openConnect
cat > docker-compose.yaml << EOF
version: "3"
services:
ocserv:
container_name: ocserv
image: yangzun/docker-openconnect-ldap:latest
ports:
- "1443:443/tcp"
- "1443:443/udp"
environment:
LISTEN_PORT: 443
TUNNEL_MODE: 'split-include'
TUNNEL_ROUTES: '192.168.8.0/24'
DNS_SERVERS: 192.168.8.1
CLIENTNET: 192.168.248.0
CLIENTNETMASK: 255.255.255.128
BASEDN: 'dc=treesir,dc=pub'
LDAPURI: 'ldap://192.168.8.1:389/'
BINDDN: 'cn=admin,dc=treesir,dc=pub'
BINDPW: '123456'
SEARCHSCOPE: 'ou=users,dc=treesir,dc=pub'
PAM_LOGIN_ATTRIBUTE: 'uid'
CA_CN: 'VPN CA'
CA_ORG: 'OCSERV'
CA_DAYS: 9999
SRV_CN: 'nps.treesir.pub'
SRV_ORG: 'Example Company'
SRV_DAYS: 9999
volumes:
- './config/:/config/'
cap_add:
- NET_ADMIN
privileged: true
restart: unless-stopped
EOF
上述
environment
指定的变量这里不做过多的介绍说明,在对应的 readme 页面中已有详细介绍。有关于openldap
的部署配置部分请参考较早期 文档说明。
创建配置文件后的启动
docker-compose up -d
测试验证#
这里使用的测试连接的软件为
anyConnect
内网本地测试#
可以看到我们这里使用
内网地址
进行连接是可以正常连接上的,获取到的客户端地址也是我们配置文件中写的的地址段中的 ip 即192.168.248.0/25
配置公网进行测试#
因为运营商这边不愿意提供
公网ip
,所有我这里将展示使用内网穿透工具 (nps)
进行测试。
nps 配置端口映射
这里映射的端口是 tcp 协议,tcp 相较与
udp
的优势是更加稳定,且不易被运营商进行拦截,打个比方比如运营商服务器目前正在被网络流量攻击时,会优先关闭udp
协议 (不安全协议)。不过 udp 也有自己的优势,那就是速度相对与 tcp 更加的快速。
PC 测试连接
同样的正常连接上了
断开连接后,也有对应的日志输出
手机端测试
这里测试使用的依然是
anyConnect 手机端
问题记录#
启动时,iptables 规则提示报错
排查原因为 iptables 版本不兼容导致,更改使用为
/usr/sbin/iptables-legacy
即可
update-alternatives --set iptables /usr/sbin/iptables-legacy # 非交互式进行更改
并在 Dockerfile 对应指定的 docker-entrypoint.sh
脚本中加入,代码提交自动触发 image build
。
总结#
openConnect 相较于 openVpn 的优势是,服务之间的路由可以通过在
服务端进行控制 (route 配置项)
。而 openVpn 要通过更改客户端这边的 config ,相较于不太安全,也不符合管理员进行掌控全局的设定。速度方向个人使用
感觉差异不大,加密原理多是使用的 tls证书 进行验证,性能差异应该不会太大。更加高级配置请参考如下文档。