見出し画像

SynologyのNASでWireGuardを動作させる

SynologyはWireGuardを公式サポートしていません。そのためWireGuardを動作させるには独自の方法が必要です。ここではSynologyのNASへWireGuardをインストールする方法を記載します。Googleなどで検索すれば似たような方法がいくつか見つかります。


動作環境と事前設定

以下の構成で動作確認をしています。

・Synology DiskStation DS220+ (メモリは4GBを追加して6GBで確認)
・DSM: 7.2.2-72806
・WireGuard: 1.0.20220627
・Container Manager: 20.10.23-1437

初期状態のNASではContainer Managerがインストールされていません。パッケージセンターからインストールしましょう。また必要に応じてNASを固定IPにしたり、ポートを開放したり、DDNSを取得しておいてください。

CPUのパッケージアーチの特定

Synology のNASは種類により搭載されているCPUが異なります。そしてCPU毎にインストールするWireGuardのパッケージが異なります。そのため、まずはこちらのサイトにアクセスし、自分のNASのパッケージアーチを調べます。

WireGuardのダウンロード

DSMのバージョンとパッケージアーチに応じたWireGuardをWebで探します。(例えばこのあたりとかこのあたりとか。) NASに合わせたspkをダウンロードします。

WireGuardのインストール

DSMのパッケージセンターを開き、手動アップロードから先ほどダウンロードしたspkをインストールします。途中、デジタル署名がないという警告が出ますが無視して進めます。最後の画面では「インストール後に実行する」のチェックを外します。

手動インストールでダウンロードしたspkを選択
デジタル署名がないので警告が出ます
インストール後に実行を外します

WireGuardの実行

DSMからはWireGuardがうまく実行できないため、SSHでPCから接続し実行します。コントロールパネルからSSHを有効にします。もし継続的にSSHをしようするならポートは適当な値に変更しておきましょう。

WindowsのPowerShellを起動し、SSHでNASと接続します。
[ssh user@123.456.789.012 -p 22]と入力します。
ここで[user]はユーザー名、[123.456.789.012]はNASのIPアドレス、[22]はポート番号です。途中でパスワードの入力を求められます。
ログインができたら[sudo /var/packages/WireGuard/scripts/start]と入力します。ここでもパスワードを求められます。成功すると[WireGuard has been successfully started]と表示され、WireGuardが起動します。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows

PS C:\Users\hoge> ssh hogehoge@192.168.0.10 -p 22

###省略###

Are you sure you want to continue connecting (yes/no[fingerprint])? [yesと入力]

###省略###

hogehoge@192.168.0.10's password: [ここにパスワードを入力]

###省略###

hogehoge@DS220:/$ sudo /var/packages/WireGuard/scripts/start
Password: [ここにパスワードを入力]
hogehoge@DS220:WireGuard has been successfully started

パッケージセンターでWireGuardの起動を確認できます。

WireGuardの設定

すでにWireGuardはインストールできましたが、設定をCLIで行うのは面倒です。そこでwg-easyというソフトを入れてGUIで管理します。

まずwg-easyの管理画面に入るパスワードを決めましょう。そしてパスワードを決めたら、そのパスワードのBCryptハッシュを計算します。WebサイトにBCryptハッシュを計算するサイトがいくつかあるので、そちらで計算してください。
例えばパスワードが[Password]で繰り返し回数10回の場合、BCryptハッシュは[$2y$10$qPtbDvJrGLgU/rt64vOy8.HDS9y9lKH80mgb7JWpbxyeO1xIRs/1a]のようになります。
その後、$マークを$$マークに変更し[$$2y$$10$$qPtbDvJrGLgU/rt64vOy8.HDS9y9lKH80mgb7JWpbxyeO1xIRs/1a]としてください。

次にDSMからFileStationを起動し、[docker]の中に[wg-easy]というフォルダを作ってください。

DSMからContainer Managerを起動します。Container Manager→プロジェクト→作成を押し、プロジェクトの作成画面に入ります。プロジェクト名、パス、ソースを以下の通りにし、コードを貼り付けてください。

services:
  wg-easy:
    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    environment:
      - LANG=ja
      - TZ=Asia/Tokyo
      - WG_HOST= hogehoge.synology.me #ここにグローバルIPまたはSynologynDDNSを書きます
      - WG_PORT=51820 #ポートを変更したい場合はここを書き換えてください
      - WG_DEFAULT_DNS=8.8.8.8 #dnsはルーターのアドレスや8.8.8.8など
      - PASSWORD_HASH=$$2y$$10$$qPtbDvJrGLgU/rt64vOy8.HDS9y9lKH80mgb7JWpbxyeO1xIRs/1a #ここにBCryptハッシュを書きます
    volumes:
      - /volume1/docker/wg-easy:/etc/wireguard
    ports:
      - 51820:51820/udp #WireGuardのポートです。上記で変更した場合はこちらも変更が必要です。
      - 51821:51821/tcp #wg-easyのポートです
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    restart: unless-stopped

あとはそのまま最後まで進んでください。場合によっては5分くらいかかるかもしれません。成功すると次の画面になり、Container Managerにwg-easyが追加され、緑ランプがつきます。

その後、ブラウザで [http://123.456.789.012:51821] に接続するとwg-easyにアクセスできます。(123.456.789.012にはNASのIPを入れてください。)

WireGuardおよびwg-easyの使い方はWEBで検索してみてください。
お疲れさまでした。

いいなと思ったら応援しよう!

なごみまくり
よろしければ応援よろしくお願いいたします。チップは素材購入の材料費などに使用させていただきます。