家里有公网 ip ,目前路由器映射了一个端口给内网的一台服务器 A 上的 shadowsocks 入站(sing-box, 看文档是默认支持 udp 的),在家外面的终端(比如手机 B 用移动流量,使用 surge 代理回家), 通过公网访问局域网的地址192.168.10.0/24 都使用 direct 作为出站。一直这样访问家里的各项服务没发现什么问题。
最近开了另一台服务器 C ,windows 系统,部署了 sunshine (开启了 upnp),在局域网内使用 moonlight 连接 B 的桌面环境没什么问题。但是当我在外网访问时,虽然能发现/唤醒设备桌面,rtsp 握手也成功了,但是会在后面提示
"control stream establishment failed with error 35, check your firewall and port forwarding rules for ports(s): UDP47999 )的错误。
我之后尝试使用 tailscale 内网穿透,是能正常远程桌面。但我比较想弄清楚之前的方式是哪里出了问题,处于好奇。
(也尝试专门专门在路由做了 47999 端口的 udp 转发到 C ,但是没有什么效果)
有没有哪位老哥能看出来可能哪里出了问题?或者怎么排查这个问题呢?
(如果老哥帮忙解决了,可以送个 FOLLOW 邀请码,一杯咖啡奶茶什么的聊表心意 m(_ _)m 。
附录:
家里的代理服务端
singbox 的入站配置(根据官网文档,应该是默认启用 udp 支持的,虽然我不知道怎么验证)
{
"inbounds":[
{
"type": "shadowsocks",
"tag": "ss-in",
"method": "aes-128-gcm",
"password": "xxxx",
"listen": "0.0.0.0",
"listen_port": 12345,
"multiplex": {}
},
]
...
"route": {
"rules": [
{
"ip_cidr": [
"192.168.10.0/24"
],
"outbound": "direct"
},
]
}
回家的代理客户端( surge)
[Proxy]
GoHomeByA = ss, ss.example.com, 12345, encrypt-method=aes-128-gcm, password=xxxx, udp-relay=true
[Rule]
IP-CIDR,192.168.10.1/24, GoHomeByA
|