26

PiVPN:贼易用的VPN管理工具

 2 years ago
source link: https://chenjiehua.me/python/pivpn-simplest-way-to-setup-and-manage-vpn.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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软件源,如果因为网络环境导致安装失败,可以尝试使用代理进行安装:

Default
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 来生成独立的证书:

Default
pivpn add

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

Default
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命令生成客户端证书:

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

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

内网VPN

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

frpc.ini
Default
[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或域名。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK