SukkaW / Koolshare-Clash

:cat: Run Clash Tunnel on Koolshare OpenWrt
https://koolclash.js.org
GNU General Public License v3.0
1.33k stars 241 forks source link

[Bug Report] Support for router without WAN interface #16

Closed evianzhow closed 5 years ago

evianzhow commented 5 years ago

Bug 详情

我的软路由并不作为主路由而是作为局域网中的一台设备存在。这个软路由的 gateway 指向主路由。如果有某台设备需要支持访问【特定的网站】,将这台设备的 gateway 指向该软路由即可。所以,我的软路由上只有一个 br-lan interface。按照教程中配置好了 KoolClash 后,启用 Clash,但是:

国内链接:正常 国外链接:不正常,无法访问 通过 curl --proxy 指定 Clash 的 HTTP Port,可以发现国外链接可以访问。

预期结果:透明代理生效。

查看系统日志后发现,KoolClash 对防火墙操作的一个脚本报错,怀疑与这个有关:

https://github.com/SukkaW/Koolshare-Clash/blob/6fae29feb8d3a81ddbee02cea7352e08978973f8/koolclash/scripts/koolclash_firewall.sh#L9

以上命令在没有 WAN interface 的机器中会报错。

调试信息


======================== KoolClash 调试工具 ========================
调试信息生成于 Sat Mar 30 2019 00:00:38 GMT+0800 (CST)
当前浏览器:Safari 12
-------------------- Koolshare OpenWrt 基本信息 --------------------
固件版本: Openwrt Koolshare mod V2.30, r10402-51ad900e2c by fw867
路由器 LAN IP:172.16.1.22
------------------------ KoolClash 基本信息 ------------------------
KoolClash 版本:0.14.1-beta
KoolClash 当前状态:Clash 进程正在运行
用户指定 Clash 外部控制 Host:未改动
Chromecast(劫持 DNS)是否启用:undefined
------------------------ Clash 配置文件信息 ------------------------
Clash 原始配置文件是否存在:true
Clash 运行配置文件是否存在:true
Clash 透明代理端口:23456
Clash 是否允许局域网连接:true
Clash 外部控制监听地址:172.16.1.22:6170
--------------------- Clash 配置文件 DNS 配置 ----------------------
Clash DNS 是否启用:true
Clash DNS 解析 IPv6:false
Clash DNS 增强模式:redir-host
Clash DNS 监听:0.0.0.0:23453
KoolClash 当前 DNS 模式:1
-------------------- KoolClash 自定义 DNS 配置 ---------------------

------------------------- iptables 条目 ---------------------------
 * iptables mangle 中 Clash 相关条目

 * iptables nat 中 Clash 相关条目
   31  1972 koolclash  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           

 * iptables mangle 中 koolclash 链

 * iptables nat 中 koolclash 链
   31  1972 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set koolclash_white dst
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

 * iptables nat 中 Chromecast 相关条目

---------------------- ipset 白名单 IP 列表 ------------------------
Name: koolclash_white
Type: hash:net
Revision: 6
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 984
References: 1
Number of entries: 10
Members:
10.0.0.0/8
224.0.0.0/4
240.0.0.0/4
192.168.0.0/16
100.64.0.0/10
172.16.1.22
127.0.0.0/8
172.16.0.0/12
0.0.0.0/8
169.254.0.0/16

===================================================================

系统日志:


Fri Mar 29 18:47:58 2019 daemon.err uhttpd[4399]:  * Running script '/koolshare/scripts/koolclash_control.sh'
Fri Mar 29 18:48:00 2019 daemon.err uhttpd[4399]: sh: true: unknown operand
SukkaW commented 5 years ago

虽然 KoolClash 在大部分脚本中声明了 $wan_ip,但是实际上从未使用过这个变量。

看系统日志报错脚本语法错误,能否提供关于你正在使用的 shell 信息?KoolClash 在 ash(busybox) 上经过测试,是不会有语法错误的。

ShadowLyin commented 5 years ago

我的情况也是一样,不过我的软路由是作为二级路由,然后计算机来连接这个路由,但是也是无法访问 Google、YouTube 等网站。所以我认为这个问题应该与 WAN Interface 无关。

funison commented 5 years ago

我也是把koolshare lede作为网关和dns用,而不是主路由,也是一直无法访问楼上说的那些网站,我还以为是自己配置的问题,昨天在这里反映过,但是被大佬删除了。。希望可以查出具体问题,以便改进。

SukkaW commented 5 years ago

@ShadowLyin @funison 这个问题我已经 修复 了。 KoolClash 的访问控制没有做 fallback,导致没有设置过访问控制就无法添加 iptables。手动设置一次访问控制后重启 Clash 可以解决。

evianzhow commented 5 years ago

@SukkaW

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 Openwrt Koolshare mod V2.30, r10402-51ad900e2c by fw867
 -----------------------------------------------------
root@LEDE:~# echo $SHELL
/bin/ash
root@LEDE:~# $SHELL --version

BusyBox v1.30.1 () built-in shell (ash)

root@LEDE:~#

Since you added a fallback condition, I'd rather wait for a next release to get test on!

evianzhow commented 5 years ago

Works like charm!