---
# System prepended metadata

title: PiVPN起手式
tags: [Linux, 給瑞起手式note, VPN, Debian, Raspberry Pi]

---

# PiVPN起手式

###### tags: `Raspberry Pi`、`Linux`、`Debian`、`VPN`

## 安裝

### [Step1] 前置更新
首先你要有的是
* **一個固定IP**，假如有內網的話則要在Gateway裡設定連線到外網的IP與PORT。
* 一台可以上網LINUX設備，我這邊用樹莓派4B。

建議先更新樹莓派，這步驟各位都是知道的我就點到就好
```bash=
$ sudo apt update
$ sudo apt upgrade
```
### [Step2] CURL安裝
輸入下方指令開始下載，載入中途就會開始進行設定
```bash=
$ curl -L https://install.pivpn.io | bash
```

下載完會自動跳轉畫面，按下`<Ok>`

![](https://i.imgur.com/OtUyRRT.png)

提醒接下來設定VPN Server是需要實體IP的。
接下來要設定IP與Gateway，按下`<Ok>`

![](https://i.imgur.com/ybIat3A.png)

先問你是不是現在的網路設定就好？
是就選`<Yes>`，繼續往下設定。
不是就選`<No>`，就會進入手動設定IP畫面。

![](https://i.imgur.com/PqhwIYg.png)

#### 手動設定IP

![](https://i.imgur.com/81eAFg0.png)
![](https://i.imgur.com/J4xVuAP.png)
![](https://i.imgur.com/scPhIo7.png)
![](https://i.imgur.com/ZmU5yrB.png)

#### 使用者設定

![](https://i.imgur.com/xKPSq4b.png)
![](https://i.imgur.com/UNuEeLA.png)

#### 安裝VPN模式

跟你說這邊有支援下面兩個VPN協定。
用 <kbd>　　　</kbd> 空白鍵選完按下 <kbd>enter</kbd>

![](https://i.imgur.com/4xWtFb0.png)

#### 以下以OpenVPN做示範

#### 設定連線模式

先告訴你預設大概是使用UDP等設定，問你要不要去手動更改設定。
可以接受就按`<No>`，要改動就按`<Yes>`

![](https://i.imgur.com/GQyaeJI.png)

選擇使用的模型，我選UDP，用 <kbd>　　　</kbd> 空白鍵選完按下 <kbd>enter</kbd>

![](https://i.imgur.com/dSSdckQ.png)

#### 設定PORT
![](https://i.imgur.com/qoABkOK.png)

#### 設定DNS

這邊選擇要使用的DNS Server，若有自己的就選`Custom`，這邊選擇`Google`。

![](https://i.imgur.com/KV51iJS.png)

問你要使用自己的網域嗎?要就按下`<Yes>`並輸入自己的網域名稱。

![](https://i.imgur.com/UdD7MLQ.png)

選擇是要自己設定DNS還是使用固定IP自動連線

![](https://i.imgur.com/bFANg4y.png)

OpenVPN 2.4有提供較快速的安全機制，有使用到OpenVPN 2.4以上可以按下`<Yes>`

![](https://i.imgur.com/dNi7OXy.png)

#### 生成憑證加密方式

選擇憑證加密的方式，這邊使用256位元進行加密。

![](https://i.imgur.com/TrW3S98.png)


#### 收尾階段

![](https://i.imgur.com/488hRxf.png)
![](https://i.imgur.com/GqjMbbW.png)

問是不是要啟動自動安全更新，要就選`<Yes>`。

接下來等他設定一下

![](https://i.imgur.com/HkfWSHE.png)

到這邊看到這個就是安裝完成，也已經啟動好了。

![](https://i.imgur.com/RCLA4zr.png)

完成後會提示你安裝完成，需要重開。

![](https://i.imgur.com/JbCyr5n.png)


## 新增使用端
```bash=
$ pivpn add
```
enter完就會出下面幾個提問
```bash=
#設定名稱
Enter a Name for the Client: kagami

#檔案有效期限(以日計算)
How many days should the certificate last?  1080

Enter the password for the client:  #輸入密碼
Enter the password again to verify:  #再次輸入密碼
```

若順利的話，接下來應該看得到這一串處理流程。
```bash=
spawn ./easyrsa build-client-full kagami

Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars
Using SSL: openssl OpenSSL 1.1.1d  10 Sep 2019
Generating an EC private key
writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-974.rTrkBP/tmp.SHSzYv'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
Using configuration from /etc/openvpn/easy-rsa/pki/easy-rsa-974.rTrkBP/tmp.rpIc3q
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'kagami'
Certificate is to be certified until Aug 11 08:04:08 2023 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Client's cert found: kagami.crt
Client's Private Key found: kagami.key
CA public Key found: ca.crt
tls Private Key found: ta.key


========================================================
Done! kagami.ovpn successfully created!
kagami.ovpn was copied to:
  /home/pi/ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================
```
其中要注意的是，完成後會生成一份`你設定的名稱.ovpn`檔案提供給OpenVPN使用，位置是`/home/pi/ovpns`。

## 顯示所有ovpn清單
```bash=
$ pivpn -l
```

![](https://i.imgur.com/zJulBmN.png)


## 顯示目前連線清單
```bash=
$ pivpn -c
```

![](https://i.imgur.com/tcWDNN4.png)


## 移除ViVPN

```bash=
$ pivpn -u
```

中間會出現一些問答

```bash=
::: Do you wish to completely remove PiVPN configuration and installed packages from your system? (You will be prompted for each package) [y/n]: y

::: Do you wish to remove dnsutils from your system? [Y/n]: y
 
::: Do you wish to remove iptables-persistent from your system? [Y/n]: y

::: Do you wish to remove openvpn from your system? [Y/n]: y

::: Do you wish to remove grepcidr from your system? [Y/n]: y

::: Do you wish to remove expect from your system? [Y/n]: y

::: Do you wish to remove unattended-upgrades from your system? [Y/n]: y

```

移除完會出現下方訊息，會提示需要重啟。

```bash=
::: Removing VPN configuration files...
:::
::: Removing pivpn system files...
:::
::: Finished removing PiVPN from your system.
::: Reinstall by simpling running
:::
:::	curl -L https://install.pivpn.io | bash
:::
::: at any time!
:::
It is strongly recommended to reboot after un-installation.
Would you like to reboot now? [y/n]: 
```