Wireguard-ui
Wireguard-uiを使ってRaspberry Pi 4BにVPNサーバ環境を構築しました。
Wireguard-uiはGUI操作でWireguardのサーバ用設定ファイル(wg0.conf)やクライアント用の設定ファイル/QRコードを生成できます。
また、Wake on LANの機能もあります。
MTUとPost Up/Downスクリプトの指定方法について試行錯誤しました。
環境
- Raspberry Pi 4B
- Ubuntu 24.10 (arm64)
- wireguard 1.0.20210914
- wireguard-ui v0.6.2
- インターネット回線はv6プラス
構築
v6プラス接続環境の調査
- 公開IPv4アドレスと公開IPv6アドレスを確認
https://test-ipv6.com/ - 公開IPv6 アドレスから公開可能なポート番号を確認
http://ipv4.web.fc2.com/map-e.html - 公開するポート番号を決定
例えば60000/udpWireguardの使用プロトコルはudpです。
- Wireguardを構築するサーバのローカルIPアドレスを確認 例えば192.168.11.24, NIC eth0
ip a
- ルータでポートフォワード設定
インターネットからの60000/udpアクセスを192.168.11.24の60000/udpに転送同じポート番号にする必要があります。
Wireguardのインストール
- インストール
sudo apt install wireguard
wireguardとwireguard-toolsパッケージがインストールされます。
Wireguard-uiのインストール
- インストール
https://github.com/ngoduykhanh/wireguard-ui/releases
raspberry pi / Ubuntu arm64 の場合はwireguard-ui-v0.6.2-linux-arm64.tar.gzVERSION=v0.6.2
wget https://github.com/ngoduykhanh/wireguard-ui/releases/download/${VERSION}/wireguard-ui-${VERSION}-linux-arm64.tar.gz
sudo mkdir /opt/wireguard
sudo tar xvf wireguard-ui-${VERSION}-linux-arm64.tar.gz -C /opt/wireguard/ - ユニットファイルの作成
/etc/systemd/system/wgui-worker.service [Unit]
Description=wireguard web ui
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/wireguard
ExecStart=/opt/wireguard/wireguard-ui
Restart=always
[Install]
WantedBy=multi-user.target - サービス有効化と起動
sudo systemctl enable wgui-worker.service
sudo systemctl start wgui-worker.serviceこの時、
/etc/wireguard/wg0.conf
が生成されます。
Wireguardの自動再起動設定
/etc/wireguard/wg0.conf
を監視してWireguardを自動再起動します。
- ユニットファイルの作成
/etc/systemd/system/wgui.service [Unit]
Description=Restart WireGuard
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart wg-quick@wg0.service
[Install]
RequiredBy=wgui.path/etc/systemd/system/wgui.path [Unit]
Description=Watch /etc/wireguard/wg0.conf for changes
[Path]
PathModified=/etc/wireguard/wg0.conf
[Install]
WantedBy=multi-user.target - サービスの有効化と起動
sudo systemctl enable wgui.{path,service}
sudo systemctl start wgui.{path,service}
内部ネットワークへの転送許可
- 設定
/etc/sysctl.conf 27
28
29# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
net.ipv4.ip_forward=1 - 反映
sudo sysctl -p
Wireguardネットワーク設定
Wireguard-uiにアクセス
http://192.168.11.24:5000ログイン
admin / adminパスワードはUsers Settingsで変更します。
Global Settingsの設定
MTUの値を削除してSave私の環境ではデフォルトの1500や一般的な1420を設定すると通信が不安定になったので削除しました。
https://www.speedguide.net/analyzer.php
もし設定するとしたら各接続拠点から上記サイトで調べたMTU値からIPv4なら60、IPv6なら80を引いた値の小さい方を設定します。
自宅PC:MTU 1460、MSS 1420 → MTU 1400
スマートフォン:MTU 1420、MSS 1380 → MTU 1360Wireguard Serverの設定
下記を設定してSaveListen Port 60000 Port Up Script iptables -t nat -A POSTROUTING -s 10.252.1.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 60000 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT Post Down Script iptables -t nat -D POSTROUTING -s 10.252.1.0/24 -o eth0 -j MASQUERADE; iptables -D INPUT -p udp -m udp --dport 60000 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT Wireguard Clientsの設定
New Clientを押下、Nameを設定してSubmit反映
Apply Config再起動
設定を変更した場合は念のため再起動しておいた方がよいみたいです。
クライアント端末の設定
Androidの場合
- Wireguardアプリをインストール
- Wireguardアプリで+を押下
- QRコードをスキャンを選択
- Wireguard-uiのクライアント画面でQR codeを押下して画像をスキャン
- トンネル名を設定してオンにする
- 接続に成功するとwireguard-uiのStatus画面で接続実績が記録される