ぐだメモ
検索
MENU

WireGuard on Ubuntu

debian でも OK

下準備

ローカル IP アドレス確認

Terminal window
ip -4 a

ifconfig (不要)

Terminal window
sudo apt install net-tools
Terminal window
ifconfig
# ensXXX などをチェック

開いているポート

Terminal window
ss -atnu
ss -t

アンコメント

Terminal window
sudo vim /etc/sysctl.conf
Terminal window
# アンコメント 28行目あたり
net.ipv4.ip_forward=1
Terminal window
sudo sysctl -p

WireGuard インストール

Terminal window
sudo apt update
sudo apt install wireguard -y
Terminal window
mkdir ~/wg && cd $_

サーバー用

Terminal window
# サーバー秘密鍵の生成
wg genkey > server.key
chmod 600 server.key
# 秘密鍵から公開鍵を生成
wg pubkey > server.pub < server.key
chmod 600 server.pub

クライアント用

Terminal window
wg genkey > client.key
chmod 600 client.key
# 秘密鍵から公開鍵を生成
wg pubkey > client.pub < client.key
chmod 600 server.pub

サーバー設定ファイル

中身を確認

Terminal window
# サーバー秘密鍵
cat server.key
# クライアント公開鍵
cat client.pub

設定を作成

Terminal window
sudo vim /etc/wireguard/wg0.conf

wg0.conf ensPrivatekeyPublickeyを修正

[Interface]
Address = 10.0.0.1/32
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
ListenPort = 9199
PrivateKey = [server.key]
[Peer]
PublicKey = [client.pub]
AllowedIPs = 10.0.0.0/24

クライアント設定ファイル

Terminal window
# クライアント秘密鍵
cat client.key
# サーバー公開鍵
cat server.pub
Terminal window
vim ~/wg/client.conf

使うときはスマホや PC にコピー

[Interface]
PrivateKey = [client.key]
Address = 10.0.0.2
DNS = 8.8.8.8
[Peer]
PublicKey = [server.pub]
AllowedIPs = 0.0.0.0/0
Endpoint = [IPアドレス]:9199

QR コード生成

Terminal window
sudo apt install -y qrencode
Terminal window
cd ~/wg
qrencode -t ansiutf8 < client.conf -o qr.png
# コンソールに出力したい場合
qrencode -o qr.png -t ansiutf8 < client.conf && cat qr.png

起動設定

Terminal window
# 有効化
sudo systemctl enable wg-quick@wg0
# 起動
sudo systemctl start wg-quick@wg0
# 再起動
sudo systemctl restart wg-quick@wg0
# 状態確認
sudo systemctl status wg-quick@wg0

起動確認

Terminal window
ip -4 a

wg0 が表示されれば OK

WG 接続確認

Terminal window
sudo wg show

DNS エラー

Terminal window
sudo vim /etc/systemd/resolved.conf
Terminal window
DNS=8.8.8.8
Terminal window
sudo systemctl restart systemd-resolved.service

接続できない

ルーティング確認

Terminal window
sudo iptables -L -n -t nat

ルーターの設定

UDP ポートを開けておく

WireGuard ダッシュボード

GitHub - WGDashboard/WGDashboard: Simple dashboard for WireGuard VPN written in Python &amp; Vue.js Simple dashboard for WireGuard VPN written in Python &amp; Vue.js - WGDashboard/WGDashboard
GitHub

依存パッケージ

Terminal window
sudo apt install python3-pip -y
sudo pip install Flask &&
sudo pip install tinydb &&
sudo pip install ifcfg &&
sudo pip install icmplib &&
sudo pip install Flask-QRcode

WGDashboard インストール

Terminal window
cd /home/[ユーザー]
git clone https://github.com/donaldzou/WGDashboard.git wgdashboard
cd wgdashboard/src
sudo chmod u+x wgd.sh
sudo ./wgd.sh install
sudo chmod -R 755 /etc/wireguard
sudo ./wgd.sh start

自動起動

Terminal window
sudo vim wg-dashboard.service

debian では”python3 => python”にする

[Unit]
After=netword.service
[Service]
WorkingDirectory=/home/[ユーザー]/wgdashboard/src
ExecStart=/usr/bin/python3 /home/[ユーザー]/wgdashboard/src/dashboard.py
Restart=always
[Install]
WantedBy=default.target
Terminal window
sudo cp wg-dashboard.service /etc/systemd/system/wg-dashboard.service
Terminal window
sudo chmod 664 /etc/systemd/system/wg-dashboard.service &&
sudo systemctl daemon-reload &&
sudo systemctl enable wg-dashboard.service &&
sudo systemctl start wg-dashboard.service

ステータス

Terminal window
sudo systemctl status wg-dashboard.service

操作

Terminal window
# 停止
sudo systemctl stop wg-dashboard.service
# 起動
sudo systemctl start wg-dashboard.service
# 再起動
sudo systemctl restart wg-dashboard.service

操作

Terminal window
# 起動
sudo ./wgd.sh start
# 停止
sudo ./wgd.sh stop
# 再起動
sudo ./wgd.sh restart
# デバッグ
sudo ./wgd.sh debug

ダッシュボード設定

| 項目 | 初期値 | | ---------- | ------ | | ユーザー | admin | | パスワード | admin |

初期ポート: 10086

初期だとエンドポイントがローカルなのでダッシュボードで修正する

手動修正

Terminal window
sudo vim wg-dashboard.ini

wg1 を追加

Terminal window
cd /etc/wireguard
sudo cp wg0.conf wg1.conf

注意点

起動エラーが出る場合

Terminal window
sudo vim /etc/systemd/system/wg-dashboard.service

always => no

Terminal window
[Service]
...
Restart=no

リロード、起動

Terminal window
sudo systemctl daemon-reload
sudo systemctl start wg-dashboard.service

メモ

DNS 設定

Terminal window
sudo systemd-resolve --set-dns=192.168.100.XX --interface=ens160

もしくは

Terminal window
sudo vim /etc/netplan/00-installer-config.yaml
sudo vim /etc/resolv.conf

PiVPN

GUI ではない

Ubuntu 、 OrangePi でも動く

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

再起動

プロファイルの追加

Terminal window
pivpn add

QR コードを表示

Terminal window
pivpn -qr

ユーザーを選択

プロファイルはここに保存される root 権限

Terminal window
~/configs
Terminal window
sudo systemctl restart wg-quick@wg0
sudo systemctl status wg-quick@wg0