OpenClash
OpenClash copied to clipboard
[Feature] fakeIP模式下访问控制也有“不走代理的局域网设备 IP”
Verify Steps
- [X] Tracker 我已经在 Issue Tracker 中找过我要提出的问题
- [X] Need 当前 OpenClash 并不包含该功能特性或者还不完善
- [X] Framework 这是 OpenClash 应包含的特性, 并非 Clash 特性
- [X] Meaningful 我提交的不是无意义的 催促更新或修复 请求
Describe the Feature
fakeIP模式下,如果DNS不做处理的话是不应该将某个SrcIP通过iptables跳过clash直接进入公网的 #2505 。但是如果用户有能力自行处理好这些完全不进入clash的Src设备的DNS,在fakeIP模式下添加与redir-host同样的访问控制功能还是非常有意义的。
例如局域网内的游戏机、加速盒等设备就更适合跳过clash直接进入公网,大量UDP数据包经过clash既增加了延迟也造成了无意义的性能浪费,另一方面也能避免ICMP、UDP等流量经过clash处理后导致traceroute、加速器等功能异常。
搜到的几个相关issue #1751 #2357
Describe the Solution
将redir-host访问控制里的局域网设备黑白名单相关iptables代码复用至fakeIP模式下,可以考虑放到默认隐藏的高级设置里(如同DNS高级设置那样)
Describe Alternatives
自行修改启动脚本添加iptables规则,来实现“即使fakeIP模式下也可以让某个局域网IP完全不走clash”的目的。
Additional Context
如果开发者认为没有必要添加此功能的话,还请赐教应该在哪张表哪条链里添加哪些iptables来实现绕过。 目前是fakeIP+TUN模式,不知直接照搬redir-host模式下的是否可行? 如果可行还请复制相关代码行数链接,能力有限不足以分辨,还望海涵😊
期待
同求
一个暂时可行的简易替代方案:
自行在openclash启动脚本/etc/init.d/openclash
中的set_firewall()
函数部分的最后手动加入需要执行的iptables,例如本issue的需求在使用TUN模式时就可以通过下述命令实现,其中192.168.1.2/30
为跳过进入clash的IP-CIDR,此IP范围内的主机需要为其设置标准DNS以避免clash的fakeIP影响。
iptables -t mangle -I openclash -s 192.168.1.2/30 -j RETURN
如果是普通的增强模式(即通过iptables重定向流量)则应该修改上述命令为NAT表
最后注意,升级openclash会覆盖修改后的启动脚本,因此请不要升级或升级后重新修改。
这似是个一直存在的小众需求?之前没用TUN所以查到了普通增强模式的iptables https://github.com/vernesong/OpenClash/issues/1219 在此记录下:
iptables -t nat -I openclash -s 192.168.3.230/32 -j RETURN
一个暂时可行的简易替代方案: 自行在openclash启动脚本
/etc/init.d/openclash
中的set_firewall()
函数部分的最后手动加入需要执行的iptables
是说在同一个{}内,结尾}号之前吗?比如改成这样:
set_firewall(){
……
……
#端口转发
config_load "firewall"
config_foreach firewall_redirect_exclude "redirect"
config_foreach firewall_rule_exclude "rule"
#跳过特定局域网IP:192.168.10.233
#Fake-IP(TUN)模式
iptables -t mangle -I openclash -s 192.168.10.233/32 -j RETURN
#Fake-IP(增强)模式
iptables -t nat -I openclash -s 192.168.10.233/32 -j RETURN
}
我也有类似的需求,希望在fake-ip模式下,使用“走代理的局域网设备 IP”
同求一个IPv6下的“不走代理的局域网设备” 遇到这样的问题:Fake-IP下代理IPv6,访问测速网址得到本机的IPv6地址是br-lan的地址::1,无论用哪个内网设备都一样。且Fake-IP下必须代理IPv6,否则不能访问任何IPv6网站。 而用Redir-Host模式则可不代理IPv6获得本机的真实IPv6地址。
有同样的需求 希望能够加入此功能@vernesong
我open clash 开启的fake IP模式,想要让下级路由(ip是192.168.123.238)绕过clash,在openclash启动脚本/etc/init.d/openclash中的set_firewall()函数部分的最后手动加入以下需要执行的iptables
#跳过特定局域网IP:192.168.123.238
#Fake-IP(TUN)模式 iptables -t mangle -I openclash -s 192.168.123.238/32 -j RETURN
#Fake-IP(增强)模式 iptables -t nat -I openclash -s 192.168.123.238/32 -j RETURN
这样操作正确吗?我发现这么添加以后这个下级路由都没法上网了,请教各位这么设置是不是有什么错误?
一个暂时可行的简易替代方案: 自行在openclash启动脚本
/etc/init.d/openclash
中的set_firewall()
函数部分的最后手动加入需要执行的iptables是说在同一个{}内,结尾}号之前吗?比如改成这样:
set_firewall(){ …… …… #端口转发 config_load "firewall" config_foreach firewall_redirect_exclude "redirect" config_foreach firewall_rule_exclude "rule" #跳过特定局域网IP:192.168.10.233 #Fake-IP(TUN)模式 iptables -t mangle -I openclash -s 192.168.10.233/32 -j RETURN #Fake-IP(增强)模式 iptables -t nat -I openclash -s 192.168.10.233/32 -j RETURN }
兄弟,你的问题解决了吗?
此IP范围内的主机需要为其设置标准DNS以避免clash的fakeIP影响。这句话什么意思,iptables 加了 后指定局域网ip无法上网了
有个不走wan ip是什么意思,我也想控制局域网ip代理
redir host模式老是dns污染
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 5 days
v0.45.83版本, 当*本地 DNS 劫持 选择 “使用防火墙转发”时,fakeIP模式下访问控制有“不走代理的局域网设备 IP” 的选项了。但是,它并没有起作用。依然所有的ip都进了clash。而redir-host模式下,“不走代理的局域网设备 IP” 选项是有作用的。
这怎么就自动关闭了,还没解决吧, 上面说的手动改防火墙我搞来搞去总容易断网,而且升级会失效, 现在都只能旁路由使用openclash了,
关注一下,我也需要这个功能。
升级,改DNS劫持为防火墙就有了
升级,改DNS劫持为防火墙就有了
多谢。已经升级了。发现有这个模式了。 测试看看有没有问题。
我也有类似的需求,希望在fake-ip模式下,使用“走代理的局域网设备 IP”
强烈推荐开发此项功能!局域网指定ip列表走代理,才是最方便管理的。不走代理的数量太多写规则也麻烦许多不好管理。
内核版本 v1.17.0 Fake-IP 模式下--插件设置--DNS设置--- 红字 本地DNS劫持 改为使用防火墙转发 在黑白名单里能出现 不走代理的局域网LAN IP/MAC 选项。 红字 本地DNS劫持 “推荐使用 Dnsmasq 转发” 下并没有出现过滤
上游已经弃坑的“Redir-Host模式” 也就是如下config 在Dnsmasq 转发下能过滤“不走代理的局域网LAN IP/MAC” enhanced-mode: fake-ip fake-ip-filter:
- '+.*'
搜索尝试以下 方案
Fake-IP 模式下 本地DNS劫持 “使用 Dnsmasq 转发”
config.yaml 添加 - SRC-IP-CIDR,192.168.2.10/32,DIRECT .2.10为本机地址
观察到 .2.10 开启 Clash for Windows 系统代理/TUN均无法访问国外
节点无法Ping通 怀疑是Fake IP导致的 在 fake-ip-filter: 添加节点域名 系统代理/TUN恢复正常
添加- SRC-IP-CIDR,...../32,DIRECT 规则 流量还是会进入到OpenClash内核 并引起该机器CFW节点异常 不添加 SRC-IP-CIDR 规则 等于走两遍规则 CFW Direct 的进到OpenClash再过一遍规则 总结 SRC-IP-CIDR DIRECT 不适合用来控制 不走代理的局域网设备IP (即使 DIRECT 还是进 OpenClash 会占用性能开销
升级,改DNS劫持为防火墙就有了
可否增加指定DNS劫持的目的地端口?比方在想把DNS劫持到AdGurad Home(比如5353),但又想用黑名单让特定IP不走代理,目前好像没有办法实现。一旦使用了防火墙DNS劫持,OpenClash就把53端口劫持到它自己的监听端口(比如7874)了。
哎,,我也遇到了,到现在没有好的方案 现在可以确定的是”Fake-IP 模式“下可以避免DNS泄露,但是没办法指定部分局域网不走clash。。。愁
哎,,我也遇到了,到现在没有好的方案 现在可以确定的是”Fake-IP 模式“下可以避免DNS泄露,但是没办法指定部分局域网不走clash。。。愁
Fake-IP模式下开启DNS劫持中“使用防火墙转发”就可以使用黑白名单模式指定部分局域网不走openclash