William
发布于 2023-10-06 / 0 阅读 / 0 评论 / 0 点赞

群晖Synology安装Wireguard&配置多用户

前言

群晖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,按需求写入下面文件。

PostUpPostDowneth0需要修改为群晖网卡名称,请使用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

评论