这一篇要讲的东西比较多,穿透的方式也比较多样。
一、总体介绍
总的来说,分这么几类:
- 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打洞
常见的有Zerotier、Tailscale、wireguard、openVPN,小众的有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,访问端防火墙不能限制端口,例如我公司防火墙就不能带端口访问其他地址。
好处是,没有带宽限制!!无需内网穿透服务器中转流量!!简单好用、稳定!!
三、Tailscale
群晖安装Tailscale套件,建议用微软账户登录。然后访问端也安装启动Tailscale,这样访问端和群晖在同一Tailscale局域网内。查看群晖的Tailscale局域网地址,然后访问即可。
四、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
另外,docker方式运行zerotier参考
https://docs.zerotier.com/synology/
五、星空组网
群辉直接用矿神源安装套件,或去星空组网官网下载spk手动安装
去官网管理后台设置客户端的账户、密码
然后就可以畅通无阻了
六、openp2p
在群辉docker上拉取openp2p镜像,然后创建容器,网络类型host,填上注册后获取的token
Windows、Mac、Linux、Android均有客户端
组成虚拟网络
七、openVPN
openVPN是老牌、开源的VPN,功能强大。由于openVPN服务器必须公网可访问,所以在群晖上部署要使用端口转发。
首先在官网下载安装对应版本的VPN Server套件
设置openVPN
导出配置文件,用记事本打开VPNConfig.ovpn,修改其中的YOUR_SERVER_IP为你的服务器地址或域名
在路由器(光猫桥接)或者光猫(光猫拨号)中做好端口转发,例如我移动光猫
下载openVPN connect客户端,导入配置文件
输入群晖的用户名和密码
windows和android界面相似
八、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,输入名字即创建成功
关于服务端docker的更新
sudo -i
docker stop wg-easy
docker rm wg-easy
docker pull ghcr.io/wg-easy/wg-easy
- 2.客户端
在列表中找到刚刚创建好的配置,点击右边下载按钮,会下载一份 xxx.conf 的配置文件,将该文件导入到 WireGuard 客户端即可连上。
首先,设置群晖客户端。在矿神源中找到套件并安装
需要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
九、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和远程管理
2.官网新建隧道
3.回群晖SakuraFRP套件,把建好的隧道拖到+号,就穿透好了,查看日志的ip或域名即可访问。
4.在外网不知道群晖ip和域名可在官网进行远程管理查看
十二、远控win做跳板或安装teamviewer套件直接远控群晖
十三、添加ssl证书,实现对群晖HTTPS加密访问
http是明文,不安全,建议开启https。
在安全性-证书-新增或替换原有证书。然后就可以https访问群晖,端口填5001。
另外,也可以用lucky利用ACME申请let's Encrypt证书
暂无评论