群晖接入虚拟局域网:实现外网访问群晖和内网设备

      最后更新:2022-07-01 19:23:14 手机定位技术交流文章

      群晖接入虚拟局域网:实现外网访问群晖和内网设备

      本文描述了如何在外部网络上访问grouphui,以及如何使用grouphui来访问内部网络上的其他设备ZeroTierTailscale为例)。

      写在前面

      美国宇航局在国外访问,常见或不常见公网IP+DDNSFRP该程序需要更多的端口被暴露在公共网络上,所以考虑使用虚拟局域网组网。
      个人使用感受:
      ZeroTier它的稳定性是易于使用,但成功率较低,并且由于继发服务器是海外的,继发速度较慢,需求较高,你可以尝试建立自己的月球/根服务器或使用双重的ZeroTier网络(见扩展链接)。
      Tailscale提高成功率,支持MagicDNS ( https://tailscale.com/kb/1081/magicdns/),也是易于使用。
      由于当前的环境是通信和连接网络,ZeroTier无法成功切开孔,并不想折叠自建的月球,所以选择Tailscale。

      准备工作

      • 由于DSM7不允许第三方应用程序直接使用根权限运行,所以使用Docker安装。

      • 本文对容器进行的所有操作都是通过多克CLI完成的.

      • 本文均为在DSM7下面的操作是理论上相容的DSM6(未测试)。

        创建持久性 TUN

        使用SSH连接到NAS

        ssh user@local-ip -p 22

      以下的设置步骤必须与根用户身份运行

      sudo -i

      在开始时编写脚本让设备呼叫/dev/net/tun

      echo -e ‘#!/bin/sh -e ninsmod /lib/modules/tun.ko’ > /usr/local/etc/rc.d/tun.sh

      将权限添加到此脚本(事实上,您首先应该添加空的vi脚本,然后添加权限,然后写上文脚本的内容,否则它会再次提示您)

      chmod a+x /usr/local/etc/rc.d/tun.sh

      一次运行脚本创建TUN

      /usr/local/etc/rc.d/tun.sh

      检查TUN的运行状态

      ls /dev/net/tun
      /dev/net/tun

      在NAS上安装多克

      打开套件中心->搜索Docker->安装

      ZeroTier安装和配置

      设置容器

      创建存储ZeroTier身份和配置的目录

      mkdir /volume1/docker/zerotier-one

      创建一个名为ZeroTier的容器zt (Repo: zerotier/zerotier-synology )

      docker run -d
      —name zt
      —restart=always
      —device=/dev/net/tun
      —net=host
      —cap-add=NET_ADMIN
      —cap-add=SYS_ADMIN
      -v /volume1/docker/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest

      授权入网

      1. 查看节点ID和状态(c715e6680c为节点ID)

        docker exec -it zt zerotier-cli status
        200 info c715e6680c 1.6.5 ONLINE

      2. 加入网络(替换自己的网络ID)

        docker exec -it zt zerotier-cli join e5cd7a9e1cae134f

      3. 在管理背景(https://my.zerotier.com/),授权和分配NASID。

        其他设置和详细使用ZeroTier管理后端可以在官方文件或其他在线教程中找到

      常用命令

      查看节点状态

      docker exec -it zt zerotier-cli status

      查看网络状态

      docker exec -it zt zerotier-cli listnetworks

      显示当前运行的容器(可选)

      docker ps

      输入容器(可选)

      docker exec -it zt bash

      Tailscale的安装和配置

      设置容器

      创建目录以存储Tailscale的身份和配置

      mkdir /volume1/docker/tailscale

      创建一个名为“瓦”的容器ts (Repo: tailscale/tailscale )

      docker run -d
      —name ts
      —restart=always
      —device=/dev/net/tun
      —net=host
      —cap-add=NET_ADMIN
      —cap-add=SYS_ADMIN
      -v /volume1/docker/tailscale:/var/lib/tailscale tailscale/tailscale:stable

      授权入网

      1. 执行下列代码以获取授权链接

        docker exec ts tailscale up

      2. 在浏览器中复制和打开授权链接,然后登录(考虑到国内环境,建议微软)并授权

      3. 您可以进入管理后端查看节点状态( https://login.Tailscale.com/admin/machines )

        可选操作

      • 禁止授权自动终止(Tailscale的授权默认为6个月)

      操作路径:后台->Machines->点击节点右侧『•••』->Disable key expiry

      • 启用MagicDNS(可作为机器名称域名访问设备)

      操作路径:后台->DNS->Add nameserver然后Enable MagicDNS

      访问该组内网的其他设备

      设置群晖的内网转发

      1. 使用SSH连接到NAS并切换到ROOT身份

      2. 启用IP传输(永久性修改)

        echo ‘net.ipv4.ip_forward = 1’ | tee -a /etc/sysctl.conf
        echo ‘net.ipv6.conf.all.forwarding = 1’ | tee -a /etc/sysctl.conf
        sysctl -p /etc/sysctl.conf

      第三行可能无法执行,你可以重新启动系统或执行以下代码,暂时打开IP传输:

      echo 1 > /proc/sys/net/ipv4/ip_forward

      1. 设置NAT转发

      • 方式一(推荐

        iptables -t nat -A POSTROUTING -o ! lo -j MASQUERADE

      • 方式二

      eth0是网络卡的名称。如果机器有多个端口,请使用 ifconfig来找到机器的网络卡名称

      iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

      1. 添加用户定义的脚本,在启动时自动设置NAT传输

      操作路径:
      控制面板->服务->任务计划->新增->触发的任务->用户自定义的脚本
      常规->一般设置->事件->开机
      任务设置->用户自定义的脚本,输入以下代码并确定
      要确保所有网络模块已装入启动时,在1分钟延迟后添加NAT,否则模块不会出现错误

      sleep 1m
      iptables -t nat -A POSTROUTING -o ! lo -j MASQUERADE

      设置零线程

      1. 登录管理后端( https://my.zerotier.com/),进入NetWorks管理页面

      2. NetWorks->Advanced->Managed Routes添加子网络路由规则

        10.10.2.0/24 via 10.10.10.10

      根据您的实际设置,第一个是该组所在的内部网的IP段,第二个是由ZeroTier分配给该组的IP段

      尾尺设置

      1. 设置子网络路由(/24是当前节点的内部网络段,由它自己取代)

        docker exec ts tailscale up —advertise-routes=10.10.2.0/24 —accept-routes

      2. 登录管理后台( https://login.Tailscale.com/admin/machines )并启用节点的子网:

      操作路径:后台->Machines->点击节点右侧『•••』->Edit route settings->打开对应子网前面的开关

      验证

      在外部网络设备上配置相应的虚拟LAN客户端,然后可以直接调用该组和内部网络IP

      后记

      本文对外部网络接入内部网络设备的重点是:设置TUN设置内网转发部分,虽然作为广东的例子,可根据下面的官方文件应用于其他设备。
      TailscaleZeroTier目前,免费版本供个人使用,并可考虑其付费包的额外要求。

      参考链接

      1. Tailscale官方安装文件 https://tailscale.com/kb/installation/

      2. 「Zerotier Instructions for Installing ZeroTier For Synology NAS」 (PDF)。

      3. ^ “Zerotier Instructions for Installing Docker DSM7”. http://zhuanlan.com.Zhihu.com/p/479171790 “Zerotier Instructions for Installing Docker DSM7”. http://zhuanlan.com.Zhihu.com/p/479171790 “Zerotier Instructions for Installing Docker DSM7”. http://zhuanlan.com.Zhihu.com/p/479171790

      4. 外部网络使用内部网络IP访问整个内部网络设备 https://post.smzdm.com/p/adwgkopd

      扩展阅读

      1. 解释+原则: 基于零级虚拟域名网络 ( 网内吞吐计划 ) https://zhuanlan.Zhihu.com/p/383471270

      2. 继电器+优化:基于零级虚拟域名网络(VPS继电器优化) https://zhuanlan.Zhihu.com/p/431770438

      3. ZeroTier月球节点配置 https://post.smzdm.com/p/allv5k6o/

      4. Drop the moon node and directly build Zerotier root server https://post.smzdm.com/p/apxkx2m7/

      作者声明,本文无关紧要,欢迎有价值朋友的理性交流和和谐讨论

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28912.html

          热门文章

          文章分类