OpenVPN Docker 部署与运维手册
docker-compose.yml
services: openvpn: image: kylemanna/openvpn:latest container_name: openvpn cap_add: - NET_ADMIN ports: - "1194:1194/udp" volumes: - ./openvpn-data:/etc/openvpn restart: unless-stopped environment: - OVPN_SERVER_URL=udp://39.105.165.233:1194
openvpn.conf配置
server 192.168.255.0 255.255.255.0 verb 3 key /etc/openvpn/pki/private/39.105.165.233.key ca /etc/openvpn/pki/ca.crt cert /etc/openvpn/pki/issued/39.105.165.233.crt dh /etc/openvpn/pki/dh.pem tls-auth /etc/openvpn/pki/ta.key key-direction 0 keepalive 10 60 persist-key persist-tun proto udp # Rely on Docker to do port mapping, internally always 1194 port 1194 dev tun0 status /etc/openvpn/openvpn-status.log user nobody group nogroup #comp-lzo no ### Route Configurations Below #route 192.168.254.0 255.255.255.0 ### Push Configurations Below #push "block-outside-dns" push "dhcp-option DNS 223.5.5.5" push "dhcp-option DNS 114.114.114.114" #push "comp-lzo no" #push "redirect-gateway def1" push "route 47.101.38.208 255.255.255.255"
客户端
官网地址:https://openvpn.net/community/
初次使用请下载客户端 http://agment.huizyrt.ltd/OpenVPN-2.7.7-I001-amd64.msi
一、环境初始化
1. 生成 OpenVPN 配置
docker compose -f /data/openvpn/docker-compose.yml run --rm openvpn ovpn_genconfig -u udp://39.105.165.233
2. 初始化 PKI(公钥基础设施)
docker compose run --rm openvpn ovpn_initpki
密码:
mlb@123456Common Name:
milaibei后续所有密码均为
mlb@123456
二、客户端证书管理
1. 新建客户端证书
# 无密码方式(去掉 nopass 则需要密码) docker compose run --rm openvpn easyrsa build-client-full zhangming nopass
证书密码:
mlb@123456
2. 导出客户端配置
docker compose run --rm openvpn ovpn_getclient zhangming > zhangming.ovpn
3. 修改 .ovpn 文件
生成的 .ovpn 文件删掉(注释)最后一行:
# redirect-gateway def1
说明:redirect-gateway def1 表示全部流量都走 VPN。删掉之后,只有服务器配置的 IP 走 VPN,其他流量走本地网络。
三、证书状态查看
cat /data/openvpn/openvpn-data/pki/index.txt
| 标记 | 含义 |
|---|---|
V | Valid,有效 |
R | Revoked,已吊销 |
四、吊销客户端证书
# 1. 进入容器 docker exec -it openvpn bash # 2. 进入 Easy-RSA 目录 cd /usr/share/easy-rsa/ # 3. 吊销指定客户端证书(将 client1 替换为实际用户名) ./easyrsa revoke client1 # 输入 yes 确认 # 密码:mlb@123456 # 4. 生成/更新 CRL 文件 ./easyrsa gen-crl # 密码:mlb@123456 # 5. 退出容器 exit # 6. 重启容器使 CRL 生效 docker restart openvpn
五、运维常用命令
1. 查看当前在线用户
cat /data/openvpn/openvpn-/openvpn-status.log
2. 查看连接日志
docker logs openvpn 2>&1 | grep -E "peer info|Connection|Established|Closing"
六、文件归档清单
| 文件/路径 | 说明 |
|---|---|
/data/openvpn/docker-compose.yml | Docker Compose 配置文件 |
/data/openvpn/openvpn-data/pki/index.txt | 证书状态文件 |
/data/openvpn/openvpn-data/openvpn-status.log | 在线用户日志 |
*.ovpn | 客户端配置文件(下发给用户后本地留存) |