首页
随笔
生活
MAC
技术
游戏
随言碎语
无公网IP+ZeroTier+树莓派实现内网穿透串流PS5
2023-03-03
yu.shi
1902
又来折腾了,有了树莓派之后发现有很多可玩的点,确实值得一搞。 近期联通不知道怎么回事突然把家里公网IP收回了,变成了一个100网段的保留地址,导致之前可以用公网IP通过chiaki串流家里PS5的功能失效,非常恼火,投诉也没办法,就是不肯给了。在多番查找下突然看到了一个方案,利用ZeroTier来组成内部局域网,进行串流。经过一上午的尝试,终于成功了。 网上的解决方案多是路由器中安装ZeroTier或NAS中安装ZeroTier或软路由中安装ZeroTier,家里没有这些支持的设备,因此使用树莓派来进行端口转发,在树莓派中安装ZeroTier,最终成功实现操作。 # 用到的工具 - 树莓派4B - macbook - ps5 - chiaki - ZeroTier # chiaki串流PS5 这里的教程比较多,在官网上安装软件即可。如何串流可参考下面的链接,跟着手把手做就行,非常详细,非常好。 [千秋网址](https://git.sr.ht/~thestr4ng3r/chiaki "千秋网址") [串流PS5教程](https://www.bilibili.com/read/cv15142226/ "串流PS5教程") ## 端口开放 按照上面配置后在家里就可以同一局域网畅玩了,但是在公网环境下是不行的,因为端口没开放(怀念有公网IP的日子,直接路由器开放端口就行了)。实现PS5串流,需要开放三个端口(我记得是三个就行的,但是实在找不到哪三个了,所以在网站找了全部的几个,都开了就行)。 UDP 987 UDP/TCP 9295 UDP 9296 UDP 9297 UDP 9302 **正常如果有公网IP的话,在路由器里直接开放就可以了,以下都可以不用看了,已经可以完美串流了。** # ZeroTier 注册ZeroTier并按照规则进行配置使用ZeroTier进行组网。这里我是看到了这个博主的分享,才想到了方案,引用一下,关于注册ZeroTier、使用ZeroTier都可以参考他的来,非常好。 [无需公网IP!zerotier内网穿透+chiaki远程串流PS5](https://api.xiaoheihe.cn/maxnews/app/share/detail/2194626http:// "无需公网IP!zerotier内网穿透+chiaki远程串流PS5") ## 树莓派安装ZeroTier 树莓派直接通过命令行安装即可 ``` curl -s https://install.zerotier.com | sudo bash # 安装后启动,把#替换为Network ID sudo zerotier-cli join ################ # 可以通过命令查看运行情况 sudo zerotier-cli listnetworks # 配置自启动 # 启动命令 sudo systemctl start zerotier-one # 停止命令 # sudo systemctl stop zerotier-one # 打开开机自启 systemctl enable zerotier-one # 关闭开机自启 # systemctl disable zerotier-one ``` ## mac上安装 安装包一路下一步就可以了 # 设置端口转发 整完了ZeroTier之后,就可以直接用IP访问树莓派了,相当于组了个局域网,非常方便。这时候就可以利用树莓派来进行端口转发,通过树莓派把PS5远程需要的端口数据转发到PS5上。 **同时也想到之前在搭建影音中心的时候是利用Sakura Frp来进行穿透的,此时可以直接访问IP了,也可以替代Sakura Frp。** [基于树莓派的家庭影音系统(KODI+ARIA2远程下载)](http://www.huaiansy.com/article/45 "基于树莓派的家庭影音系统(KODI+ARIA2远程下载)") 树莓派安装ufw,通过ufw来进行防火墙管理和路由转发,比较方便。安装就不记录了,太多了。 ## 修改配置文件 在配置前,需要将转发功能打开。 ``` # 修改ufw文件,允许接收转发的包 vim /etc/default/ufw # 把其中的DEFAULT_FORWARD_POLICY 改为 ACCEPT(默认为DROP) # 开启转发 vim /etc/sysctl.conf # 把其中的net/ipv4/ip_forward=1注释放开(默认是注释掉的) # 还有一个文件是/etc/ufw/sysctl.conf,我两个都改了 # 执行生效 sysctl -p ``` ## 配置转发规则 文件是/etc/ufw/before.rules,在 filter 之前加入规则,一定要记住不能漏了结尾的COMMIT ``` *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p tcp -m tcp -d $from_ip --dport $from_port -j DNAT --to-destination $to_ip:$to_port -A POSTROUTING -j MASQUERADE COMMIT ``` 以上为基础的规则,把 $from_ip、$from_port、$to_ip 和 $to_port 变量修改为实际值即可。大概意思就是把某一个IP的某一个端口转发到某一个IP的某一个端口。这里我直接转发到的本机上,所以就简单的多了。在这里遇到一个坑。 ``` :POSTROUTING ACCEPT [0:0] ``` 一定要加,一定要加。 :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] 这两个是允许所有的出和入,可以自己设,但是我也比较懒,都自己用的,允许所有的得了,不用考虑那么安全。 贴上我自己的配置(192.168.1.99是家里PS5的IP) ``` *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport 9295 -j DNAT --to-destination 192.168.1.99:9295 -A PREROUTING -p udp --dport 9295 -j DNAT --to-destination 192.168.1.99:9295 -A PREROUTING -p udp --dport 987 -j DNAT --to-destination 192.168.1.99:987 -A PREROUTING -p udp --dport 9296 -j DNAT --to-destination 192.168.1.99:9296 -A PREROUTING -p udp --dport 9297 -j DNAT --to-destination 192.168.1.99:9297 -A PREROUTING -p udp --dport 9302 -j DNAT --to-destination 192.168.1.99:9302 -A POSTROUTING -j MASQUERADE COMMIT ``` 在配置完成后,记得还要打开端口,不打开是不行的。 ``` sudo ufw allow XXX ``` 重启ufw ``` sudo ufw reload ``` 如果ufw没启动过,要先启动,开机自启和简单的使用就百度搜一下吧,**注意如果都沒有启动过,请选确定 ssh 端口已开放,不然就 ufw 一旦启动ssh就连不上了** ``` sudo ufw enable ``` 可以用这个命令来查看端口转发的情况,ufw里看不到的 ``` iptables -L -t nat ``` 这里还遇到了一个坑,就是ufw reload的时候手动添加的nat,在重启ufw时,不会自动清理掉,所以每次重启ufw前,你会要手动清除nat映射(尝试多了,发现超多规则,不清理都不生效了): ``` iptables -F -t nat ``` 清理完记得ufw reload ------------ 完成上述后,我通过ZeroTier分配的IP来配置在chiaki里,已经可以正常远程串流PS5,同时可以正常访问树莓派的80端口了。这个内网穿透非常的有用。记录学习。
0
yu.shi
爱生活,爱游戏,爱coding,爱工作
139214
总访问量
47
站内文章数
1728
博客开设天数
随笔点击排行
1
剧本杀《千千晚星》
(1937)
2
无公网IP+ZeroTier+...
(1903)
3
关于梦想
(1484)
4
P5R攻略两篇
(1444)
5
树莓派制作电子相册
(1380)
标签
生活
PHP
前端
公考
PS4
魂系列
树莓派
友情连接
PSN
兄弟影视
WEUI
WEUI.JS
音乐解密
无损音乐