在群晖中设置v2ray和quickconnect并存

2021-03-15 engineer

之前在群晖的 docker 中装了 v2ray,用来把群晖的文件和 dropbox 做同步。结果发现 quickconnect.to 不好使了——虽然取消掉代理服务器的设置可以暂时修好,但对 dropbox 保持同步更重要,所以一直没管它。最近有些时间,觉得还是应该把群晖官方的 ddns 解决一下,日后好扩展其他功能。于是仔细研究了一下原因后,解决如下。

事情的原因,是 v2ray docker 默认的配置文件,使当前设备所有的流量都走 proxy 渠道。因此当群晖的 ddns 找海外的 ip 测试网站要本地 ip 的时候,ip 变成了梯子的地址。因此使用 quickconnect.to 回连的时候,会自动连到梯子 ip 的 dsm 端口,自然啥也得不到。

知道了原因,只需要告诉 v2ray 不要把 quickconnect 的相关通信走梯子就好了。可偏偏并不知道 quickconnect 到底是去哪问本地 ip,试着将好多可疑的 DigitalOcean 的 ip 地址,以及和 synology 相关的域名加到 v2ray 的直连列表(修改 config.json 即可),却都依然无法改变 synology.me 域名的海外状态。
经过 github issue 开导,大伙说用 gfw 黑名单(即名单内走梯子,其余都直连)的方式可以完美解决。于是在 github 找到 v2ray 的 gfwlist 文件 h2y.dat,放到与 config.json 同级目录。
然而,运行 v2ray 容器发生报错,并且由于是在 dsm 直接运行的 docker 应用,无法看到出错的原因。反复测试发现应该是 json 配置有语法错误,使得容器启动的语法检测报告错误。但按照 v2ray的黑名单模式,在 domain 字段填写 “ext:h2y.dat:gfw” 却始终报错。百思不得其解后,发现 外置的域名文件 应该放在 V2Ray 运行文件的目录下 。再经由 github 上 一通搜索,才知道 docker 版本 v2ray 的 config.json 和运行文件不是一个目录(Windows 版的 v2rayN 明明是同一个目录!),因此群晖容器映射的 config 文件夹里放的 h2y.dat 文件无法被 v2ray 识别。
用过的人都知道群晖的 docker 容器的「终端机」有多难用,我又不想重新开容器做映射(因为还得翻教程),想想有没有办法直接把文件拷进去。突然想到只要把 h2y.dat 从 config 文件夹拷到运行目录不就好了嘛,所以打开难用的「终端机」,一次敲一行命令

cp /etc/v2ray/h2y.dat /usr/bin/v2ray/.

重启容器,quickconnect 拿到了久违的国内 ip,cloud sync 也保持了绿色的对勾。

结束。

Comments
Write a Comment