
通过配置文件中的allowed-ips参数设置白名单
allowed-ips参数的作用与配置格式
Clash配置文件中的allowed-ips参数用于限制允许连接Clash代理的局域网IP地址,实现基于IP的白名单访问控制。在config.yaml中配置allowed-ips后,只有列表中的IP地址能够连接到Clash的代理端口(默认7890),其他IP的请求会被直接拒绝。配置格式为allowed-ips: - 192.168.1.100/32 - 192.168.1.110/32,支持CIDR格式指定单个IP或IP段。该参数与allow-lan配合使用,allow-lan开启代理服务对外监听,allowed-ips在此基础上进一步限制可连接的IP范围。
CIDR格式的编写方法
allowed-ips中的IP地址需使用CIDR(无类别域间路由)格式,具体写法因目标设备数量而异。单个IP地址使用/32子网掩码,例如192.168.1.100/32表示仅允许该特定IP连接。若需允许整个网段的设备连接,使用网段格式如192.168.1.0/24允许192.168.1.1至192.168.1.254范围内的所有设备。多行配置时每行以短横线开头,缩进对齐。常见局域网网段对应的CIDR为192.168.0.0/16(整个192.168.x.x段)和10.0.0.0/8(整个10.x.x.x段)。
allowed-ips与allow-lan的配合关系
allowed-ips必须在allow-lan: true的前提下才能生效。allow-lan控制Clash是否监听所有网络接口(0.0.0.0),决定局域网设备是否能连接到代理端口。allowed-ips在此基础上进一步控制哪些IP可以连接,两者配合实现“对外开放但仅限白名单访问”的安全策略。若allow-lan: false,allowed-ips配置不生效,因为代理端口仅监听127.0.0.1,外部设备无法连接。需同时设置allow-lan: true和allowed-ips实现特定IP访问控制。
通过disallowed-ips参数设置黑名单
disallowed-ips的配置格式与使用方法
disallowed-ips参数用于禁止特定IP地址连接Clash代理,与allowed-ips的白名单模式形成互补。配置格式与allowed-ips相同,disallowed-ips: - 192.168.1.200/32 - 192.168.1.201/32表示禁止指定IP连接,其他所有IP均可连接。黑名单模式适合已知少数不信任设备需被排除的场景,白名单模式适合仅允许少数信任设备连接的场景。若同时配置allowed-ips和disallowed-ips,黑名单优先级高于白名单,即被黑名单匹配的IP即使在白名单中也会被拒绝。
黑名单与白名单的优先级关系
当allowed-ips和disallowed-ips同时配置且存在重叠IP时,disallowed-ips优先。例如allowed-ips: 192.168.1.0/24允许整个网段,disallowed-ips: 192.168.1.100/32拒绝单个设备时,192.168.1.100被拒绝而网段内其他设备允许连接。该优先级机制可用于“允许整个网段但排除特定设备”的精细控制。
黑名单在临时封禁场景中的应用
disallowed-ips适合临时拒绝某设备访问代理的场景。当发现某设备占用过多带宽或存在安全风险时,将设备IP加入disallowed-ips列表,保存并重新加载配置后该设备立即无法连接代理,无需修改allowed-ips的白名单结构。若未来需恢复该设备访问,从disallowed-ips列表中移除IP即可。
防火墙层实现IP访问控制
Windows防火墙创建入站规则限制IP
在Windows系统中,可通过防火墙高级安全设置限制局域网设备连接Clash端口。打开「控制面板→Windows Defender防火墙→高级设置→入站规则」,创建新规则选择“端口”,在特定本地端口中填入7890,选择“允许连接”。在“作用域”选项卡中,在“远程IP地址→这些IP地址”中添加允许连接的IP地址列表。此方式独立于Clash配置,适用于不支持allowed-ips的旧版内核。
使用Windows防火墙的远程IP地址限制
通过防火墙限制IP地址的粒度可精确到单个IP或IP段,与Clash的allowed-ips功能等价。添加允许IP地址后,只有列表中的IP能通过7890端口连接到电脑,其他IP的请求被防火墙直接丢弃,Clash本身无需额外配置。此方式与Clash内部配置相比的优势是可在Clash未运行时生效,但配置复杂度较高。
路由器ACL规则的补充方案
在网络环境较为复杂或需从网络层统一管理多个设备的访问控制时,可在路由器上配置ACL规则限制局域网内设备访问特定IP和端口。配置路由器仅允许特定IP访问运行Clash的电脑的7890端口,或禁止某些IP访问该端口。该方式在网络层进行控制,独立于Clash配置且不依赖Clash版本支持,适合企业或教育网络环境。
通过SRC-IP-CIDR规则实现分流层面的控制
在规则层面允许特定IP走代理
在Clash的rules字段中,可通过SRC-IP-CIDR规则让特定IP走代理,而非直接拒绝连接。配置示例为SRC-IP-CIDR,192.168.1.100/32,PROXY,将指定IP的流量送入代理通道。其他设备的流量若规则未匹配,可能落到MATCH规则上(通常为PROXY或DIRECT)。若需实现“仅特定IP可走代理,其他IP走直连”的效果,需将默认MATCH设为DIRECT,并确保SRC-IP-CIDR规则匹配特定IP后走PROXY。
在规则层面拒绝特定IP走代理
若需拒绝特定IP使用代理,在rules字段顶部添加SRC-IP-CIDR,192.168.1.100/32,REJECT,该IP的代理请求将被拒绝。该方式虽可实现限制效果,但需在分流规则层面处理,不如allowed-ips直接在连接层面拒绝请求。SRC-IP-CIDR规则在规则匹配层面生效,代理连接已建立后才被拒绝,可能产生额外的网络开销。
SRC-IP-CIDR规则与allowed-ips的区别
allowed-ips在连接建立前检查来源IP,拒绝后客户端收到connection refused,代理连接完全不建立。SRC-IP-CIDR在规则匹配阶段生效,代理连接已建立但请求被REJECT动作拒绝,客户端收到的是代理返回的错误而非连接拒绝。allowed-ips更高效,适合纯粹的IP访问控制;SRC-IP-CIDR更灵活,可在不同策略组间分配不同IP的流量。allowed-ips需要新版Mihomo内核支持,SRC-IP-CIDR在所有Clash版本中均可用。
配置生效后的验证方法
通过allowed-ips限制后测试连接
配置allowed-ips后,在白名单IP的设备上配置代理(填入电脑IP和端口7890),访问http://httpbin.org/ip确认可正常使用。在非白名单IP的设备上配置同一代理,访问网页应返回连接拒绝错误(ERR_CONNECTION_REFUSED),表示连接在代理端口层面被拦截。
检查Clash日志确认IP被拒绝
当非白名单IP尝试连接代理时,Clash日志中会记录连接拒绝信息。将Clash日志级别调至debug,查看是否有[LAN] connection from 192.168.1.200 rejected by allowed-ips或类似记录,确认allowed-ips配置正在生效。若日志中无相关记录且非白名单设备能正常连接,检查配置文件中allowed-ips是否拼写正确,以及allow-lan是否已开启。
防火墙规则生效的验证
若使用Windows防火墙限制IP访问,在允许IP的设备上测试代理正常工作。在禁止IP的设备上测试,连接超时或被拒绝表示防火墙规则已生效。在命令提示符中执行telnet 电脑IP 7890,禁止IP的设备应无法连接到该端口。
常见问题FAQ
配置了allowed-ips后非白名单设备仍能连接代理,为什么?
检查config.yaml中allow-lan: true是否已设置,allowed-ips需在allow-lan开启时生效。确认allowed-ips的缩进格式正确,每个IP条目以短横线开头,缩进与allow-lan对齐。检查Clash内核版本是否支持allowed-ips(Mihomo v1.15.0及以上版本支持,原版Clash不支持)。
allowed-ips和disallowed-ips可以同时使用吗?
可以同时使用。同时配置时,disallowed-ips黑名单优先级高于allowed-ips白名单。若某IP同时出现在两个列表中,该IP将被拒绝连接。建议根据需求选择使用一种方式,避免规则混乱。
旧版Clash不支持allowed-ips怎么办?
旧版Clash(原版Clash)不支持allowed-ips参数,可使用Windows防火墙限制远程IP地址访问7890端口,或通过路由器的ACL规则限制IP访问。在Clash规则中通过SRC-IP-CIDR配合REJECT动作实现类似效果,但效率低于allowed-ips。
如何临时禁止某设备连接而不修改配置文件?
在路由器管理后台将该设备IP加入黑名单,或在Windows防火墙中临时添加拒绝规则阻止该IP访问7890端口。若使用disallowed-ips,修改配置文件并重新加载Clash后即可生效,无需重启客户端。