yichya / luci-app-xray

(Almost) full feature Xray client for OpenWrt
Mozilla Public License 2.0
554 stars 328 forks source link

【BUG】设置LAN Hosts Access Control,必须重启xray-core才能上网 #363

Closed ljzhsq closed 5 months ago

ljzhsq commented 7 months ago

op版本:23.05.2 luci-app-xray版本:3.1.1-1 luci-app-xray-status版本:3.1.1-1 纯净op没有安装任何其他插件。

最近遇到一个很头痛的问题,我的总路由是安装了luci-app-xray的,我想让其中一个子路由不走代理,我去Xray (preview)——LAN Hosts Access Control——LAN Hosts Access Control选项中添加了子路由的MAC,并且全部设置Disable tproxy。设置好了之后是可以正常上互联网,也不会走代理,也可以访问内网。

但是一旦我的总路由重启,子路由下面的设备就无法上互联网(提示baidu.com已拒绝链接),也无法走代理,但是却可以访问内网。如果想解决这个问题,每次都要手动在op——startup——找到xray——restart才可以让子路由变正常。请问这个是什么原因?本人菜鸟,如果需要哪些日志,请让我知道。谢谢!

更新: 貌似是bug,好像和子路由器没什么太大关系,我单独拿个设备直接接总路由器,并且LAN Hosts Access Control选项中添加了设备的MAC,也无法上互联网(提示baidu.com已拒绝链接),也无法走代理。 我之前用以前的老版本,没有出现这个问题。

yichya commented 7 months ago

但是一旦我的总路由重启,子路由下面的设备就无法上互联网,也无法走代理,但是却可以访问内网。

贴一下这个情况下主路由的 nft list ruleset

yichya commented 7 months ago

貌似是bug,好像和子路由器没什么太大关系,我单独拿个设备直接接总路由器,并且LAN Hosts Access Control选项中添加了设备的MAC,也无法上互联网(提示baidu.com已拒绝链接),也无法走代理。

这种用法我天天用啊,如果是已拒绝连接的话,贴一下这种情况下 baidu.com 的 DNS 解析到哪儿去了

yichya commented 7 months ago

不好意思老板,我是菜鸟,我以为是新版本的bug。希望老板能够指点一二。

在有问题的设备上 curl --verbose https://www.baidu.com 然后贴一下结果

(如果是 Windows 的话就 curl.exe --verbose https://www.baidu.com

yichya commented 7 months ago

上不了网的情况下

这个怎么做到每一行都截掉后半截的。。。

然后你这个地方有一个叫 utun 的接口是干啥的

yichya commented 7 months ago

呃。。。你这也不是拒绝连接啊

yichya commented 7 months ago

内容没有截掉呀,完整的

你这个显然后面少了半截的,而且每一行都整整齐齐断在这儿了,用的是啥终端啊。。。

image

不过暂时没看出来有啥问题,先按上面说的确认一下 dns 的事情

yichya commented 7 months ago

正常上网的情况下的PS

不不不,不要正常的,要挂了的

yichya commented 7 months ago

感谢大佬的快速回复!以下是无法上网时候的PS

没感觉有啥问题啊

yichya commented 7 months ago

呃呃,然后这种情况下 curl.exe --verbose https://baidu.com 长啥样

yichya commented 7 months ago

这个刚才有贴过哈

不是,大佬,域名换了,baidu.com 和 www.baidu.com 不一样的

yichya commented 7 months ago

啊这。。。把不能上网时候的主路由上的

yichya commented 7 months ago

等一下,再贴一下下面这俩,也是主路由上

yichya commented 7 months ago

呃你这个情况吧我可能明白了。。。在不能上网的情况下,在主路由上运行一下 /etc/hotplug.d/iface/01-transparent-proxy-ipset 然后

yichya commented 7 months ago

add element inet fw4 tp_spec_dv4_dg { 公网ip, 0.0.0.0/0 }

这个地方确实就不应该有 0.0.0.0/0,估计是 utun 那个设备导致的,你可以试试把它删掉

yichya commented 7 months ago

emmmmm,删完了还不能上网的状态贴一下下面几个

yichya commented 7 months ago

行吧,直接照着这个 patch 改一下 /usr/share/xray/default_gateway.uc 再试试

diff --git a/core/root/usr/share/xray/default_gateway.uc b/core/root/usr/share/xray/default_gateway.uc
index f3b0f4e..10ebd0c 100644
--- a/core/root/usr/share/xray/default_gateway.uc
+++ b/core/root/usr/share/xray/default_gateway.uc
@@ -22,7 +22,9 @@ function get_default_gateway(dump) {
         for (let j in i["route"] || []) {
             if (j["target"] == "0.0.0.0") {
                 dgs[j["nexthop"]] = true;
-                dgs[j["source"]] = true;
+                if (j["source"] != "0.0.0.0/0") {
+                    dgs[j["source"]] = true;
+                }
             }
         }
     };

还有你这怎么一会儿 192.168.2.1 一会儿 192.168.3.1 的,你上面那台 Windows 机子现在不是直接插在主路由上的嘛

yichya commented 7 months ago

但是再弱弱的问个比较小白的问题,就是为什么我修改后,再重启,修改的地方变又回去了。。。

不可能啊。。。贴一下 mount

yichya commented 7 months ago

= = 软路由啊,你当时怎么装的 luci-app-xray

yichya commented 7 months ago

你这个 overlay 叠的有点儿怪,但是如果是先叠好 overlay 再装 ipk 应该也不会开机重置,除非你改的不是 overlay 里面的文件,总之你再改一遍然后看看 /overlay/upper 里面的是不是改过了的

yichya commented 7 months ago

这样你翻一下 system log,找一下下面几个

image

最好贴截图(需要的话打马赛克或者涂黑什么的,不要复制粘贴复制一半

yichya commented 6 months ago

不知道这些信息是否可以?如果还需要其他信息,我再去截图哈

= = 先贴一下我上面要的东西

yichya commented 6 months ago

子路由在后台”Status-----System Log“中,搜索gateway,搜不到任何信息。

这个肯定没有

但是在总路由的”Status-----System Log“中,搜到了只有一个gateway的信息,我把上下文的代码截取如下:

这个只有一个是不应该的,再往前翻翻

yichya commented 6 months ago

这样,试一下改用直连的 Extra Inbound

  1. 建两个这样的 Extra Inbound(TCP 和 UDP,区分一下 Port)
image
  1. 在 LAN Hosts Access Control 里面设置成用这个
image
yichya commented 6 months ago

你要不干脆弄个那种开机之后一分钟重启一次 xray_core 的操作吧。。。着实是没见过这种问题。。。