Clash端口被占用是最常见的启动失败原因之一,本文提供从诊断到解决的全流程方案,并附带代理组配置与分流规则的核心知识点,帮助用户彻底摆脱端口冲突困扰。
问题诊断:端口占用有哪些表现
Clash启动时弹出“端口已被占用”提示,或任务栏图标持续转圈无法连接,首先需要确认是否为端口冲突。
常见现象:
- 启动后提示“Port 7890 has been used”
- 仪表盘显示“代理未运行”
- 其他代理工具(V2Ray、Surge、Shadowrocket)正在运行
主要原因:
- 上一次Clash进程未正常退出,残留进程占用端口
- 系统其他应用占用了Clash默认端口(7890、7891、9090)
- 多个Clash实例同时启动
端口占用解决方法
结束残留进程
Windows系统按Ctrl+Shift+Esc打开任务管理器,结束所有名为“Clash”的进程;Mac用户在终端执行:
killall Clash*
修改配置文件端口
打开Clash配置文件(config.yaml),修改以下端口段:
port: 7890 # HTTP代理端口 socks-port: 7891 # SOCKS5代理端口 allow-lan: false mode: rule external-controller: 127.0.0.1:9090
将7890改为其他未被占用的端口(如8080、30000),保存后重启Clash。
检查端口占用程序
Windows用户在PowerShell执行:
netstat -ano | findstr :7890
找到对应PID后,通过任务管理器结束该进程,或直接修改Clash端口以规避冲突。
代理组类型与适用场景
解决端口问题后,正确配置代理组能提升使用体验。
| 类型 | 语法 | 适用场景 |
|---|---|---|
| select | type: select |
手动选择节点,适合有明确偏好 |
| url-test | type: url-test |
自动测速选优,适合日常上网 |
| fallback | type: fallback |
主节点故障自动切换,适合重要业务 |
示例配置:
proxy-groups:
- name: 节点选择
type: select
proxies:
- 节点A
- 节点B
- 节点C
TUN模式 vs 系统代理
- 系统代理:仅接管HTTP/HTTPS流量,兼容性好但无法代理游戏UDP
- TUN模式:虚拟网卡接管所有流量(包括UDP、游戏),需更高权限
在配置文件中开启TUN:
tun:
enable: true
stack: system
dns-hijack:
- 8.8.8.8
分流规则优先级
Clash按规则顺序匹配,排在前的规则优先执行:
- DOMAIN(精确域名)
- DOMAIN-SUFFIX(域名后缀)
- IP-CIDR(IP段)
- GEOIP(国家/地区)
- FINAL(兜底规则)
rules: - DOMAIN-SUFFIX,google.com,节点选择 - DOMAIN-KEYWORD,netflix,节点选择 - IP-CIDR,10.0.0.0/8,DIRECT - GEOIP,CN,DIRECT - FINAL,节点选择
FAQ
Q:修改端口后仍然提示占用? A:可能是防火墙或安全软件阻止了Clash,建议以管理员身份运行,或检查安全软件白名单。
Q:Clash与其他代理工具冲突怎么办? A:确保同时只运行一个代理工具,或将各工具端口错开(如Clash用7890,V2Ray用1080)。
Q:TUN模式开启后无法上网?
A:检查DNS配置是否正确,尝试将stack改为gvisor或system。
节点选择建议
稳定的代理服务需要低延迟、高带宽的节点支持,根据使用场景选择:
- 4K视频:优先BGP或CN2线路,带宽≥100Mbps
- 游戏/语音:选择延迟<50ms的节点,协议推荐WireGuard或Trojan
- 跨境办公:注重稳定性,推荐有SLA保障的专线服务
选择节点时关注服务商是否提供实时测速、故障切换机制,避免单一节点瓶颈。
