Clash规则文件结构
Clash的规则文件采用JSON格式,主要包括以下规则类型:
- 链路规则(Network Rule):匹配特定的网络接口(如eth)。
- 接口规则(Interface Rule):匹配特定的网络接口。
- 网络规则(Network Rule):匹配特定的IP地址和子网。
- 端口转发规则(Port Forwarding Rule):将本地端口转发到远程地址和端口。
- 防火墙规则(Firewall Rule):限制或允许特定流量。
示例规则文件
以下是一个完整的JSON示例,展示了如何综合使用这些规则类型:
{
"chains": [
{
"name": "允许本地访问外部网站",
"match": {
"interface": "eth"
},
"rules": [
{
"name": "默认拒绝",
"match": {},
"action": "deny"
},
{
"name": "允许HTTP",
"match": {
"port": "80"
},
"action": "accept"
},
{
"name": "允许HTTPS",
"match": {
"port": "443"
},
"action": "accept"
}
]
},
{
"name": "允许局域网访问互联网",
"match": {
"ip": "192.168.1./24"
},
"rules": [
{
"name": "允许所有流量",
"match": {},
"action": "accept"
}
]
},
{
"name": "防止局域网访问外部",
"match": {
"interface": "eth",
"ip": "192.168.1./24"
},
"rules": [
{
"name": "拒绝外部访问",
"match": {},
"action": "deny"
}
]
},
{
"name": "端口转发",
"match": {
"port": "808"
},
"rules": [
{
"name": "转发到服务器",
"match": {
"ip": "192.168.2.1",
"port": "80"
},
"action": "redirect",
"to": "http://server.example.com"
}
]
}
]
}
配置说明
-
链路规则:
name:规则名称。match:匹配条件,可以指定接口。rules:规则列表,包含多个子规则。
-
接口规则:
- 可以在
match中指定特定的网络接口,如"eth"。
- 可以在
-
网络规则:
- 使用
"ip"和"mask"来匹配特定的IP地址和子网。 - 可以用于允许或拒绝特定子网的流量。
- 使用
-
端口转发规则:
- 使用
"redirect"来将流量转发到指定地址和端口。 to字段指定目标地址,支持HTTP、HTTPS等协议。
- 使用
-
防火墙规则:
- 使用
"deny"或"accept"来控制流量方向。 - 可以根据需要限制或允许特定端口或IP地址的流量。
- 使用
条件(Conditions)
Clash支持条件来控制规则的执行顺序,
{
"conditions": [
{
"name": "允许访问互联网",
"match": {
"ip": ".../"
},
"action": "accept"
}
]
}
注意事项
- 语法正确性:确保JSON格式正确,键名准确。
- 优先级:规则的执行顺序由定义顺序和条件决定。
- 测试和调整:根据实际需求调整规则,必要时进行测试以确保配置正确。
通过合理配置这些规则,您可以根据需求管理网络流量,实现高效的网络代理和防火墙功能。




