ラズパイで簡単にVPNを構築する

# ラズパイでVPNを構築する
外出している時に自宅のラズパイを操作したくなること，友人が家に来なくても開発できるようにしたいっていう経験からVPNを構築しようかな〜となりました．
簡単に構築できるようなので，早速取り掛かります．

# VPNとは．．．
トンネリング技術を使って，自宅から会社のオフィスにあるPCに接続したりとかって時に便利な技術．暗号化されているから，家からオフィス間の通信を盗聴改竄もしにくくなったりする．


#VPN構築方法
順を追って説明します．
## 1.IPを固定する
ifconfigでどこのインターフェースがネットにつながっているものか(ipアドレスを振られているか）を確認します．

```
$ ifconfig
```
今回の場合はwlan0に割り当てられている．

![b88d24ee71aaf34e2bd88c787fb50219.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/928f6606-0310-b66d-a2cc-ab40fe36fa5a.png)

```
$ sudo nano /etc/dhcpcd.conf
```
このコマンドを実行し，ファイルの一番したに以下の内容を記載する．

```
interface wlan0
static ip_address=192.168.1.120/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1
```
一応説明しておくと，今回のip自身のipアドレス(ifconfigで確認したもの）が192.168.1.31でセグメントが192.168.1なのでこの数値になっています．
120となっているところは割り当てたい番号に変更してください．他のデバイスとアドレスが被るとめんどくさいので，今回は120にしています（使ってないだろうということ）
routersはデフォルトゲートウェイのIp
DNSのところはDNSサーバのIP
/24はサブネットマスク長です

設定が終わったら再起動します

```
sudo reboot
```

![3fec72cd1f2c7fdfa5e2a2e16e605fa4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/4989ae11-0618-388e-8ad8-c0f1830ef76d.png)
再度確認するとアドレスを変更できていることが確認できる．


## 2.PiVPNを導入する
OpenVPN,WireGuardを簡単にラズパイに導入できるように用意してくれています！
[ここ](https://github.com/pivpn/pivpn)にあります！詳しく見たい方は参照してください．．．
以下のコマンドを実行すると，VPNの設定が始まります．

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

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/c52236b6-3c78-246a-71dd-0e7cd70fd38b.png)
Enterで次へ

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/bac544b9-7966-5c49-b80d-eae41739c748.png)
IPアドレスの競合についての注意があるが（DHCP）今回は固定にしたので問題なし．

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/7780c413-3391-fde8-863a-2599d1249643.png)
先ほどwlan0を固定したので，wlan0を選択．
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/f7312bc3-fadf-3e46-f459-a98e652b11f9.png)

アドレスを固定し，静的IPアドレスなので，Noを選択.
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/463bab4c-7436-3dd9-7420-08bd6fbce4a7.png)
Yesを選択

いくつかYesで進み，以下の画面がくる．
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/d89af8c5-a6cd-f33d-48fc-193e68ce9535.png)
今回はWireGuardを選択
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/637b748b-68de-1a5d-0693-27039d3448e8.png)
ポートを選択くる画面が出てくる．今回はデフォルトの51820を使う（何か他のもので使っていたら別の数値に割り振る必要がある）
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/bcae87ec-f44f-808c-c6fb-7e936855a205.png)
確認画面，Yesを選択．
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/0a07448c-4c33-675a-738d-7c76a274fcd8.png)
VPNクライアントのDNSプロバイダを選択します。
独自のものを使用する場合は、「カスタム」を選択します。
ローカルリゾルバを使用している場合は、PiVPN-is-local-DNS を選択し、リゾルバが 10.6.0.1 をリスンし、10.6.0.0/24 からのリクエストを許可していることを確認してください。 と書いてあります．
こだわりがなければなんでも大丈夫です．　今回はCloudFlareを使ってみます．

次の画面では Use this publicIPを選択しました．

いくつか進み以下の画面
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/7fcf1e4e-cd85-eed8-b456-8044cc43004c.png)
自動アップデートをオンにするかどうか．．Yesにします．
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/c80fef24-f4bc-ed24-c4c8-c675e8b4ae72.png)
インストール完了から再起動をします．
これでVPNサーバーは設定完了です．

## クライアント用プロファイルを作成する

```
$ pivpn add
```
を実行し，クライアントを追加します．
わかりやすいデバイス名を決定して入力
これで必要なプロファイルが作成され，
/home/pi/configs
に設置される．

```
$ ls -la /home/pi/configs
```
で確認可能．


# Mac側の設定
[ここ](https://apps.apple.com/jp/app/wireguard/id1451685025?l=en&mt=12)からWireGuardのアプリを入手します．(AppleStore）
アプリを起動し，インポートを選択．
さっきラズパイ側で作ったconfをインポートする．

![3f67c58717b4a70038b7b4f06f3e6853.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/256914/dfc65404-79f9-4195-5169-010db07b4bae.png)

これでVPNの接続の完了です．