vxiaov / vClash

Clash插件 for Koolshare系列梅林、官方改版,适用于380/384/386/388版本固件啦。安装即用(内置免费代理订阅源)。
https://vlike.work/
GNU General Public License v3.0
526 stars 62 forks source link

开启透明代理之后外网无法访问 #50

Closed iHuahua closed 1 month ago

iHuahua commented 1 month ago

Bug描述

家里有NAS,宽带有公网ipv4+ipv6,开启clash ipv6支持,模式为TPROXY+NAT,开启透明代理之后,无法从外网访问内网。

另外,我给家里几台主机在路由器里配置了hosts,开启透明代理之后,hosts无法再解析,在config dns段配置了use-hosts似乎可以解决

dns:
    use-hosts: true

hosts:
    aaa.local: 192.168.xxx.xxx

不知道上面的问题是否为配置了hosts引起的

路由器信息:

您的路由器基本信息(反馈开发者帮您分析问题用):
+---------------------------------------------------------------+
| 操作系统 : Linux router 4.1.52 aarch64 ASUSWRT-Merlin-KoolShare|
| 固件版本 : RT-AX86U:koolshare梅林改版固件:388.4|
| 内存使用 : free: 381.27 MB,total: 912.07 MB,usage:  58.20%|
| 磁盘空间 : free: 54873.20 MB,total: 57943.94 MB,usage:   0.18%|
+---------------------------------------------------------------+
|>> vClash当前正在使用的软件版本:                                  |
|              vClash : v2.15.16                                |
/koolshare/scripts/clash_control.sh: line 1308: clash: not found
|       clash_premium :                                         |
|                  yq : v4.44.1                                 |
|                  jq : jq-1.7.1                                |
|>> vClash初始安装包自带的软件版本(分析是否个人更改过):                |
|              vClash : v2.15.16                                |
|       clash_premium : 2023.08.17                              |
|                  yq : 4.13.2                                  |
|                  jq : jq-1.5                                  |
+---------------------------------------------------------------+
vClash的转发规则,分析转发规则是否正常:
IPv4 地址配置 NAT 规则:
+---------------------------------------------------------------+
IPv4 地址配置 mangle 规则:
+---------------------------------------------------------------+
IPv6 地址配置 mangle 规则:
+---------------------------------------------------------------+

升级2.15.16之后,总报 /koolshare/scripts/clash_control.sh: line 1308: clash: not found 这个错误,现在的包这么大,AX86U这种路由器已经没法直接安装了,作者是否考虑把原来和clash和meta版拆封成两个包

Awkee commented 1 month ago

/koolshare/scripts/clash_control.sh: line 1308: clash: not found 这个错误,我才注意到,是 clash内核的路径配置问题,不影响使用, v2.5.17 版本修复了路径问题。

你现在的iptables 规则都没有了,应该是出了什么问题。

我在 v2.5.17 版本只包含了一个 clash 内核,安装包缩小了一些。 你可以重新安装一下, 安装日志发一下,然后启动日志也发出来,分析一下问题。

iHuahua commented 1 month ago

/koolshare/scripts/clash_control.sh: line 1308: clash: not found 这个错误,我才注意到,是 clash内核的路径配置问题,不影响使用, v2.5.17 版本修复了路径问题。

你现在的iptables 规则都没有了,应该是出了什么问题。

我在 v2.5.17 版本只包含了一个 clash 内核,安装包缩小了一些。 你可以重新安装一下, 安装日志发一下,然后启动日志也发出来,分析一下问题。

iptables规则没有是因为我把透明代理关掉了,一打开就完全无法从外网访问内网的ipv6设备了,连路由器转发的ipv4端口到NAS也不通了

您的路由器基本信息(反馈开发者帮您分析问题用):
+---------------------------------------------------------------+
| 操作系统 : Linux router 4.1.52 aarch64 ASUSWRT-Merlin-KoolShare|
| 固件版本 : RT-AX86U:koolshare梅林改版固件:388.4|
| 内存使用 : free: 350.36 MB,total: 912.07 MB,usage:  61.59%|
| 磁盘空间 : free: 54873.14 MB,total: 57943.94 MB,usage:   0.18%|
+---------------------------------------------------------------+
|>> vClash当前正在使用的软件版本:                                  |
|              vClash : v2.15.16                                |
/koolshare/scripts/clash_control.sh: line 1308: clash: not found
|       clash_premium :                                         |
|                  yq : v4.44.1                                 |
|                  jq : jq-1.7.1                                |
|>> vClash初始安装包自带的软件版本(分析是否个人更改过):                |
|              vClash : v2.15.16                                |
|       clash_premium : 2023.08.17                              |
|                  yq : 4.13.2                                  |
|                  jq : jq-1.5                                  |
+---------------------------------------------------------------+
vClash的转发规则,分析转发规则是否正常:
IPv4 地址配置 NAT 规则:
-A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 1053
-A OUTPUT -p udp -m udp --dport 53 -j REDIRECT --to-ports 1053
+---------------------------------------------------------------+
IPv4 地址配置 mangle 规则:
-N clash_DIVERT
-N clash_XRAY
-N clash_XRAY_MASK
-A PREROUTING -p udp -m socket -j clash_DIVERT
-A PREROUTING -p tcp -m socket -j clash_DIVERT
-A PREROUTING -p udp -j clash_XRAY
-A PREROUTING -p tcp -j clash_XRAY
-A OUTPUT -p udp -j clash_XRAY_MASK
-A OUTPUT -p tcp -j clash_XRAY_MASK
-A clash_DIVERT -j MARK --set-xmark 0x1/0xffffffff
-A clash_DIVERT -j ACCEPT
-A clash_XRAY -p udp -m udp --dport 53 -j RETURN
-A clash_XRAY -p udp -m udp --sport 53 -j RETURN
-A clash_XRAY -m set --match-set localnet4 dst -j RETURN
-A clash_XRAY -m mark --mark 0xff -j RETURN
-A clash_XRAY -p udp -j TPROXY --on-port 3330 --on-ip 127.0.0.1 --tproxy-mark 0x1/0xffffffff
-A clash_XRAY -p tcp -j TPROXY --on-port 3330 --on-ip 127.0.0.1 --tproxy-mark 0x1/0xffffffff
-A clash_XRAY_MASK -p udp -m udp --dport 53 -j RETURN
-A clash_XRAY_MASK -p udp -m udp --sport 53 -j RETURN
-A clash_XRAY_MASK -m set --match-set localnet4 dst -j RETURN
-A clash_XRAY_MASK -m mark --mark 0xff -j RETURN
-A clash_XRAY_MASK -p udp -j MARK --set-xmark 0x1/0xffffffff
-A clash_XRAY_MASK -p tcp -j MARK --set-xmark 0x1/0xffffffff
+---------------------------------------------------------------+
IPv6 地址配置 mangle 规则:
-N clash_DIVERT
-N clash_XRAY6
-N clash_XRAY6_MASK
-A PREROUTING -p udp -m socket -j clash_DIVERT
-A PREROUTING -p tcp -m socket -j clash_DIVERT
-A PREROUTING -p udp -j clash_XRAY6
-A PREROUTING -p tcp -j clash_XRAY6
-A OUTPUT -p udp -j clash_XRAY6_MASK
-A OUTPUT -p tcp -j clash_XRAY6_MASK
-A clash_DIVERT -j MARK --set-xmark 0x1/0xffffffff
-A clash_DIVERT -j ACCEPT
-A clash_XRAY6 -m set --match-set localnet6 dst -j RETURN
-A clash_XRAY6 -m mark --mark 0xff -j RETURN
-A clash_XRAY6 -p udp -j TPROXY --on-port 3330 --on-ip ::1 --tproxy-mark 0x1/0xffffffff
-A clash_XRAY6 -p tcp -j TPROXY --on-port 3330 --on-ip ::1 --tproxy-mark 0x1/0xffffffff
-A clash_XRAY6_MASK -m set --match-set localnet6 dst -j RETURN
-A clash_XRAY6_MASK -m mark --mark 0xff -j RETURN
-A clash_XRAY6_MASK -p udp -j MARK --set-xmark 0x1/0xffffffff
-A clash_XRAY6_MASK -p tcp -j MARK --set-xmark 0x1/0xffffffff
+---------------------------------------------------------------+
iHuahua commented 1 month ago

另外,我发现我的路由器怎么弄那个Meta版本都没用,都快怀疑人生了。另外再请教一下,我本地有hosts配置的主机名,更合理一点的办法应该怎么玩啊?我给nas和路由等设备都在路由里加了hosts名,访问起来方便一点,即便是将来换op也不用再改其他的

Awkee commented 1 month ago

问题一个个说:

  1. hosts名称解析问题:可以在clash配置中启用host并添加相关名称映射应该就可以了。
  2. IPv6访问内网设备问题: 先建议你使用NAT模式开启IPv6透传,问题就可以解决,通过IPv6从外网访问内网应该就可以了。
  3. 关于Meta版本内核问题: 没深入研究代码,但Meta和原版Clash在DNS解析上应该是不同的,Meta版本可以直接使用TPROXY模式,而ClashPremium内核就建议使用TPROXY+NAT模式,这两个模式也是针对两个内核的差异而产生的。

简而言之,给你的建议是,暂时使用NAT模式凑合用,我自己再调试一下关于IPv6地址内网透传规则。

Awkee commented 1 month ago

新版本 v2.5.18 中新增了 IPv6 端口放行规则,用于解决外网通过IPv6公网地址访问内网主机服务问题。

iHuahua commented 1 month ago

老哥这效率高得可怕啊,说弄就弄好了。那个XD管理似乎有一点不对劲,设置页面不正常,随便选一个东西就报:

Cannot read properties of undefined (reading 'enable')

另外,每次更新所有设置都覆盖了也有一丢丢蓝瘦 T_T!

iHuahua commented 1 month ago

问题一个个说:

  1. hosts名称解析问题:可以在clash配置中启用host并添加相关名称映射应该就可以了。
  2. IPv6访问内网设备问题: 先建议你使用NAT模式开启IPv6透传,问题就可以解决,通过IPv6从外网访问内网应该就可以了。
  3. 关于Meta版本内核问题: 没深入研究代码,但Meta和原版Clash在DNS解析上应该是不同的,Meta版本可以直接使用TPROXY模式,而ClashPremium内核就建议使用TPROXY+NAT模式,这两个模式也是针对两个内核的差异而产生的。

简而言之,给你的建议是,暂时使用NAT模式凑合用,我自己再调试一下关于IPv6地址内网透传规则。

dns:
    use-hosts: true

hosts:
    aaa.local: 192.168.xxx.xxx

所以这个套路是问题 解答1 里的正确姿势是吗?