目录

  1. 1. 前言
  2. 2. 环境搭建
  3. 3. 客户端连接

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

OpenVPN

2026/5/7 DevOps
  |     |   总文章阅读量:

前言

OpenVPN 是一款强大且高度灵活的 VPN 守护进程。它支持 SSL/TLS 安全协议、以太网桥接、通过代理或 NAT 进行 TCP 或 UDP 隧道传输。此外,它还支持动态 IP 地址和 DHCP,可扩展至数百或数千用户,并可移植到大多数主流操作系统平台

参考:

https://wiki.archlinux.org/title/OpenVPN

环境搭建

由于我的公网 vps 无了,只好用两台机器进行环境模拟

服务端:192.168.231.170

客户端:192.168.231.196

服务端上 docker-compose.yml

version: '3'
services:
  openvpn:
    image: kylemanna/openvpn
    container_name: openvpn
    cap_add:
      - NET_ADMIN	# 提供网络管理权限,用于创建虚拟网卡
    ports:
      - "1194:1194/udp"
    restart: always
    volumes:
      - ./openvpn-data:/etc/openvpn

生成服务端配置:

docker-compose run --rm openvpn ovpn_genconfig -u udp://192.168.231.170

初始化 PKI:

docker-compose run --rm openvpn ovpn_initpki

此处的密码设置为 123456,在后面要求输入 pass 时填入密码即可生成服务端证书

然后就可以启动 openvpn 服务了

docker-compose up -d

客户端连接

服务端创建一个 client01 的用户

docker-compose run --rm openvpn easyrsa build-client-full client01 nopass

然后将生成的证书打包为 ovpn 文件

docker-compose run --rm openvpn ovpn_getclient client01 > client01.ovpn

接下来把这个 ovpn 文件传给客户端进行连接

连接成功,同时分配了一个 ip 192.168.255.6

ping 和 traceroute 验证一下

此处代理之后第一跳是服务端的虚拟 ip,而不是当前路由器的 ip