目前已不完全适用,请参考教程1教程2

前言

群晖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 .
  • 使用以下命令为任何平台和 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

    在DSM系统信息中查看架构版本号。点击这里查看你的系统架构版本号。请注意,PACKAGE_ARCH必须为小写。例如下面:
    在群晖网站找到系统版本号

    sudo docker run --rm --privileged --env PACKAGE_ARCH=v1000 --env DSM_VER=7.0 -v $(pwd)/artifacts:/result_spk synobuild
  • 编译成功后在artifacts目录下找到.spk文件后上传到DSM插件中心安装并启动
    编译成功
    上传插件
    注意:请勿在插件中心点启动,会失败无法使用,请使用下面命令通过ssh登录后启动插件

    #切换为root用户
    sudo -i 
    #启动插件
    sudo /var/packages/WireGuard/scripts/start

配置Wireguard&多用户

创建公钥私钥

  • 预共享密钥

    mkdir wg
    # 创建目录存放公钥私钥
    cd wg
    # 进入文件夹
    umask 077
    # 配置创建密钥的权限
    wg genpsk > sharekey
    # 创建预共享密钥
    cat sharekey
    # 获取密钥复制保存
  • 服务端公钥私钥

    wg genkey | tee server_privatekey | wg pubkey > server_publickey
    # 创建服务端公钥和私钥
    cat server_privatekey
    # 获取服务端私钥复制保存
    cat server_publickey
    # 获取服务端公钥复制保存
  • 客户端公钥私钥
    重复此操作创建每个客户端的公钥和私钥,请注意修改以下命令中的文件名,本文以 macOS 为例:

    wg genkey | tee macos_privatekey | wg pubkey > macos_publickey
    # 创建 macOS 客户端公钥和私钥
    cat macos_privatekey
    # 获取 macOS 客户端私钥复制保存
    cat macos_publickey
    # 获取 macOS 客户端公钥复制保存

    创建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

[Peer]
PublicKey = <macos_publickey>
AllowedIPs = 10.0.0.2/32
PresharedKey =
PersistentKeepalive = 25

[Peer]
PublicKey = <win_publickey>
AllowedIPs = 10.0.0.3/32
PresharedKey =
PersistentKeepalive = 25

创建客户端文件(以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 =
AllowedIPs = 0.0.0.0/0
Endpoint = [群晖公网ip]:ListenPort
PersistentKeepalive = 25

客户端配置

启动WG以及其他相关操作

很多人搞不清WG的公钥和私钥
只需要记住:公钥是给对方的,私钥留给自己!!
# 启动WG
wg-quick up wg0
# 关闭WG
wg-quick down wg0
# 开机自启WG
wg-autostart enable wg0

参考文档

Synology DSM7 Wireguard 安装小记
OpenWRT 配置 WireGuard 服务端及客户端配置教程
CentOS 7 安装 WireGuard 详细教程

最后修改:2024 年 05 月 28 日
如果觉得我的文章对你有用,请随意赞赏