我一直用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和国家是海外节点,说明切换成功

留个记录

最后修改:2026 年 04 月 16 日
如果觉得我的文章对你有用,请随意赞赏