wireguad-uiを使ってRaspberry Pi 4BにVPNサーバ環境を構築しました。

https://github.com/ngoduykhanh/wireguard-ui

ngoduykhanh/wireguard-ui

Wireguard web interface

環境

  • Raspberry Pi 4B
    • Ubuntu 24.10 (arm64)
      • wireguard 1.0.20210914
      • wireguard-ui v0.6.2
  • インターネット回線はv6プラス

構築

v6プラス接続環境の調査

  1. 公開IPv4アドレスと公開IPv6アドレスを確認
    https://test-ipv6.com/
  2. 公開IPv6 アドレスから公開可能なポート番号を確認
    http://ipv4.web.fc2.com/map-e.html
  3. 公開するポート番号を決定
    例えば60000/udp

    wireguardの使用プロトコルはudpです。

  4. wireguardを構築するサーバのローカルIPアドレスを確認
    ip a
    例えば192.168.11.24
  5. ルータでポートフォワード設定
    インターネットからの60000/udpアクセスを192.168.11.24の60000/udpに転送

    同じポート番号にする必要があります。

wireguardのインストール

  1. インストール
    sudo apt install wireguard

    wireguardとwireguard-toolsパッケージがインストールされます。

wireguard-uiのインストール

  1. インストール
    https://github.com/ngoduykhanh/wireguard-ui/releases
    raspberry pi / Ubuntu arm64 の場合はwireguard-ui-v0.6.2-linux-arm64.tar.gz
    VERSION=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/
  2. ユニットファイルの作成
    /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
  3. サービス有効化と起動
    sudo systemctl enable wgui-worker.service
    sudo systemctl start wgui-worker.service

    この時、/etc/wireguard/wg0.confが生成されます。

wireguardの自動再起動設定

/etc/wireguard/wg0.confを監視してwireguardを自動再起動します。

  1. ユニットファイルの作成
    /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
  2. サービスの有効化と起動
    sudo systemctl enable wgui.{path,service}
    sudo systemctl start wgui.{path,service}

内部ネットワークへの転送許可

  1. 設定
    /etc/sysctl.conf
    27
    28
    29
    30
    31
    32
    33
    34
    35
    # Uncomment the next line to enable packet forwarding for IPv4
    #net.ipv4.ip_forward=1
    net.ipv4.ip_forward=1

    # Uncomment the next line to enable packet forwarding for IPv6
    # Enabling this option disables Stateless Address Autoconfiguration
    # based on Router Advertisements for this host
    #net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.all.forwarding=1
  2. 反映
    sudo sysctl -p

再起動

  1. 再起動
    sudo reboot

wireguardネットワーク設定

  1. wireguard-uiにアクセス
    http://192.168.11.24:5000

  2. ログイン
    admin / admin

    パスワードはUsers Settingsで変更します。

  3. Wireguard Serverの設定
    下記を設定してSaveを押下。

    Server Interface Addresses10.252.1.1/24
    Listen Port60000
    Port Up Scriptiptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    Post Down Scriptiptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  4. Wireguard Clientsの設定
    New Clientを押下して以下を設定し、Submit

    Namewg0-cl01
    IP Allocation10.252.1.2/32
    Allowed IPs192.168.11.24/32, 192.168.11.2/32
  5. 反映
    Apply Config

クライアント端末の設定

Androidの場合

  1. wireguardアプリをインストール
  2. wireguardアプリで+を押下
  3. QRコードをスキャンを選択
  4. wireguard-uiのクライアント画面でQR codeを押下して画像をスキャン
  5. トンネル名を設定してオンにする
  6. 接続に成功するとwireguard-uiのStatus画面で接続実績が記録される