WireGuard
This is the diff between the backup and the current copy.
# WireGuard
## はじめに
私は格安VPSサービスの[LunaNode](lunanode)を「ひいき」にしてます。
最安プランは月3.5ドルで、任意のインストーラISOイメージでOSを導入できます。
このサーバもLunaNodeの最安プランで建てている訳ですが、さすがに非力なので、VPNで自宅の非公開サーバを接続して拡張しています。
```
🌐 インターネット
│
▼
🖥️ リモートVPSサーバ
(Public IP)
│
──VPN接続(🔒)──
│
▼
🏠 自宅非公開サーバ
(Private IP, NAT背後)
```
私はVPNを使うのは、ほぼ初めてだったので、手軽と噂のWireGuardを使う事にしました。
以下は設定の手順のメモです。
基本的には、未来の自分の為に残す主旨です。
質問があれば、分かる処は答えます。
## 構成
VPSではOSは Devuan GNU+Linux を使ってます。
基本的には Debian GNU/Linux と同じですが、 systemd を排除してるので、デーモン(サービス)の管理の仕方も多少異なります。
自宅非公開サーバではOSは OpenBSD を使ってます。
どちらのサーバにもVPNツールの WireGuard を導入しますが、WireGuardに関してはDevuanをサーバ、OpenBSDをクライアントとして使います。
## Devuan側
```
# apt-get install wireguard
# touch privatekey
# chmod 600 privatekey
# wg genkey > privatekey
# wg pubkey < privatekey > publickey
# touch wg0.conf
# chmod 600 wg0.conf
# vi wg0.conf
# vi /etc/network/interfaces
# service networking restart
# ufw allow 51820
```
### /etc/wireguard/wg0.conf
```
[Interface]
Address = 10.0.0.1/24
PrivateKey = <Devuanのプライベートキー>
ListenPort = 51820
[Peer]
PublicKey = <OpenBSDのパブリックキー>
AllowedIPs = 10.0.0.2/32
#Endpoint = <OpenBSDのグローバルIP>:51820
PersistentKeepalive = 25
```
### /etc/network/interfaces
```
auto wg0
iface wg0 inet manual
pre-up /usr/bin/wg-quick up wg0
post-down /usr/bin/wg-quick down wg0
```
## OpenBSD側
```
# pkg_add wireguard-tools
# mkdir /etc/wireguard
# touch privatekey
# chmod 600 privatekey
# wg genkey > privatekey
# wg pubkey < privatekey > publickey
# touch wg0.conf
# chmod 600 wg0.conf
# vi wg0.conf
# vi /etc/pf.conf
# pfctl -f /etc/pf.conf
# wg-quick up wg0
```
### /etc/wireguard/wg0.conf
```
[Interface]
Address = 10.0.0.2/24
PrivateKey = <OpenBSDのプライベートキー>
#ListenPort = 51820
[Peer]
PublicKey = <Devuanのパブリックキー>
AllowedIPs = 10.0.0.1/32
Endpoint = <DevuanのグローバルIP>:51820
PersistentKeepalive = 25
```
### /etc/pf.conf
```
# VPN
pass in on wg0 proto tcp from 10.0.0.1 to 10.0.0.2
pass in on wg0 proto tcp to re0 port http
```
### /etc/rc.d/wireguard
```
#!/bin/sh
case "$1" in
start)
wg-quick up wg0
;;
stop)
wg-quick down wg0
;;
restart)
wg-quick down wg0
wg-quick up wg0
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit 0
```