openvpn
VPN open VPN
第一种方法
1.创建 OpenVPN 目录
mkdir -p ./openvpn
2.docker-compose.yaml
version: '3.8'
services:
openvpn:
image: kylemanna/openvpn:latest
container_name: openvpn
cap_add:
- NET_ADMIN # 必需的网络权限
ports:
#- "1194:1194/udp" # OpenVPN 默认端口(UDP)
- "1194:1194/tcp" # 改为TCP映射
volumes:
- ./openvpn-data:/etc/openvpn # 持久 化配置和证书
restart: unless-stopped # 容器异常退出时自动重启
environment:
- TZ=Asia/Shanghai # 时区设置(可选)
3.初始化 OpenVPN 配置
# 生成默认配置文件(替换 YOUR_SERVER_IP 为公网 IP 或域名)
docker compose run --rm openvpn ovpn_genconfig -u tcp://YOUR_SERVER_IP
# 初始化 PKI(交互式输入 CA 名称和密码)
docker compose run --rm -it openvpn ovpn_initpki
4.启动 OpenVPN 服务
docker compose up -d
docker compose logs -f openvpn
# Initialization Sequence Completed
5.生成客户端证书
# 生成客户端证书(例如客户端名称为 client1)
docker compose run --rm -it openvpn easyrsa build-client-full CLIENT_NAME nopass
# 导出客户端配置文件
docker compose run --rm openvpn ovpn_getclient CLIENT_NAME > ./CLIENT_NAME.ovpn
5.5 可选 允许客户端之间互相访问
vim ./openvpn-data/openvpn.conf
# 添加一行 重启服务
client-to-client
MAC M1 客户端配置优化建议
client
nobind
dev tun
remote-cert-tls server
remote 8.216.32.199 1194 tcp
# 新增M1兼容配置
tls-client
cipher AES-256-GCM
auth SHA256
persist-key
persist-tun
tls-version-min 1.2
remote-cert-eku "TLS Web Server Authentication"
# 解决DNS泄漏(可选)
dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4
# 超时重试配置
connect-retry 5 30
connect-timeout 60
6.防火墙配置
# 开放 UDP 1194 端口
sudo firewall-cmd --permanent --add-port=1194/udp
sudo firewall-cmd --reload
# 关闭 SELinux(临时生效)
sudo setenforce 0
7.验证
# 检查容器运行状态
docker ps | grep openvpn
# 查看服务日志
docker logs openvpn
8.宿主机内核参数调整
- 在宿主机中编辑/etc/sysctl.conf或/usr/lib/sysctl.d/*.conf文件,添加以下参数以启用IPv6默认转发:
net.ipv6.conf.default.forwarding=1
sysctl -p
sysctl net.ipv6.conf.default.forwarding
第二种方法
version: '3.8'
services:
openvpn:
image: kylemanna/openvpn:latest # 使用社区维护的 OpenVPN 镜像
container_name: openvpn
restart: unless-stopped
cap_add:
- NET_ADMIN # 允许容器管理网络接口
ports:
- "1194:1194/udp" # 映射 UDP 1194 端口(OpenVPN 默认端口)
volumes:
- ./openvpn-data:/etc/openvpn # 持久化存储配置和证书
environment:
- EASYRSA_KEY_SIZE=4096 # 证书密钥长度
- EASYRSA_CA_EXPIRE=3650 # CA 证书有效期(10年)
- EASYRSA_CRL_DAYS=180 # 证书吊销列表有效期
networks:
vpn_net: # 自定义网络(可选)
ipv4_address: 10.88.0.2 # 固定容器 IP(避免 DHCP 冲突)
networks:
vpn_net:
driver: bridge
ipam:
config:
- subnet: 10.88.0.0/24 # 定义 Docker 内部子网(与 OpenVPN 服务端子网隔离)