首页/教程/怎么设置只允许特定IP的设备连接Clash代理?
CLASH GUIDE

怎么设置只允许特定IP的设备连接Clash代理?

约 9 分钟阅读

Clash vpn中设置只允许特定IP设备连接代理,可在config.yaml中配置allowed-ips字段实现白名单模式,格式为allowed-ips: - 192.168.1.100/32 - 192.168.1.110/32,需配合allow-lan: true生效。disallowed-ips字段实现黑名单模式,禁止特定IP连接,格式与allowed-ips相同。若同时配置两者,黑名单优先级高于白名单。不支持allowed-ips的旧版Clash可通过Windows防火墙在入站规则的“作用域”中限制远程IP地址,或通过路由器的ACL规则限制IP访问。SRC-IP-CIDR规则可在分流层面实现类似控制,但allowed-ips在连接层面更高效。配置allowed-ips后,非白名单设备尝试连接代理会收到连接拒绝错误(ERR_CONNECTION_REFUSED)。验证时在白名单设备上测试代理可正常工作,非白名单设备连接被拒绝。检查Clash日志中的[LAN] connection from IP rejected by allowed-ips记录可确认配置生效。需注意allowed-ips需要Mihomo v1.15.0及以上版本支持,原版Clash不支持。使用CIDR格式指定IP段时需确保写法正确,如192.168.1.0/24表示整个网段。

通过配置文件中的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: falseallowed-ips配置不生效,因为代理端口仅监听127.0.0.1,外部设备无法连接。需同时设置allow-lan: trueallowed-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-ipsdisallowed-ips,黑名单优先级高于白名单,即被黑名单匹配的IP即使在白名单中也会被拒绝。

黑名单与白名单的优先级关系

allowed-ipsdisallowed-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.yamlallow-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后即可生效,无需重启客户端。

使用提醒

请从可信来源获取软件与配置,并遵守所在地法律法规和相关服务条款。