前言
群晖DSM7无Wireguard套件,相对来说系统闭源,我们采用编译的方式安装Wireguard。
注意:使用此方案穿透回内网,请务必确定,内网机器具有公网ipv4或公网ipv6,否则请直接参考ZeroTier&Tailscale无公网IP实现p2p穿透教程。无公网的机器无法直接使用Wireguard,请勿折腾。
编译Wireguard Github
找一台linux机器,运行下面命令编译Wireguard
运行以下命令来创建 docker 映像:
git clone https://github.com/runfalk/synology-wireguard.git
cd synology-wireguard/
sudo docker build -t synobuild .
Shell
复制
使用以下命令为任何平台和 DSM 版本进行构建,注意:修改
PACKAGE_ARCH
以及DSM_VER
为自己系统架构和DSM版本
sudo docker run --rm --privileged --env PACKAGE_ARCH=<arch> --env DSM_VER=<dsm-ver> -v $(pwd)/artifacts:/result_spk synobuild
Shell
复制
在DSM系统信息中查看架构版本号。点击这里查看你的系统架构版本号。请注意,PACKAGE_ARCH必须为小写。例如下面:
sudo docker run --rm --privileged --env PACKAGE_ARCH=v1000 --env DSM_VER=7.0 -v $(pwd)/artifacts:/result_spk synobuild
Shell
复制
编译成功后在artifacts目录下找到
.spk
文件后上传到DSM插件中心安装并启动
注意:请勿在插件中心点启动,会失败无法使用,请使用下面命令通过ssh登录后启动插件
#切换为root用户
sudo -i
#启动插件
sudo /var/packages/WireGuard/scripts/start
Shell
复制
配置Wireguard&多用户
创建公钥私钥
预共享密钥
mkdir wg
# 创建目录存放公钥私钥
cd wg
# 进入文件夹
umask 077
# 配置创建密钥的权限
wg genpsk > sharekey
# 创建预共享密钥
cat sharekey
# 获取密钥复制保存
Shell
复制
服务端公钥私钥
wg genkey | tee server_privatekey | wg pubkey > server_publickey
# 创建服务端公钥和私钥
cat server_privatekey
# 获取服务端私钥复制保存
cat server_publickey
# 获取服务端公钥复制保存
Shell
复制
客户端公钥私钥
重复此操作创建每个客户端的公钥和私钥,请注意修改以下命令中的文件名,本文以 macOS 为例:
wg genkey | tee macos_privatekey | wg pubkey > macos_publickey
# 创建 macOS 客户端公钥和私钥
cat macos_privatekey
# 获取 macOS 客户端私钥复制保存
cat macos_publickey
# 获取 macOS 客户端公钥复制保存
Shell
复制
创建wg0文件[在群晖机器上]
创建/etc/wireguard/wg0.conf
,按需求写入下面文件。
PostUp
和PostDown
中eth0
需要修改为群晖网卡名称,请使用ifconfig
查询[Interface]
中Address
不可以与现有ip段冲突ListenPort
为监听端口,不可冲突
# 服务端配置
[Interface]
Address = 10.0.0.1/16
PrivateKey = <server_privatekey>
ListenPort = 12345
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#macos
[Peer]
PublicKey = <macos_publickey>
AllowedIPs = 10.0.0.2/32
PresharedKey = <sharekey>
PersistentKeepalive = 25
#win
[Peer]
PublicKey = <win_publickey>
AllowedIPs = 10.0.0.3/32
PresharedKey = <sharekey>
PersistentKeepalive = 25
#有多个客户端按照上面[Peer]复制添加即可
Shell
复制
创建客户端文件(以win客户端举例)
[Interface]
PrivateKey = <macos_privatekey>
Address = 10.0.0.2/24
DNS = 114.114.114.114, 240e:4c:4008::1
[Peer]
PublicKey = <server_pubilckey>
PresharedKey = <sharekey>
AllowedIPs = 0.0.0.0/0 #全局代理,也可修改为内网ip仅代理内网
Endpoint = [群晖公网ip]:<ListenPort>
PersistentKeepalive = 25
Shell
复制
启动WG以及其他相关操作
很多人搞不清WG的公钥和私钥
只需要记住:公钥是给对方的,私钥留给自己!!
# 启动WG
wg-quick up wg0
# 关闭WG
wg-quick down wg0
# 开机自启WG
wg-autostart enable wg0