• 游啊游
  • 信仰
  • 原点
  • 清明
  • 关不上的窗
  • 雨一直下-古筝
  • 你的样子
  • Sofía
  • Suddenly
  • Traveling Light
  • 城南花已开
  • 简单与秋夜
  • 最美的期待
Oo笑容太甜oO/

NAS之黑群晖捣鼓手记三:内网穿透篇


这一篇要讲的东西比较多,穿透的方式也比较多样。

一、总体介绍

总的来说,分这么几类:

  • 1.动态域名DDNS

一是ipv4+端口转发。如果有ipv4公网的ip,尽管ip可能会变化,但可以使用动态域名,定期检测ip变化,并将域名始终指向新的公网ipv4。但指向的公网ipv4其实是光猫或者路由器设备,还不是内网提供服务的设备。因此要在光猫或者路由器上做端口转发,将访问光猫或者路由器(公网ipv4)特定端口的流量转发到内网提供服务设备的ip及端口上。
二是ipv6。ipv6情况下,一般内网提供服务的设备已经获得了独一无二的ipv6公网地址,无需端口转发,直接访问ipv6+端口即可。加端口时,ipv6地址要用方括号括起来,如http://[ipv6地址]:端口。

  • 2.第三方服务器流量中转

比较流行的是frp花生壳SakuraFRP。frp需要公网服务器,并搭建frp服务,服务器要钱啊。花生壳有免费的,但限制带宽。SakuraFRP也免费,但我试用了非常不稳定。

  • 3.虚拟组网或者说P2P打洞

常见的有ZerotierTailscalewireguardopenVPN,小众的有openp2p星空组网神卓互联Smartgate等等。
利用SDWAN技术、P2P隧道之类的技术,将不同的设备组成虚拟局域网。这样的好处是,真的跟局域网一样!不仅可以web访问、还可以smb、ssh,不限端口。如果P2P打洞成功,就是直连模式,还可以跑满带宽!还有一个重要的好处,那就是安全,与DDNS不同,群晖不会暴露在公网上。frp等内网穿透一般只穿透某个端口,一个端口一条隧道,而虚拟组网是所有端口可用。

  • 4.远程桌面

在内网开一台windows。然后通过向日葵、todesk之类的远控软件,通过windows为跳板机访问内网服务。
当然,如果黑群晖性能较强,可以再黑裙里开一台windows虚拟机,专门用于被远控。
另外,TeamViewer有群晖插件,windows都不用开,可非商业化使用。

二、DDNS-GO

安装DDNS-GO套件
我有腾讯云域名,根据文档获取SecretId、SecretKey,
设置二级域名指向群晖(其实不用设,domain填上就行,DDNS-Go自动设置解析)
关键:
1.运营商开通了ipv6(现在一般都开通了)
2.光猫、路由器设置了ipv6
3.群晖有外网ipv6地址(前往https://ipw.cn/查询)
4.光猫防火墙放开ipv6spi 看这
5.访问端的网络也要支持ipv6,访问端防火墙不能限制端口,例如我公司防火墙就不能带端口访问其他地址。
好处是,没有带宽限制!!无需内网穿透服务器中转流量!!简单好用、稳定!!
NAS之黑群晖捣鼓手记三:内网穿透篇

三、Tailscale

群晖安装Tailscale套件,建议用微软账户登录。然后访问端也安装启动Tailscale,这样访问端和群晖在同一Tailscale局域网内。查看群晖的Tailscale局域网地址,然后访问即可。
NAS之黑群晖捣鼓手记三:内网穿透篇
NAS之黑群晖捣鼓手记三:内网穿透篇

四、zerotier

安装矿神的zerotier套件 https://imnks.com/3175.html
没有GUI界面,按以下命令操作:
SSH执行修复
sudo sed -i 's/package/root/g' /var/packages/zerotier/conf/privilege
运行,XXXXXXXX是Network ID
cd /var/packages/zerotier/target/bin
./zerotier-one -q join XXXXXXXX
显示:200 join OK,表示连接成功,建议重启下系统

ZeroTier管理网页上误删除,导致无法再自动加入
获取Address名称,Manually Add Member里面填好加入网络
cut -d':' -f1 /var/packages/zerotier/var/identity.public
NAS之黑群晖捣鼓手记三:内网穿透篇
另外,docker方式运行zerotier参考
https://docs.zerotier.com/synology/

五、星空组网

群辉直接用矿神源安装套件,或去星空组网官网下载spk手动安装
NAS之黑群晖捣鼓手记三:内网穿透篇
去官网管理后台设置客户端的账户、密码
NAS之黑群晖捣鼓手记三:内网穿透篇
然后就可以畅通无阻了
NAS之黑群晖捣鼓手记三:内网穿透篇

六、openp2p

NAS之黑群晖捣鼓手记三:内网穿透篇
在群辉docker上拉取openp2p镜像,然后创建容器,网络类型host,填上注册后获取的token
NAS之黑群晖捣鼓手记三:内网穿透篇
Windows、Mac、Linux、Android均有客户端
NAS之黑群晖捣鼓手记三:内网穿透篇
组成虚拟网络
NAS之黑群晖捣鼓手记三:内网穿透篇

七、openVPN

openVPN是老牌、开源的VPN,功能强大。由于openVPN服务器必须公网可访问,所以在群晖上部署要使用端口转发。
首先在官网下载安装对应版本的VPN Server套件
设置openVPN
NAS之黑群晖捣鼓手记三:内网穿透篇
NAS之黑群晖捣鼓手记三:内网穿透篇
导出配置文件,用记事本打开VPNConfig.ovpn,修改其中的YOUR_SERVER_IP为你的服务器地址或域名
在路由器(光猫桥接)或者光猫(光猫拨号)中做好端口转发,例如我移动光猫
NAS之黑群晖捣鼓手记三:内网穿透篇
下载openVPN connect客户端,导入配置文件
NAS之黑群晖捣鼓手记三:内网穿透篇
NAS之黑群晖捣鼓手记三:内网穿透篇
输入群晖的用户名和密码
NAS之黑群晖捣鼓手记三:内网穿透篇
windows和android界面相似
NAS之黑群晖捣鼓手记三:内网穿透篇

八、WireGuard

参见:群晖 920+ DSM7 安装 WireGuard 客户端

  • 1.服务端

WireGuard与openVPN一样,服务端需要公网,其他客户端可以连接上。
首先是在群晖上部署服务端。用的docker部署wg-easy.(weejewel/wg-easy
或xiaobe/wg-easy镜像)。注意要做好相关端口的转发。
可用docker compose或者 docker run 命令:

docker run -d \
  --name=wg-easy \
  -e WG_HOST=(服务器公网 IP,建议是DDNS域名) \
  -e PASSWORD=(WebUI 管理密码) \
  -e WG_DEFAULT_ADDRESS=10.0.8.x(虚拟网络网段,不要和你路由器的LAN网段冲突)\
  -e WG_DEFAULT_DNS=223.5.5.5(DNS 解析,这行可选) \
  -e WG_ALLOWED_IPS=10.0.8.0/24 (允许的网段,再加上你的LAN网段,用半角逗号隔开)(访问目标的路由网段,访问这个网段的流量会走隧道)\
  -e WG_PERSISTENT_KEEPALIVE=25 \
  -v ~/.wg-easy:/etc/wireguard (这个路径注意修改)\
  -p 51820:51820/udp (可以修改成你想用的端口)\
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  weejewel/wg-easy

比如我的

docker run -d \
  --name=wg-easy \
  -e WG_HOST=DDNS域名 \
  -e PASSWORD=webUI密码 \
  -e WG_DEFAULT_ADDRESS=192.168.2.x \
  -e WG_ALLOWED_IPS=192.168.2.0/24,192.168.1.0/24 \
  -e WG_PERSISTENT_KEEPALIVE=25 \
  -v /volume1/docker/wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --restart unless-stopped \
  ghcr.io/wg-easy/wg-easy

【2024.9.21更新】新的wg-easy容器,不使用PASSWORD参数,改用PASSWORD_HASH,
通过以下命令获取

docker run -it ghcr.io/wg-easy/wg-easy wgpw YOUR_PASSWORD
PASSWORD_HASH='$2b$12$coPqCsPtcFO.Ab99xylBNOW4.Iu7OOA2/ZIboHN6/oyxca3MWo7fW' // literally YOUR_PASSWORD

-e PASSWORD_HASH=$2a$12$X82UY0J/JJllB2m65ksmsOCN0jsMlvvMKyxfJV7tBoTk3avaerFVm \

启动容器后,webUI地址就是 http://ip或域名:51821,访问打开 wg-easy 管理界面,输入密码。
第一次进入 Clients 列表应该为空,这时候点击 New 按钮创建一个 Client,输入名字即创建成功
NAS之黑群晖捣鼓手记三:内网穿透篇

关于服务端docker的更新

sudo -i
docker stop wg-easy
docker rm wg-easy
docker pull ghcr.io/wg-easy/wg-easy
  • 2.客户端

在列表中找到刚刚创建好的配置,点击右边下载按钮,会下载一份 xxx.conf 的配置文件,将该文件导入到 WireGuard 客户端即可连上。
首先,设置群晖客户端。在矿神源中找到套件并安装
NAS之黑群晖捣鼓手记三:内网穿透篇
需要root权限启动:请安装SimplePermissionManager(授权管理器)套件并激活它。
或SSH修复权限,仅对本次安装有效(Or SSH repair permission,valid only now):

sudo sed-i's/package/root/g'/var/packages/WireGuard/conf/privilege

将刚才下载的wg-easy 配置文件复制到群晖目录 /etc/wireguard/ 下面,重命名为 wg0.conf
将其中的 DNS 一项删除,如DNS 114.114.114.114,将该行删除。因为群晖缺少对应的功能,如果不删除,会导致连接有问题。
AllowedIPs如有192.168.1.0/24启动会出错,于是删掉就剩192.168.2.0/24。
Endpoint = DDNS域名:51820,由于我没有NAT回流,内网无法访问DDNS域名:51820,于是改成内网地址
Endpoint = 192.168.1.18:51820
如下:

[Interface]
PrivateKey = XXXX
Address = 192.168.2.2/24

[Peer]
PublicKey = XXXX
PresharedKey = XXXX
AllowedIPs = 192.168.2.0/24
PersistentKeepalive = 25
Endpoint = 192.168.1.18:51820

配置文件复制到群晖目录 /etc/wireguard/ 后,启动

# 启动
sudo wg-quick up wg0
# 关闭
sudo wg-quick down wg0

查看连接状态

sudo wg show wg0

显示结果,表示群晖客户端已经连上

interface: wg0
  public key: t+zfOR6/SjG9tKklCCMHge*******************=
  private key: (hidden)
  listening port: 43671

peer: RbSXDlNexcSyW22aPILAVWrZ*******************=
  preshared key: (hidden)
  endpoint: 192.168.1.18:51820
  allowed ips: 192.168.2.0/24
  latest handshake: 49 seconds ago
  transfer: 9.08 MiB received, 164.09 MiB sent
  persistent keepalive: every 25 seconds

设置开机启动,群晖上面该命令和 Linux 的有区别,注意区分

# 开启
sudo wg-autostart enable wg0
# 关闭
sudo wg-autostart disable wg0

windows或者手机客户端操作类似,就是导入wg-easy下载的配置文件,注意Endpoint = DDNS域名:51820
NAS之黑群晖捣鼓手记三:内网穿透篇
NAS之黑群晖捣鼓手记三:内网穿透篇

九、easytier

矿神源中安装easytier套件
修改参数并保存重启套件

instance_name = "default"
instance_id = "b000a7aa-c61a-4cc5-97d9-3a79cd9a878c"
ipv4 = "10.144.144.1"
dhcp = false
listeners = [
    "tcp://0.0.0.0:11010",
    "udp://0.0.0.0:11010",
    "wg://0.0.0.0:11011",
    "ws://0.0.0.0:11011/",
    "wss://0.0.0.0:11012/",
]
exit_nodes = []
peer = []
rpc_portal = "127.0.0.1:15888"

[network_identity]
network_name = "网络名称"
network_secret = "网络秘钥"

[[proxy_network]]
cidr = "192.168.1.0/24"

[flags]
default_protocol = "tcp"
dev_name = ""
enable_encryption = true
enable_ipv6 = true
mtu = 1380
latency_first = false
enable_exit_node = false
no_tun = false
use_smoltcp = false
foreign_network_whitelist = "*"
disable_p2p = false
relay_all_peer_rpc = false

easytier是去中心化的。其他客户端可与群晖这个连接即可(群晖开放公网端口映射)

十、lucky

是一个集成了DDNS-GO动态域名、反向代理(Web服务)、端口转发、网络唤醒于一体的应用。
官方文档:https://lucky666.cn/

十一、SakuraFRP

由于带宽等原因,流量需经第三方服务器中转,但第三方服务器可能拥挤,不推荐
1.启动套件填入访问秘钥,开启WebUI和远程管理
NAS之黑群晖捣鼓手记三:内网穿透篇
NAS之黑群晖捣鼓手记三:内网穿透篇
2.官网新建隧道
NAS之黑群晖捣鼓手记三:内网穿透篇
3.回群晖SakuraFRP套件,把建好的隧道拖到+号,就穿透好了,查看日志的ip或域名即可访问。
NAS之黑群晖捣鼓手记三:内网穿透篇
4.在外网不知道群晖ip和域名可在官网进行远程管理查看
NAS之黑群晖捣鼓手记三:内网穿透篇

十二、远控win做跳板或安装teamviewer套件直接远控群晖

NAS之黑群晖捣鼓手记三:内网穿透篇

十三、添加ssl证书,实现对群晖HTTPS加密访问

http是明文,不安全,建议开启https。
在安全性-证书-新增或替换原有证书。然后就可以https访问群晖,端口填5001。
NAS之黑群晖捣鼓手记三:内网穿透篇
另外,也可以用lucky利用ACME申请let's Encrypt证书

最后,来张我的全家福
NAS之黑群晖捣鼓手记三:内网穿透篇

留下一条评论

暂无评论