• 隐藏侧边栏
  • 展开分类目录
  • 关注微信公众号
  • 我的GitHub
  • QQ:1753970025
Chen Jiehua

PiVPN:贼易用的VPN管理工具 

目录

这两天在折腾着搭建一个VPN,看了一下OpenVPN的搭建流程还挺繁琐的,搜寻一番之后找到一个开源项目 PiVPN,可以非常简单的进行搭建和管理。

PiVPN

官网:https://www.pivpn.io/

顾名思义,PiVPN 是专门为树莓派而设计的,不过粗略看了一下安装脚本,其就是将openvpn及诸多工具进行整合以方便使用,因此我们理论上在 Ubuntu 或 Debian 上也能进行部署。

PiVPN有几个明显的特点和优势:

  • 简单:无论是安装部署,亦或后期管理,PiVPN都帮我们搞定了一切;
  • 灵活:部署一个VPN,我们势必会想进行各种定制化,比如端口、秘钥长度、客户端DNS等;
  • 管理:PiVPN提供了一个命令 pivpn,可以方便地让我们进行各种操作,比如为客户端生成证书、销毁证书、安装移除等;
  • 安全:虽然PiVPN很简单,然而客户端和服务器之间的一切安全配置都会得到有效保证。

安装

只需一个命令便可以开始我们VPN的部署:

curl -L https://install.pivpn.io | bash

PiVPN需要使用静态的IP地址,如果我们使用的不是树莓派进行配置,那么我们将需要自己手动为系统配置好静态IP。

然后我们需要选择一个用户来存放vpn的配置文件,有特殊需求的话可以新建一个用户。

之后 pivpn 会从 https://github.com/pivpn/pivpn.git  clone 到本地的 /etc/.pivpn

接着,我们可以选择 OpenVPN 或 WireGuard 两种安装模式。

WireGuard

PiVPN推荐使用全新的 WireGuard 来部署VPN,选择该选项后便开始下载相关依赖软件。由于添加WireGuard软件源,如果因为网络环境导致安装失败,可以尝试使用代理进行安装:

http_proxy="http://xxxx" https_proxy="http://xxx" bash install.sh
  1. WireGuard 默认使用 51820 端口,如果有需要可以在安装过程中进行修改。
  2. 然后配置 DNS Provider,我们可以选择 Custom,然后填写 114.114.114.114 即可。
  3. 接着配置客户端如何连接到我们的VPN,可以填写公网IP或者是域名。
  4. 最后开始生成服务器秘钥。

搞定后重启服务器让所有配置都生效即可。

客户端

我们可以从 WireGuard 官网下载各个平台和操作系统的客户端 ,不过目前 iOS 和 macOS 需要使用美国苹果商店下载,这个稍微麻烦一点。

对于每一个客户端,我们需要使用 pivpn 来生成独立的证书:

pivpn add

默认生成的证书保存在 ~/config 目录中,将其复制到所需设备中即可,移动设备还可以使用二维码来识别:

pivpn qrcode

OpenVPN

我们也可以在部署过程中选择传统的 OpenVPN。

  1. 安装过程中我们默认使用UDP协议,端口使用1194;
  2. 然后配置 DNS Provider,我们可以选择 Custom,然后填写 114.114.114.114 即可;
  3. 接着是否使用Custom Search Domain,这个我们可以先不管;
  4. 继续配置客户端如何连接到我们的VPN,可以填写公网IP或者是域名;
  5. 接着ECDSA证书大小,我们选择默认的256bit即可,当然你可以可以选择更长的证书大小,不过生成证书过程将会花费更长的时间(尤其注意在树莓派上需要等待的时间将会更长,我在树莓派2B上部署,生成证书耗时一小时;而在PC上则只需几秒);

安装完毕后重启服务器使配置生效。

客户端

Windows可以直接从OpenVPN的官网下载客户端,macOS可以使用开源的 TunnelBlick,iOS需要去美国苹果商店下载 OpenVPN Connect。

然后使用pivpn命令生成客户端证书:

pivpn add

# 如果证书不需要密码
pivpn add nopass

生成的证书默认保存在 ~/ovpns 目录下。

内网VPN

如果我们的PiVPN是部署在局域网内部,并且没有公网IP,但是我们又想从外部访问回去,那么就可以参考《frp:一个内网穿透神器》,简单配置一下客户端的端口转发即可:

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000

[openvpn]
type = udp
local_ip = 127.0.0.1
local_port = 1194
remote_port = 1194

需要注意这里的 server_addr 就是我们前面部署PiVPN填写的公网IP或域名。

参考:

码字很辛苦,转载请注明来自ChenJiehua《PiVPN:贼易用的VPN管理工具》

评论