我有个ps5 fw5.50,我想自己用raspberry pi / oracle cloud / cloudflare 来自己搭设一个umtx2 以及相关的DNS(把user guide导入过去,以及屏蔽更新),请寻找合适的开源项目,或者直接跟我说我如何自己从0开始搭?
我先核实 PS5 5.50 与 umtx2 的兼容性,再找可自托管的开源项目和 DNS 配置,比较 Raspberry Pi、Oracle Cloud 和 Cloudflare 的部署方式。
Searched the web for PS5 umtx2 5.50 github, PS5 exploit host DNS user guide block updates raspberry pi github
Opened https://raw.githubusercontent.com/idlesauce/umtx2/main/host.py
Opened https://raw.githubusercontent.com/idlesauce/PS5-Exploit-Host-Self-Host-Tool/main/README.md
Searched the web for site.thekelleys.org.uk dnsmasq man address local more specific domains, site:developers.cloudflare.com pages static html build output directory custom domains, site:developers.cloudflare.com dns proxy status hostname certificate SNI
已确认:原作者的 umtx2 明确支持 5.50。User Guide 入口还需要 HTTPS 服务配合 DNS;只把域名指向 Cloudflare Pages,并不能正确接过去。我正在核对路径和屏蔽规则,准备给你一套树莓派本地部署步骤,以及 Oracle Cloud、Cloudflare 的替代方案。
Opened https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html
Opened https://github.com/idlesauce/umtx2/tree/main/document/en/ps5
Opened https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite
可以。**你的 PS5 5.50 在原作者 umtx2 的支持范围内;我建议用 Raspberry Pi 同时运行 DNS 和 HTTPS,直接从 User Guide 打开本地 umtx2。**这样部署完成后,入口不依赖云端。umtx2 原项目
下面是我核对源码后整理的方案;配置尚未在你的主机上实测。
先看项目选择:
三个平台怎么选:
- **Raspberry Pi:最适合你的完整需求。**DNS、User Guide HTTPS、umtx2 文件都放本地。
- **Oracle Cloud:可以做同样的事情。**但需要处理公网 DNS 的访问限制、云防火墙及实例防火墙。
- **Cloudflare Pages:适合托管 umtx2 网页。**普通 Pages 和域名 DNS 设置不能独立完成 User Guide 接管。
这里的关键是:**DNS 只改变目标 IP,不改变浏览器访问的域名。**PS5 请求的仍是 https://manuals.playstation.net/...。将它解析到 Pages 的 IP,并不会让 Cloudflare 按你的 xxx.pages.dev 站点提供内容;TLS 和站点绑定仍然不匹配。这是根据 HTTPS 和 Pages 自定义域名机制得出的判断。HTTPS 原理、Pages 域名绑定
下面给你一套适合长期使用的 Raspberry Pi + dnsmasq + nginx 配置。
-
准备树莓派和 umtx2 文件。
假设你安装了 Raspberry Pi OS Lite,树莓派与 PS5 在同一局域网,并在路由器上给树莓派保留了地址:
192.168.1.10
下文所有这个 IP 都替换成你自己的。建议先用网线接入,减少 AP 配置的变量。
sudo apt update
sudo apt install -y git nginx dnsmasq openssl dnsutils curl
sudo git clone https://github.com/idlesauce/umtx2.git /srv/umtx2
实际网页目录是 /srv/umtx2/document/en/ps5,上游的 Pages 部署也使用这个目录。上游部署配置
-
配置 DNS:接管手册域名,屏蔽 PlayStation 相关域名。
以下假设这是一台尚未运行 Pi-hole、AdGuard Home 或其他 DNS 服务的树莓派;已有 DNS 服务时,应把规则合入已有服务,避免争用 53 端口。
创建配置:
sudo tee /etc/dnsmasq.d/ps5.conf >/dev/null <<'EOF'
listen-address=192.168.1.10
bind-dynamic
no-resolv
server=1.1.1.1
domain-needed
bogus-priv
# User Guide 指向本地 HTTPS 服务
address=/manuals.playstation.net/192.168.1.10
local=/manuals.playstation.net/
# 广泛屏蔽 PlayStation 相关域名
address=/playstation.net/playstation.com/sonyentertainmentnetwork.com/scea.com/#
local=/playstation.net/playstation.com/sonyentertainmentnetwork.com/scea.com/
EOF
sudo dnsmasq --test
sudo systemctl enable dnsmasq
sudo systemctl restart dnsmasq
更具体的 manuals.playstation.net 规则优先于 playstation.net。# 为其他匹配域名返回 IPv4/IPv6 空地址;local= 阻止其他记录类型继续向上游查询。dnsmasq 官方说明
**这套规则会同时影响 PSN、商店等服务,不是只屏蔽更新。**原项目的 FakeDNS 也采用广泛屏蔽 PlayStation 相关域名的思路;它不是一份保证永远完整的更新服务器清单。原项目 DNS 源码
-
配置 User Guide 所需的 HTTPS。
生成本地自签名证书:
sudo install -d -m 700 /etc/nginx/ps5-tls
sudo openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /etc/nginx/ps5-tls/key.pem \
-out /etc/nginx/ps5-tls/cert.pem \
-days 3650 \
-subj "/CN=manuals.playstation.net" \
-addext "subjectAltName=DNS:manuals.playstation.net"
sudo chmod 600 /etc/nginx/ps5-tls/key.pem
创建 nginx 配置:
sudo tee /etc/nginx/conf.d/ps5.conf >/dev/null <<'EOF'
server {
listen 192.168.1.10:80;
listen 192.168.1.10:443 ssl;
server_name manuals.playstation.net;
ssl_certificate /etc/nginx/ps5-tls/cert.pem;
ssl_certificate_key /etc/nginx/ps5-tls/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
root /srv/umtx2/document/en/ps5;
index index.html;
# 将不同语言的 User Guide 路径映射到同一套文件
rewrite ^/document/[^/]+/ps5/?(.*)$ /$1 last;
location / {
try_files $uri $uri/ =404;
add_header Cache-Control "no-store";
}
}
EOF
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl restart nginx
这里保留了原项目对不同语言 User Guide 路径的处理思路。首次进入可能出现证书警告,接受后才能加载本地页面;已有自托管项目也记录了这一流程。原版 host.py、User Guide 操作说明
-
先验证,再连接 PS5。
在同一局域网内运行:
# 应返回 192.168.1.10
dig @192.168.1.10 manuals.playstation.net A +short
# 不应返回 Sony 的公网 IPv6 地址
dig @192.168.1.10 manuals.playstation.net AAAA +short
# 应返回 0.0.0.0
dig @192.168.1.10 fus01.ps5.update.playstation.net A +short
# 应返回 ::
dig @192.168.1.10 fus01.ps5.update.playstation.net AAAA +short
# 应返回 HTTP 200;这里 -k 用于接受我们自己的自签名证书
curl -kI \
--resolve manuals.playstation.net:443:192.168.1.10 \
https://manuals.playstation.net/document/en/ps5/index.html
这些检查验证 DNS 和网页服务,不能证明所有更新路径均已被封锁。
如果失败,查看:
sudo journalctl -u dnsmasq -n 50 --no-pager
sudo tail -n 50 /var/log/nginx/error.log
sudo ss -lntup
常见原因是 IP 写错、53/443 端口已被占用、无线客户端隔离,或防火墙阻止了局域网访问。需要允许 PS5 到树莓派的 UDP/TCP 53、TCP 443;80 用于普通 HTTP 访问。
-
设置 PS5。
在当前网络的高级设置中,把 DNS 改为手动:
Primary DNS:192.168.1.10
Secondary DNS:留空;界面不允许时按自托管工具文档使用 0.0.0.0
不要把 8.8.8.8 或 1.1.1.1 填作 PS5 的备用 DNS,否则会留下绕过过滤的路径。树莓派配置中的 server=1.1.1.1 则是过滤之后的上游解析器,作用不同。自托管工具的 PS5 设置说明
然后进入:
设置 → 用户指南、健康与安全及其他信息 → 用户指南
接受你这台服务器的证书提示,正常应看到 UMTX2 页面,再执行 Jailbreak。
同时关闭系统软件的自动下载、自动安装;对应选项位于“设置 → 系统 → 系统软件 → 系统软件更新和设置”。Sony 官方说明
**如果你特别在意保住 5.50,建议再在路由器上禁止 PS5 访问 WAN,仅允许它访问局域网。**这条规则要同时覆盖 IPv4、IPv6,并只针对 PS5;树莓派仍可联网维护文件。这样比单靠域名列表更可靠。局域网托管与浏览器离线缓存是两回事,上面的方案不需要先配置 AppCache。
如果改放 Oracle Cloud,网页和 DNS 配置基本相同,但要区分两个地址:
listen-address 和 nginx 的 listen:填实例网卡上的私网 IP。
address=/manuals.playstation.net/...:填 PS5 能访问的实例公网 IP。
- PS5 的主 DNS:填这个公网 IP。
在 OCI 的 NSG/Security List 和实例防火墙里,允许你家公网 IP /32 访问 UDP/TCP 53、TCP 443;需要 HTTP 时再开放 80。**不要向全互联网开放递归 DNS。**家庭公网 IP 变化后需要更新规则,或者通过家中路由器与 OCI 建 VPN。OCI 安全规则文档
如果想用 Cloudflare Pages,可以 fork idlesauce/umtx2,导入 Pages,设置:
Framework preset:None
Build command:exit 0
Build output directory:document/en/ps5
这是无需编译的静态托管方式。Cloudflare 静态站点部署说明
它适合通过浏览器入口访问自己的 https://xxx.pages.dev。若仍要从 User Guide 进入,就还需要树莓派或 OCI 接住 manuals.playstation.net:443,再提供页面或跳转到 Pages;更新屏蔽 DNS 也仍然需要单独配置。对你目前的需求,直接把全部文件放在树莓派上更省事。
oh 我其实只需要一个DNS指向 https://umtx2.pages.dev/?
**你可以不自托管 umtx2,但从 User Guide 进入的话,单独一个 DNS 还不够。**我前面给的方案确实比你的实际需求复杂了。
DNS 只能把域名解析成 IP,不能把它跳转到 https://umtx2.pages.dev/。你需要的是:
PS5 打开 User Guide
↓ 你的 DNS 将 manuals.playstation.net 指向树莓派或 OCI
你的 HTTPS 服务(443,接受自签名证书提示)
↓ 返回 HTTP 302 跳转
https://umtx2.pages.dev/
这样,你的服务器只负责 DNS、更新域名屏蔽和一个 HTTPS 跳转,不需要保存 umtx2 文件。
不能直接把 manuals.playstation.net 解析到 Cloudflare Pages 的 IP,或设成它的 CNAME:PS5 请求中的域名仍然是 manuals.playstation.net,Cloudflare 不会因此切换到你的目标站点。
如果你已经有能直接打开 https://umtx2.pages.dev/ 的浏览器入口,就连这个 HTTPS 跳转服务也不用搭了,只保留用于屏蔽更新的 DNS 即可。
可以把所有内网IP改成 192.168.86.205 再发我一下嘛?
我把配置统一改成 192.168.86.205,按你刚确认的方案,只保留 DNS 屏蔽和跳转到 umtx2 的 HTTPS 服务。
可以。以下统一使用 192.168.86.205,实现:
PS5 User Guide
→ DNS 指向 192.168.86.205
→ 本地 HTTPS 返回 302
→ https://umtx2.pages.dev/
**不需要下载 umtx2 文件;使用时 PS5 需要能访问互联网。**请先在路由器中给树莓派保留 192.168.86.205,避免 IP 变化。以下适用于 Raspberry Pi OS / Debian / Ubuntu,假设没有其他服务占用 DNS 的 53 端口。
-
安装软件。
sudo apt update
sudo apt install -y nginx dnsmasq openssl dnsutils curl
-
设置 DNS 和域名屏蔽。
sudo tee /etc/dnsmasq.d/ps5.conf >/dev/null <<'EOF'
listen-address=192.168.86.205
bind-dynamic
no-resolv
server=1.1.1.1
domain-needed
bogus-priv
# User Guide 指向本地 HTTPS 跳转服务
address=/manuals.playstation.net/192.168.86.205
local=/manuals.playstation.net/
# 广泛屏蔽 PlayStation 相关域名
address=/playstation.net/playstation.com/sonyentertainmentnetwork.com/scea.com/#
local=/playstation.net/playstation.com/sonyentertainmentnetwork.com/scea.com/
EOF
sudo dnsmasq --test
sudo systemctl enable dnsmasq
sudo systemctl restart dnsmasq
这会同时影响 PSN、商店等服务;umtx2.pages.dev 不在屏蔽范围内。更具体的手册域名规则优先,# 同时处理 IPv4、IPv6 空地址。dnsmasq 官方说明
-
生成证书并设置 HTTPS 跳转。
如果已经按上一条生成过证书,这段可以跳过:
sudo install -d -m 700 /etc/nginx/ps5-tls
sudo openssl req -x509 -nodes -newkey rsa:2048 \
-keyout /etc/nginx/ps5-tls/key.pem \
-out /etc/nginx/ps5-tls/cert.pem \
-days 3650 \
-subj "/CN=manuals.playstation.net" \
-addext "subjectAltName=DNS:manuals.playstation.net"
sudo chmod 600 /etc/nginx/ps5-tls/key.pem
然后写入 nginx 配置。如果之前已有 /etc/nginx/conf.d/ps5.conf,这条命令会将它替换为跳转配置。
sudo tee /etc/nginx/conf.d/ps5.conf >/dev/null <<'EOF'
server {
listen 192.168.86.205:80;
listen 192.168.86.205:443 ssl;
server_name manuals.playstation.net;
ssl_certificate /etc/nginx/ps5-tls/cert.pem;
ssl_certificate_key /etc/nginx/ps5-tls/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
add_header Cache-Control "no-store" always;
return 302 https://umtx2.pages.dev/;
}
}
EOF
sudo nginx -t
sudo systemctl enable nginx
sudo systemctl restart nginx
这里不保留原来的 /document/... 路径,统一跳转到 umtx2 首页。
-
验证 DNS 和跳转。
在树莓派或同一局域网的电脑上执行:
# 应返回 192.168.86.205
dig @192.168.86.205 manuals.playstation.net A +short
# 不应返回 Sony 的公网 IPv6 地址
dig @192.168.86.205 manuals.playstation.net AAAA +short
# 应返回 0.0.0.0
dig @192.168.86.205 fus01.ps5.update.playstation.net A +short
# 应返回 ::
dig @192.168.86.205 fus01.ps5.update.playstation.net AAAA +short
# 应能正常解析,地址不固定
dig @192.168.86.205 umtx2.pages.dev A +short
# 应返回 302,Location 为 https://umtx2.pages.dev/
curl -kI \
--resolve manuals.playstation.net:443:192.168.86.205 \
https://manuals.playstation.net/document/en/ps5/index.html
如果启用了防火墙,需要允许局域网访问树莓派的 UDP/TCP 53、TCP 443;80 为可选的 HTTP 入口。
-
设置 PS5。
DNS 设置:手动
主 DNS:192.168.86.205
备用 DNS:留空;不能留空时使用 0.0.0.0
不要使用公共 DNS 作为备用,否则可能绕过屏蔽。项目的网络设置说明
打开 设置 → 用户指南、健康与安全及其他信息 → 用户指南,接受你本地服务的自签名证书提示后,应跳转到 umtx2。
这份配置尚未在你的 PS5 上实测。**DNS 屏蔽不保证覆盖所有更新路径,也不会处理已经下载的更新包;系统的自动下载、自动安装选项仍应关闭。**这个方案需要 PS5 联网访问 Pages,因此不要同时套用我前面“完全禁止 PS5 访问 WAN”的建议。
等下,这里显示200是不是有问题?
$ curl -kI \
--resolve manuals.playstation.net:443:192.168.86.205
https://manuals.playstation.net/document/en/ps5/index.html
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Tue, 20 Oct 2026 09:47:13 GMT
Content-Type: text/html
Content-Length: 3773
Last-Modified: Tue, 20 Oct 2026 09:38:12 GMT
Connection: keep-alive
ETag: "6ad73684-ebd"
Cache-Control: no-store
Accept-Ranges: bytes
**对于“跳转到 umtx2”的配置,应该返回 302,所以这个 200 确实不符合预期。**你的命令没有 -L,不会自动跟随跳转,因此它不是跳转后 Pages 返回的结果。
响应里的 Last-Modified、ETag、Accept-Ranges 很像 nginx 正在直接提供静态文件。最可能仍在使用前面的本地托管配置,或者请求命中了其他 server 配置。
先检查配置文件内容:
sudo cat /etc/nginx/conf.d/ps5.conf
确认其中的 location / 已经变成:
location / {
add_header Cache-Control "no-store" always;
return 302 https://umtx2.pages.dev/;
}
然后检查并重新加载,留意是否出现报错或 conflicting server name 警告:
sudo nginx -t && sudo systemctl reload nginx
重新运行你刚才的 curl,预期看到:
HTTP/1.1 302 Moved Temporarily
Location: https://umtx2.pages.dev/
如果仍是 200,把下面命令的输出贴过来,我帮你定位是不是旧站点配置抢先匹配了:
sudo nginx -T 2>&1 | grep -nE \
'configuration file|listen |server_name |location |root |alias |return |rewrite |conflicting'
另外,这次 curl 已经通过 --resolve 强制连接 192.168.86.205,当前应排查 nginx 配置,不是 DNS。
$ sudo cat /etc/nginx/conf.d/ps5.conf
server {
listen 192.168.86.205:80;
listen 192.168.86.205:443 ssl;
server_name manuals.playstation.net;
ssl_certificate /etc/nginx/ps5-tls/cert.pem;
ssl_certificate_key /etc/nginx/ps5-tls/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
root /srv/umtx2/document/en/ps5;
index index.html;
# 将不同语言的 User Guide 路径映射到同一套文件
rewrite ^/document/[^/]+/ps5/?(.*)$ /$1 last;
location / {
try_files $uri $uri/ =404;
add_header Cache-Control "no-store";
}
}
原因找到了:当前还是本地托管配置,try_files 直接返回 umtx2 文件,所以是 200。
执行下面命令,将它替换成跳转配置:
sudo tee /etc/nginx/conf.d/ps5.conf >/dev/null <<'EOF'
server {
listen 192.168.86.205:80;
listen 192.168.86.205:443 ssl;
server_name manuals.playstation.net;
ssl_certificate /etc/nginx/ps5-tls/cert.pem;
ssl_certificate_key /etc/nginx/ps5-tls/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
add_header Cache-Control "no-store" always;
return 302 https://umtx2.pages.dev/;
}
}
EOF
sudo nginx -t && sudo systemctl reload nginx
然后验证:
curl -kI \
--resolve manuals.playstation.net:443:192.168.86.205 \
https://manuals.playstation.net/document/en/ps5/index.html
这次预期返回:
HTTP/1.1 302 Moved Temporarily
Location: https://umtx2.pages.dev/
DNS 配置不用改。
本地托管有问题吗
**本地托管没有问题,而且更符合你最初的需求。**刚才的 200 OK 对本地托管来说是正常结果;我之前判断它“不符合预期”,只是因为我们后来改成了“302 跳转到 Pages”的方案。
你现在的配置可以保留:
- User Guide 通过 DNS 指向
192.168.86.205。
- nginx 直接提供
/srv/umtx2/document/en/ps5 里的 umtx2 页面。
- DNS 继续屏蔽配置中的 PlayStation 相关域名。
- 本地文件齐全时,加载入口不依赖 Cloudflare 或外网。
**不用改成 302。**现在可以直接在 PS5 打开 User Guide,接受本地证书提示,确认是否显示 UMTX2 页面。200 已经说明网页请求成功,但是否能正常运行,还需要在 PS5 上实际验证。