Published on

在群晖中设置v2ray和quickconnect并存

Authors
  • avatar
    Name
    wellsleep (Liu Zheng)
    Twitter

之前在群晖的 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 也保持了绿色的对勾。

结束。