2019-03-17 22:02:37 +07:00
|
|
|
WireGuard support for Synology NAS
|
|
|
|
==================================
|
2019-03-19 03:43:02 +07:00
|
|
|
This package adds WireGuard support for Synology NAS drives. It provides the
|
|
|
|
WireGuard kernel module and the ``wg``/``wg-quick`` commands.
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
|
|
|
|
Disclaimer
|
|
|
|
----------
|
2019-03-19 05:30:59 +07:00
|
|
|
You use everything here at your own risk. I am not responsible if this breaks
|
2019-03-20 16:31:56 +07:00
|
|
|
your NAS. Realistically it should not result in data loss, but it could render
|
|
|
|
your NAS unaccessible if something goes wrong.
|
|
|
|
|
|
|
|
If you are not comfortable with removing your drives from the NAS and manually
|
|
|
|
recover the data, this might not be for you.
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
|
|
|
|
Compatibility list
|
|
|
|
------------------
|
|
|
|
The following drives have been tested:
|
|
|
|
|
2019-03-22 20:16:47 +07:00
|
|
|
========= ========= =========== ===========================
|
|
|
|
Model Platform DSM Version Is working?
|
|
|
|
--------- --------- ----------- ---------------------------
|
|
|
|
DS114 armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS115j armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS213j armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS213j armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS214play armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS214se armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS216se armada370 *N/A* No (Kernel version too old)
|
|
|
|
DS218j armada38x 6.2 Yes
|
|
|
|
DS414slim armada370 *N/A* No (Kernel version too old)
|
|
|
|
RS214 armada370 *N/A* No (Kernel version too old)
|
|
|
|
========= ========= =========== ===========================
|
2019-03-20 16:31:56 +07:00
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
The minimum required kernel version is 3.10. If you have a kernel version lower
|
2019-03-20 16:31:56 +07:00
|
|
|
than that, WireGuard will not work. You can check your kernel version by
|
|
|
|
logging in through SSH and running the ``uname -a`` command.
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
|
2019-03-19 03:43:02 +07:00
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
Check the `releases <https://github.com/runfalk/synology-wireguard/releases>`_
|
|
|
|
page for SPKs for your platform. If there is no SPK you have to compile it
|
|
|
|
yourself using the instructions below.
|
|
|
|
|
|
|
|
1. In the Synology DSM web admin UI, open the Package Center and press the
|
|
|
|
*Settings* button.
|
|
|
|
2. Set the trust level to *Any publisher* and press *OK* to confirm.
|
|
|
|
3. Press the *Manual install* button and provide the SPK file. Follow the
|
|
|
|
instructions until done.
|
|
|
|
|
|
|
|
Now you just need to figure out how to configure WireGuard. There are lots of
|
|
|
|
good guides on how to do that.
|
|
|
|
|
2019-03-19 05:35:14 +07:00
|
|
|
To put my WireGuard configuration on the NAS, I used SSH and created a
|
|
|
|
``wg-quick`` configuration in ``/etc/wireguard/wg0.conf``. Then I opened the
|
|
|
|
*Control panel*, opened the *Task scheduler* and created *Triggered task* that
|
|
|
|
runs ``wg-quick up wg0`` on startup.
|
2019-03-19 03:43:02 +07:00
|
|
|
|
|
|
|
|
2019-03-17 22:02:37 +07:00
|
|
|
Compiling
|
|
|
|
---------
|
2019-03-22 20:11:09 +07:00
|
|
|
I've used docker to compile everything, as ``pkgscripts-ng`` clutters the file
|
|
|
|
system quite a bit. First create a docker image by running the following
|
|
|
|
command in this repository:
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2019-03-22 21:39:09 +07:00
|
|
|
git clone https://github.com/runfalk/synology-wireguard.git
|
|
|
|
cd synology-wireguard/
|
2019-03-22 20:11:09 +07:00
|
|
|
sudo docker build -t synobuild .
|
2019-03-17 22:02:37 +07:00
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
Now we can build for any platform and DSM version using:
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
sudo docker run --rm --privileged --env PACKAGE_ARCH=<arch> --env DSM_VER=<dsm-ver> -v $(pwd)/artifacts:/result_spk synobuild
|
2019-03-17 22:02:37 +07:00
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
You should replace ``<arch>`` with your NAS's package arch. Using
|
|
|
|
`this table <https://www.synology.com/en-global/knowledgebase/DSM/tutorial/General/What_kind_of_CPU_does_my_NAS_have>`_
|
|
|
|
you can figure out which one to use. Note that the package arch must be
|
|
|
|
lowercase. ``<dsm-ver>`` should be replaced with the version of DSM you are
|
|
|
|
compiling for.
|
2019-03-17 22:02:37 +07:00
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
For the DS218j that I have, the complete command looks like this:
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
sudo docker run --rm --privileged --env PACKAGE_ARCH=armada38x --env DSM_VER=6.2 -v $(pwd)/artifacts:/result_spk synobuild
|
2019-03-17 22:48:12 +07:00
|
|
|
|
2019-03-22 20:11:09 +07:00
|
|
|
If everything worked you should have a directory called ``artifacts`` that
|
|
|
|
contains your SPK files.
|
2019-03-17 22:48:12 +07:00
|
|
|
|
2019-03-17 22:02:37 +07:00
|
|
|
|
|
|
|
Credits
|
|
|
|
-------
|
|
|
|
I based a lot of this work on
|
|
|
|
`this guide <https://www.reddit.com/r/synology/comments/a2erre/guide_intermediate_how_to_install_wireguard_vpn/>`_
|
|
|
|
by Reddit user `akhener <https://www.reddit.com/user/akhener>`_. However, I had
|
2019-03-22 20:11:09 +07:00
|
|
|
to modify their instructions a lot since my NAS has an ARM CPU which made cross
|
2019-03-17 22:02:37 +07:00
|
|
|
compilation a lot trickier.
|