介绍
本教程使用 Docker 设置 OpenVPN 服务器,并配置相应的客户端。
先决条件
- 一台运行 Linux 的服务器(本教程使用 Ubuntu)
- Docker 已安装在服务器上
- 基本的 Linux 命令行知识
- 服务器上至少 1GB 的可用 RAM 和 5GB 的磁盘空间
服务器端设置
准备工作
选择一个目录存储 OpenVPN 数据。本教程使用 /opt/openvpn-data
。
1 2 |
sudo mkdir -p /opt/openvpn-data |
生成 OpenVPN 配置
1 2 |
docker run -v /opt/openvpn-data:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://<YOUR_SERVER_IP> |
将 <YOUR_SERVER_IP>
替换为你的服务器IP地址,这个命令会生成基本的 OpenVPN 配置文件。
初始化 PKI(公钥基础设施)
1 2 |
docker run -v /opt/openvpn-data:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki |
在此步骤中,需要设置一个 CA 密码和输入公共证书信息。需要记住设置的密码。
启动 OpenVPN 服务器
1 2 3 4 5 6 7 8 |
docker run -d \ --name openvpn \ --restart=always \ -v /opt/openvpn-data:/etc/openvpn \ -p 1194:1194/tcp \ --cap-add=NET_ADMIN \ kylemanna/openvpn |
这个命令会启动 OpenVPN 服务器并设置为自动重启。
配置 OpenVPN 服务器
编辑 /opt/openvpn-data/openvpn.conf
文件:
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 |
server 192.168.255.0 255.255.255.0 verb 3 key /etc/openvpn/pki/private/<YOUR_SERVER_IP>.key ca /etc/openvpn/pki/ca.crt cert /etc/openvpn/pki/issued/<YOUR_SERVER_IP>.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 tcp port 1194 dev tun0 status /tmp/openvpn-status.log user nobody group nogroup comp-lzo yes reneg-sec 0 # Route Configurations route 192.168.254.0 255.255.255.0 # Push Configurations push "route 10.10.254.0 255.255.255.0" push "route-nopull" push "comp-lzo yes" |
<YOUR_SERVER_IP>
为自动生成的服务器IP,保存文件后,重启 OpenVPN 容器:
1 2 |
docker restart openvpn |
客户端配置
创建客户端证书
为名为 “client” 的客户端创建证书:
1 2 |
docker run -v /opt/openvpn-data:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full client nopass |
生成客户端配置文件
1 2 |
docker run -v /opt/openvpn-data:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient client > /opt/openvpn-data/client.ovpn |
修改客户端配置文件
编辑 /opt/openvpn-data/client.ovpn
文件:
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 |
client dev tun proto tcp remote <YOUR_SERVER_IP> 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server comp-lzo yes verb 3 <key> (客户端私钥内容) </key> <cert> (客户端证书内容) </cert> <ca> (CA 证书内容) </ca> key-direction 1 <tls-auth> (tls-auth 密钥内容) </tls-auth> |
将 <YOUR_SERVER_IP>
替换为服务器公网 IP 地址。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。