我一直用AppleTV(192.168.1.175)中的Stash作为家庭网络的代理网关使用,几年下来感觉非常稳定,通过一个命令就可以简单的切换Plex服务器的网关地址
route add default gw 192.168.1.175
route del default gw 192.168.1.175
因为Stash会强制劫持所有经过的53端口DNS请求,所以只需要切换网关,DNS请求自然就被Stash截获了,从而实现设备翻墙,同理,我的Xbox也只需要设置下网关为175,DNS默认就可以实现游戏机翻墙
但最近由于机房拔线导致基本所有中转线路都举步维艰,不少机场改为直连线路,同时升级了最新的代理协议和强推机场专属客户端,这就造成了我的机场对Stash的支持直线下降,同样的机场和订阅,用Shadowrocket就正常使用,换成Stash则节点全部超时
不得已我只好放弃在AppleTV上的Stash而改为Shadowrocket。但Shadowrocket在AppleTV作为网关时,需要客户端将其DNS指向它内置的虚拟DNS服务器(即198.18.0.2),才能正确触发FakeIP机制,而在Ubuntu里随时更改DNS的几个方法对我来说显然没有上面两个命令切换来的方便
感谢AI,问了Gemini之后它给了我以下步骤,完美解决了我的痛点
以下是完整步骤,直接复制粘贴执行
第一步:添加快捷命令到配置文件
直接在终端中运行以下这段代码(它会自动把配置追加到 ~/.bashrc 文件里,不需要手动打开编辑器):
cat << 'EOF' >> ~/.bashrc
# 开启 Shadowrocket 代理 (叠加一条优先级更高的网关)
alias proxy-on='ip route add default via 192.168.1.175 2>/dev/null; resolvectl dns enp2s0 198.18.0.2 && resolvectl domain enp2s0 "~." && echo -e "\033[32m[+] 代理开启 (网关:1.175, DNS:198.18.0.2)\033[0m"'
# 关闭代理恢复正常 (抽走代理网关,自动落回系统原网关)
alias proxy-off='ip route del default via 192.168.1.175 2>/dev/null; resolvectl revert enp2s0 && echo -e "\033[33m[-] 代理关闭 (已恢复系统默认状态)\033[0m"'
EOF
第二步:让配置立即生效
输入以下命令刷新环境变量:
source ~/.bashrc
完工!之后就可以通过下面两条命令丝滑切换翻墙模式和正常模式了
proxy-on
会有绿色字体提示。此时路由和DNS会瞬间指向AppleTV和Shadowrocket
proxy-off
会有黄色字体提示。此时网关瞬间恢复为192.168.1.3也就是我的主路由,DNS劫持也被撤销,彻底恢复正常状态
如果需要验证是否真的走代理了,可以通过这个命令
curl ipinfo.io
如果输出的IP和国家是海外节点,说明切换成功
留个记录