网站首页 > 技术文章 正文
一、环境准备
- 服务器要求:
- 一台具有外网 IP 的 Linux 服务器(推荐 CentOS/Ubuntu)
- 确保服务器能够访问互联网,以便拉取 Docker 镜像
- 域名或公网 IP:
- 准备一个可外网访问的域名或公网 IP 地址,用于客户端连接
二、安装 Docker
- 安装 Docker: 根据服务器的操作系统选择对应的安装方式:
- CentOS 7+:
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
- Ubuntu 20.04+:
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
验证 Docker 安装:
docker --version
# 输出类似:Docker version 20.x.x, build ...
三、拉取 OpenVPN 镜像
- 选择镜像: 根据服务器架构选择合适的镜像:
- 对于 x86 架构:
docker pull kylemanna/openvpn:2.4
- 对于 ARM 架构(如树莓派):
docker pull giggio/openvpn-arm
四、生成 OpenVPN 配置文件
- 创建数据卷: 为 OpenVPN 创建一个专用的数据卷,用于存储配置文件和密钥
mkdir -p /data/openvpn
运行容器并生成配置文件: 根据镜像选择对应的命令:
- 对于 x86 架构(kylemanna/openvpn:2.4):
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://your_domain_or_ip
- 对于 ARM 架构(giggio/openvpn-arm):
docker run -v /data/openvpn:/etc/openvpn --rm giggio/openvpn-arm ovpn_genconfig -u udp://your_domain_or_ip
注意:将 your_domain_or_ip 替换为你的域名或公网 IP 地址
初始化密钥: 运行以下命令生成 OpenVPN 所需的证书和密钥:
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_initpki
交互式输入: 在上述过程中,系统会提示你输入以下信息:
- CA 密码(建议设置为简单密码,如 123456)
- Common Name(可直接回车,默认为 server)
五、启动 OpenVPN 服务
- 运行容器: 根据镜像选择对应的命令:
- 对于 x86 架构(kylemanna/openvpn:2.4):
docker run -d \
--name openvpn \
-v /data/openvpn:/etc/openvpn \
-p 1194:1194/udp \
--cap-add=NET_ADMIN \
--restart unless-stopped \
kylemanna/openvpn
- 对于 ARM 架构(giggio/openvpn-arm):
docker run -d \
--name openvpn \
-v /data/openvpn:/etc/openvpn \
-p 1194:1194/udp \
--cap-add=NET_ADMIN \
--restart unless-stopped \
giggio/openvpn-arm
验证容器状态:
docker ps | grep openvpn
# 应该看到 openvpn 容器处于运行状态。
六、配置防火墙
- 开放 UDP 1194 端口: 根据服务器的操作系统执行以下命令:
- CentOS/Firewalld:
firewall-cmd --permanent --add-port=1194/udp
firewall-cmd --reload
- Ubuntu/UFW:
sudo ufw allow 1194/udp
七、生成客户端配置文件
进入 OpenVPN 数据目录:
cd /data/openvpn
生成客户端证书:
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_client client1
说明:client1 是客户端的名称,可以根据需要修改。
- 导出客户端配置文件: 将以下文件复制到客户端设备:
/data/openvpn/client1.ovpn
/data/openvpn/ca.crt
- 分发客户端证书: 将 client1.key 和 client1.crt 文件也提供给客户端(可选)
八、连接测试
- 在客户端安装 OpenVPN 客户端软件
- 导入 client1.ovpn 配置文件并连接
- 检查是否能够访问内网资源或通过 VPN 访问互联网
九、注意事项
- 备份数据:定期备份 /data/openvpn 目录,以防万一
- 更新证书:建议每 6 个月更新一次 CA 密钥和证书
- 安全组设置:如果你在云服务器上运行 OpenVPN,请确保安全组允许 UDP 1194 端口流量
十、常见问题
- 无法连接到 VPN:
- 检查防火墙是否开放了 UDP 1194 端口。
- 确保客户端配置文件正确无误。
- 证书过期:
- 使用以下命令更新 CA 密钥:
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_initpki
猜你喜欢
- 2025-05-08 DOCKER(docker安卓版下载)
- 2025-05-08 InstantID模型部署教程(insight模型)
- 2025-05-08 Dockerfile简单使用(docker-file)
- 2025-05-08 Kubernetes Linux安装指南(kubernetes安装配置)
- 2025-05-08 一个Rust小白发布生产级Rust应用的进阶之路 | 得物技术
- 2025-05-08 如何用Linux服务器搭建属于自己的云手机
- 2025-05-08 必看!WSL2 内核选项修改方法,手把手教你编译更新
- 2025-05-08 深入了解,Python 中 type 和 isinstance 的用法
- 2025-05-08 Python 开发工程师必会的 5 个系统命令操作库
- 2025-05-08 PowerDNS可视化管理工具(可视化管理ppt)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)