使用 Docker 设置 OpenVPN 服务器并配置客户端

介绍

本教程使用 Docker 设置 OpenVPN 服务器,并配置相应的客户端。

先决条件

  • 一台运行 Linux 的服务器(本教程使用 Ubuntu)
  • Docker 已安装在服务器上
  • 基本的 Linux 命令行知识
  • 服务器上至少 1GB 的可用 RAM 和 5GB 的磁盘空间

服务器端设置

准备工作

选择一个目录存储 OpenVPN 数据。本教程使用 /opt/openvpn-data

sudo mkdir -p /opt/openvpn-data

生成 OpenVPN 配置

docker run -v /opt/openvpn-data:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u tcp://<YOUR_SERVER_IP>

<YOUR_SERVER_IP> 替换为你的服务器IP地址,这个命令会生成基本的 OpenVPN 配置文件。

初始化 PKI(公钥基础设施)

docker run -v /opt/openvpn-data:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

在此步骤中,需要设置一个 CA 密码和输入公共证书信息。需要记住设置的密码。

启动 OpenVPN 服务器

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 文件:

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 容器:

docker restart openvpn

客户端配置

创建客户端证书

为名为 “client” 的客户端创建证书:

docker run -v /opt/openvpn-data:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full client nopass

生成客户端配置文件

docker run -v /opt/openvpn-data:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient client > /opt/openvpn-data/client.ovpn

修改客户端配置文件

编辑 /opt/openvpn-data/client.ovpn 文件:

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 地址。

© 版权声明
THE END
喜欢就支持一下吧
点赞19 分享