Published on

🛜WireGuard on Ubuntu

featured_image
Table of Contents

debian でも OK

下準備

ローカル IP アドレス確認

ip -4 a

ifconfig (不要)

sudo apt install net-tools
ifconfig

# ensXXX などをチェック

開いているポート

ss -atnu

ss -t

アンコメント

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

WireGuard インストール

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

サーバー用

# サーバー秘密鍵の生成
wg genkey > server.key
chmod 600 server.key

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

クライアント用

wg genkey > client.key
chmod 600 client.key

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

サーバー設定ファイル

中身を確認

# サーバー秘密鍵
cat server.key

# クライアント公開鍵
cat client.pub

設定を作成

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

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

# クライアント秘密鍵
cat client.key

# サーバー公開鍵
cat server.pub
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 コード生成

sudo apt install -y qrencode
cd ~/wg

qrencode -t ansiutf8 < client.conf -o qr.png

# コンソールに出力したい場合
qrencode -o qr.png -t ansiutf8 < client.conf && cat qr.png

起動設定

# 有効化
sudo systemctl enable wg-quick@wg0

# 起動
sudo systemctl start wg-quick@wg0

# 再起動
sudo systemctl restart wg-quick@wg0

# 状態確認
sudo systemctl status wg-quick@wg0

起動確認

ip -4 a

wg0 が表示されれば OK

WG 接続確認

sudo wg show

DNS エラー

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

接続できない

ルーティング確認

sudo iptables -L -n -t nat

ルーターの設定

UDP ポートを開けておく

WireGuard ダッシュボード

https://github.com/donaldzou/WGDashboard

依存パッケージ

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 インストール

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

自動起動

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
sudo cp wg-dashboard.service /etc/systemd/system/wg-dashboard.service
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

ステータス

sudo systemctl status wg-dashboard.service

操作

# 停止
sudo systemctl stop wg-dashboard.service

# 起動
sudo systemctl start wg-dashboard.service

# 再起動
sudo systemctl restart wg-dashboard.service

操作

# 起動
sudo ./wgd.sh start

# 停止
sudo ./wgd.sh stop

# 再起動
sudo ./wgd.sh restart

# デバッグ
sudo ./wgd.sh debug

ダッシュボード設定

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

初期ポート: 10086

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

手動修正

sudo vim wg-dashboard.ini

wg1 を追加

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

注意点

起動エラーが出る場合

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

always => no

[Service]
...
Restart=no

リロード、起動

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

メモ

DNS 設定

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

もしくは

sudo vim /etc/netplan/00-installer-config.yaml

sudo vim /etc/resolv.conf

PiVPN

GUI ではない

Ubuntu 、 OrangePi でも動く

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

再起動

プロファイルの追加

pivpn add

QR コードを表示

pivpn -qr

ユーザーを選択

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

~/configs
sudo systemctl restart wg-quick@wg0

sudo systemctl status wg-quick@wg0