Contents
  1. 1. 安装 Docker
  2. 2. Docker 安装 cherts/ocserv
    1. 2.1. 用户管理
    2. 2.2. 获取证书 SHA1 指纹
  3. 3. 软路由中使用 OpenConnect 的思路
  4. 4. OpenConnect 桌面客户端

安装 Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 更新系统所有软件包,这里以 dnf 为例,yum、apt 都差不多只需要替换掉 dnf
sudo dnf update -y

# 2. 安装 Docker 引擎、containerd 运行时和相关工具
sudo dnf install -y docker containerd cni-plugins container-selinux

# 3. 启动 Docker 服务并设置开机自启
sudo systemctl enable --now docker

# 4. 将当前用户(默认是 ec2-user)添加到 docker 组
# 这样以后执行 docker 命令就不需要加 sudo 了
sudo usermod -aG docker $USER

# 5. 启动 docker
sudo systemctl start docker

# 6. 确认服务状态
sudo systemctl status docker

Docker 安装好后,完全退出终端再重新登录(添加过用户组以后就不用加 sudo 了)。

1
2
# 测试是否能正常工作
docker pull hello-world

Docker 安装 cherts/ocserv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 拉取镜像
docker pull cherts/ocserv:latest

# 方式 1:使用 IP+端口号
# 注意替换成你的 IP 和端口号,端口号要在云服务器供应商的安全组中放行 TCP+UDP
docker run -d \
--name ocserv \
--restart unless-stopped \
--cap-add NET_ADMIN \
--device /dev/net/tun:/dev/net/tun \
-p [端口]:443/tcp \
-p [端口]:443/udp \
-e HC_SRV_CN=[你的服务器IP] \
-e HC_SRV_PORT=[端口] \
cherts/ocserv:latest

# 方式 2:使用域名
# 需要先将域名(A 记录)解析到你的服务器
docker run -d \
--name ocserv \
--restart unless-stopped \
--cap-add NET_ADMIN \
--device /dev/net/tun:/dev/net/tun \
-p 443:443/tcp \
-p 443:443/udp \
-e HC_SRV_CN=[你的域名] \
-e HC_SRV_PORT=443 \
cherts/ocserv:latest

用户管理

1
2
3
4
5
# 添加新用户,填完用户名后会要求输入两次密码
docker exec -it ocserv ocpasswd [用户名]

# 删除测试用户
docker exec -it ocserv ocpasswd -d test

获取证书 SHA1 指纹

有些客户端要求提供证书指纹:

1
2
3
4
5
6
docker cp ocserv:/etc/ocserv/server-cert.pem ./ && \
openssl x509 -in server-cert.pem -noout -fingerprint -sha1 | \
sed 's/SHA1 Fingerprint=//g' | \
tr -d ':' | \
tr 'A-Z' 'a-z' && \
rm -f server-cert.pem

返回中形如 362bcc3a0... 这样的 16 进制哈希值就是 SHA1 指纹。

软路由中使用 OpenConnect 的思路

  1. 添加接口:在协议中添加一个新接口,协议选 OpenConnect,登录信息填写前面配置的信息。注意如果用端口号,格式如 1.2.3.4:1234;如果用了域名但没使用默认的 443 端口,也要用 www.example.com:1234 来指定端口号。
  2. 防火墙设置:在新建接口中找到防火墙设置,分配防火墙区域选 wan
  3. 路由规则:在路由中添加 IPv4IPv6 规则,将所有流量应用一个 gfw 表。

OpenConnect 桌面客户端

Windows 下可以使用开源项目 openconnect-gui


关键词:Docker, OpenConnect, ocserv, VPN, 服务端部署

Contents
  1. 1. 安装 Docker
  2. 2. Docker 安装 cherts/ocserv
    1. 2.1. 用户管理
    2. 2.2. 获取证书 SHA1 指纹
  3. 3. 软路由中使用 OpenConnect 的思路
  4. 4. OpenConnect 桌面客户端