透明网关解锁 Apple TV 流媒体 + Homekit 中枢远程访问踩坑记
环境
- 透明网关:小米路由器 AC2100, Padavan 固件带有 V2ray 组件
- 主路由:新加坡 Singtel 1GB 家庭宽带,桥接 Newifi D2 (官网 OpenWRT 固件)
- Apple TV 4K (2021)
配置思路
首先是装宽带的时候给小哥说一声需要桥接自己拨号,小哥就会桥接让你自己用路由器拨号(后来发现和中国宽带不一样,并不是PPPoE拨号,这就引出了坑 No.1)。
桥接之后附赠的SingTel Mesh路由器就没法用了。首先需要自己准备一个路由器拨号。这里笔者用的是新三(Newifi D2)刷了 OpenWRT。装宽带的时候再三和小哥确认拨号的账号密码,小哥一脸懵逼,表示并没有这样的账号密码。我也一脸懵逼,后来插上路由器试网才发现Wan口插上从光猫网口出来的线直接就可以获取IPv4公网IP了,不需要账号密码。
坑 No.1:Padavan 的小米 AC2100 做主路由无法获取 WAN 口地址
如题。解决办法是没有办法,只能把新3拿出来做了主路由。
坑 No.2:Padavan 需要开启 AP 模式才能做透明网关(非主路由)
如题。如果不开AP模式直接把网线插 LAN 口指定 Padavan 机子为透明网关的话,是连不上网的。正确方法是从主路由插线到Padavan的随便哪个口,在 Padavan 设置界面打开 AP 模式并指定 Padavan 设备网关到主路由后,再手动指定 Apple TV 或其他设备的网关到 Padavan 设备。
坑 No.3:V2ray 解锁流媒体记得屏蔽 QUIC / IPv6
问题出在透明网关没办法解锁巴哈姆特动画疯,其他都正常。解决办法是在v2ray配置文件的routing段上加入下面这一段:
{
"network": "udp",
"outboundTag": "blocked",
"port": "80,443",
"type": "field"
}
在流媒体解锁的 outbound 加上
"domainStrategy": "UseIPv4"
坑 No.4:主路由开启 HWNAT 以达到满速
如果发现跑不满千兆的,记得打开,如题。OpenWRT在防火墙选项里就有。
坑 N0.5:SingTel Mesh 路由器先断网再切换成路由模式
SingTel Mesh 路由器只要从主路由插网线到 WAN 口就会自动切换到 Mesh 模式,LAN口没有网。 如果需要LAN口接网线,需要按如下流程操作:
- 把网线从 WAN 口拔下
- 将网线一端连电脑,一端连 SingTel Mesh 路由器的 LAN 口
- 访问 SingTel Mesh 路由器管理界面,关掉 Mesh 模式
- 重启完成后,将主路由拉出来的线接到 SingTel Mesh 路由器的 LAN 口上,务必不能接在 WAN 口上
钱够多想要组 Mesh 的大佬可以忽略这一点。
坑 N0.6: 更改 DNS 设置解决 Homekit 远程访问无响应问题
本来想 Apple TV 和 Homekit 配合达到丝滑智能家居的目的,但现实很骨感,一旦透明网关上的 V2ray 一打开,Homekit 的远程访问就失效了,或者过不了一会就失效了。
最终定位问题是出在域名 courier.push.apple.com
的解析上,按照这一 Issue 中提到的的方案成功解决如下:
修改 V2ray 配置的 DNS 部分,手动指定 courier.push.apple.com
的IP地址:
"dns": {
"queryStrategy": "UseIPv4",
"hosts":{
"courier.push.apple.com": [
"17.57.145.166",
"17.57.145.172",
"17.57.145.133",
"17.57.145.165",
"17.57.145.167"]
},
"servers": [
"..."
]
},
修改 V2ray 路由部分,添加如下路由规则在最开始的部分,注意 courier.push.apple.com
需要单独指定:
"rules": [
{
"outboundTag": "direct",
"network": "udp",
"port":"5353",
"type": "field"
},
{
"type": "field",
"ip": [
"17.0.0.0/8"
],
"outboundTag": "direct"
},
{
"outboundTag": "direct",
"domains": ["geosite:apple","domain:courier.push.apple.com"],
"type": "field"
},
......
检查入站 Sniffing 是否打开,并修改入站和出站连接的 Userlevel,防止连接被打断:
"inbounds": [
{
"port": "1099",
"listen": "0.0.0.0",
"protocol": "dokodemo-door",
"settings": {
"network": "tcp,udp",
"followRedirect": true
},
"userLevel": 1,
"tag": "redir_1099",
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {
"userLevel": 1
},
"tag": "direct",
"streamSettings": {
"sockopt": {
"mark": 255
}
}
},
...
如此一来,Apple TV 的 Homekit 中枢功能就可以正常远程访问了。
Leave a comment