CLASH KNOWLEDGE BASE

作者: longuser

客户端教程、配置说明与问题排查资料。

教程

无头服务器上跑Clash vpn需要图形界面吗?

无头服务器上运行ClashVPN完全不需要图形界面,Clash核心程序是纯命令行可执行文件,不依赖X11或任何图形库,可直接在最小化安装的Linux服务器上运行。通过SSH远程登录服务器,使用vim或nano编辑/etc/clash/config.yaml配置文件,执行systemctlstartclash启动服务,所有操作均在终端中完成,无需任何图形交互。systemd服务管理Clash支持开机自启和进程守护,配置ExecStart=/usr/local/bin/clash-d/etc/clash和User=clash专用用户运行即可。通过API和WebDashboard面板实现无图形界面的节点管理,在config.yaml中启用external-controller后,在本地电脑浏览器访问http://服务器IP:9090/ui即可切换节点、查看连接和监控状态。无头服务器上的Clash内存占用仅50-100MB,远低于图形客户端的400-600MB。订阅链接可通过cron定时任务自动拉取最新配置,配合systemctlrestartclash实现配置自动更新。使用curl-xhttp://127.0.0.1:7890http://httpbin.org/ip在服务器上测试代理是否生效。无头服务器部署与桌面环境的功能完整性一致,核心代理能力无差异,区别仅在于交互方式。创建专用用户运行Clash提升安全性,配置目录所有权归该用户。WebDashboard面板是无头服务器管理Clash的最便捷方式,可完全替代图形界面客户端的节点切换和状态查看功能。Clash核心本身就是无头运行的工具命令行版本不依赖任何图形库ClashVPN的核心程序(原版clash或Mihomo)是一个纯命令行可执行文件,完全不依赖X11、Wayland或任何图形界面库。在无头服务器(没有显示器、键盘和鼠标的Linux服务器)上,Clash可直接运行,无需安装图形环境。从GitHubReleases页面下载的clash-linux-amd64文件,在终端中执行./clash-d/etc/clash即可启动代理服务,与服务器是否有图形界面完全无关。Clash核心使用Go语言编写,编译为静态二进制文件,不依赖外部动态库,在最小化安装的Linux系统中可直接运行。无头服务器原生支持代理部署Linux服务器(如UbuntuServer、Debianminimal、CentOSminimal)默认不安装图形界面,是Clash命令行版本最常见的运行环境。无头服务器通过SSH远程管理,用户通过终端执行命令完成Clash的配置、启动、停止和监控,所有操作均在命令行中完成。Clash的日志输出到终端或systemd日志,配置通过编辑config.yaml文件修改,节点切换通过API调用或WebDashboard面板实现,全程无需图形界面介入。图形界面客户端仅用于本地管理ClashVergeRev、ClashforWindows等图形界面客户端本质上是Clash核心的“外壳”,在后台调用内核程序并将操作界面可视化。在无头服务器上不需要安装图形界面客户端,直接操作Clash核心即可实现相同的代理功能。图形界面客户端适合桌面用户日常管理,服务器环境中的Clash通过命令行和API管理更加高效和轻量。无头服务器上Clash的配置方式通过编辑config.yaml配置节点在无头服务器上,Clash的所有配置均通过编辑config.yaml文件完成,与图形界面客户端使用的配置格式完全一致。用户通过SSH登录服务器,使用vim、nano等终端文本编辑器修改/etc/clash/config.yaml文件,添加节点、策略组和规则。配置完成后执行systemctlrestartclash或./clash-d/etc/clash应用新配置。配置文件的编写可在本地电脑上先调试好,再通过scp或rsync传输到服务器,无需在服务器上直接编辑。通过订阅链接自动拉取配置无头服务器上的Clash支持通过订阅链接自动拉取配置,与图形界面客户端一致。在config.yaml中配置订阅链接后,Clash在启动时自动下载最新配置。若需定期更新,可通过cron定时任务执行curl-o/etc/clash/config.yaml订阅链接下载最新配置并重启Clash。订阅方式省去了手动维护节点列表的繁琐操作,适合机场订阅用户。使用环境变量覆盖配置参数Clash支持通过环境变量覆盖配置文件中的部分参数,在无头服务器上灵活调整配置而无需修改文件。CLASH_HTTP_PORT覆盖port字段,CLASH_SOCKS_PORT覆盖socks-port字段,CLASH_API_SECRET覆盖secret字段。在启动Clash前设置环境变量,或在systemd服务文件中配置Environment字段,可实现配置的动态调整。无头服务器的管理方式通过systemd管理Clash服务在无头服务器上,使用systemd管理Clash服务是最标准的做法,支持开机自启、进程守护和日志管理。创建/etc/systemd/system/clash.service文件,配置ExecStart=/usr/local/bin/clash-d/etc/clash,设置User=clash专用用户运行提升安全性。执行sudosystemctlenableclash启用开机自启,sudosystemctlstartclash启动服务,sudosystemctlstatusclash查看运行状态。systemd管理方式与服务器是否安装图形界面完全无关。通过API远程管理Clash无头服务器上的Clash启用外部控制器API后,可通过HTTP请求远程管理节点和配置。在config.yaml中设置external-controller:0.0.0.0:9090,配置secret密钥保护API安全。从本地电脑通过浏览器访问Dashboard面板(如YACD),填入服务器IP和API端口即可切换节点、查看连接和监控状态。也可通过curl命令调用API执行管理操作,无需登录服务器。使用WebDashboard面板可视化管理无头服务器上的Clash虽然本身无图形界面,但可通过WebDashboard面板在浏览器中进行可视化管理。在本地电脑浏览器中访问http://服务器IP:9090/ui或第三方Dashboard页面(如http://yacd.haishan.me),填入服务器IP和API密钥后,面板显示完整的节点列表、连接状态和规则信息,支持点击切换节点。该方式是图形界面在无头服务器上的延伸,提供了与桌面客户端类似的管理体验。无头服务器部署Clash的典型流程下载内核文件并赋予执行权限在无头服务器上部署Clash的第一步是下载内核文件。执行wgethttps://github.com/MetaCubeX/mihomo/releases/download/v1.18.0/mihomo-linux-amd64-v1.18.0.gz下载压缩包,gunzipmihomo-linux-amd64-v1.18.0.gz解压,chmod+xmihomo-linux-amd64赋予执行权限。将文件重命名为clash并移动至/usr/local/bin/目录,使系统可全局调用。创建配置文件和目录结构执行mkdir-p/etc/clash创建配置目录,使用cat或echo命令创建/etc/clash/config.yaml,或从本地电脑通过scp传输配置文件。确保配置文件中包含有效的节点、策略组和规则,且external-controller已开启以便远程管理。执行chown-Rclash:clash/etc/clash将目录所有权交给专用用户。启动Clash并验证服务运行通过systemd启动Clash服务(systemctlstartclash),执行systemctlstatusclash确认状态为active(running)。在本地电脑浏览器中访问http://服务器IP:9090/ui验证API是否可访问。通过curl-xhttp://127.0.0.1:7890http://httpbin.org/ip在服务器上测试代理是否生效。若代理正常工作且API可访问,无头服务器上的Clash部署成功。无头服务器vs桌面环境的对比资源占用的显著差异无头服务器上运行Clash仅需内核进程,内存占用通常在50-100MB之间,CPU占用极低。桌面环境中ClashVergeRev等图形客户端因UI渲染、流量图表和日志面板,内存占用可达400-600MB。无头服务器部署节省了大量系统资源,适合资源受限的VPS或嵌入式设备。功能完整性的对比无头服务器上的Clash命令行版本支持完整的代理功能,包括节点管理、规则匹配、DNS解析和TUN模式,与桌面客户端的内核功能完全一致。仅缺少图形界面提供的可视化操作、订阅管理界面和实时流量图表显示。功能完整性的差异仅限于交互方式,核心代理能力无差别。日常维护方式的差异桌面环境下通过点击按钮完成节点切换、规则修改和状态查看。无头服务器上通过SSH终端编辑配置文件、使用curl命令调用API或通过WebDashboard面板管理。两种方式在操作效率上各有优劣,WebDashboard可在一定程度上弥补无头服务器缺少图形界面的交互体验。常见问题FAQ

教程

怎么用脚本自动更新Clash配置?

在ClashVPN中通过脚本自动更新配置,可通过Shell脚本执行curl-o/etc/clash/config.yaml订阅链接下载订阅配置,配合systemctlrestartclash重启Clash服务,并将脚本添加至cron定时任务(如0*/4***/usr/local/bin/update_clash.sh)实现定时自动更新。ClashAutoSub工具通过Node.js自动登录机场并提取订阅地址,执行autosubupdate即可静默更新,首次配置后后续无需浏览器操作。gangz1o/glashDocker镜像通过SUB_URL和SUB_CRON环境变量实现订阅自动更新,容器按计划拉取最新配置并重启。subscription-tool-for-clash从订阅链接获取配置后合并到基础配置文件中,保留用户自定义规则不被覆盖。更新脚本中应先下载配置到临时文件,使用clash-t-f验证格式正确且非空后再覆盖正式配置,避免订阅异常导致Clash服务中断。每次更新前备份当前配置文件为带时间戳的历史版本,保留最近5-10个版本便于快速回滚。订阅转换服务的定时拉取和自建订阅服务器的定期更新也是可选的自动化方案。更新失败时通过邮件或Telegram发送告警通知,帮助管理员及时介入处理。Docker环境中使用gangz1o/glash镜像配合SUB_CRON定时更新最为简便。自动化更新脚本应包含错误处理和配置保护机制,确保订阅地址失效时不会清空现有配置导致服务完全中断。通过订阅工具实现自动化更新使用ClashAutoSub工具管理订阅ClashAutoSub是一个基于Node.js的命令行自动化工具,专门解决订阅地址频繁变更导致的手动维护问题。该工具通过Puppeteer控制浏览器实现智能登录检测和订阅地址提取,用户只需登录一次,后续自动完成所有更新操作。安装方式为npminstall-gclash-autosub,首次使用时运行autosubadd添加订阅站点,浏览器自动打开引导用户完成登录。检测到API配置后,后续执行autosubupdate即可在1秒内完成静默更新,内存占用极低,无需重复打开浏览器。gangz1o/glashDocker镜像的自动更新方案gangz1o/glash是基于Mihomo内核的ClashDocker镜像,内置了订阅自动更新功能,适合容器化部署场景。通过环境变量SUB_URL设置订阅地址,SUB_CRON设置定时更新频率(如0*/6***表示每6小时更新一次),容器按计划自动拉取最新订阅配置并重启生效。部署命令为dockerrun-d--nameclash--restartunless-stopped-p7890:7890-eSUB_URL="订阅链接"-eSUB_CRON="0*/6***"gangz1o/glash,订阅更新失败时自动回退到本地配置保证服务持续可用。subscription-tool-for-clash实现配置合并subscription-tool-for-clash是一个C语言编写的工具,从订阅链接获取配置,将订阅的节点、策略组和规则添加到基础配置文件中,生成新配置文件供Clash使用。使用方式为./sub4clash"订阅URL"基础配置.yaml输出.yaml,基础文件内容优先于订阅内容,确保自定义规则和端口设置不被订阅覆盖。编译需依赖libcurl库,适合需要在订阅更新后保留自定义节点和规则的进阶用户。通过Shell脚本调用API更新使用curl命令强制更新订阅对于已有订阅链接且无需复杂登录的场景,通过Shell脚本调用ClashAPI或直接下载配置文件可实现自动化更新。在ClashVergeRev等客户端中,订阅更新可通过API触发,命令为curl-XPOSThttp://127.0.0.1:9090/configs-d'{"path":"订阅配置路径"}',强制客户端重新拉取订阅配置。若客户端支持通过URL更新,可执行curl-oconfig.yaml订阅链接直接下载订阅内容到配置目录,然后重启Clash服务使新配置生效。编写Shell脚本自动下载并重启Clash将订阅下载和Clash重启步骤封装为Shell脚本,可定时自动执行减少人工干预。脚本内容为:text#!/bin/bashcurl-s-o/etc/clash/config.yaml"订阅链接"if[$?-eq0];thenecho"订阅更新成功,重启Clash服务"systemctlrestartclashelseecho"订阅下载失败,保留现有配置"fi该脚本先下载订阅配置到指定目录,下载成功则重启Clash服务,失败则保留现有配置不中断服务。配合cron定时任务(如0*/4***/usr/local/bin/update_clash.sh每4小时执行一次),即可实现配置的自动更新和服务的平滑重启。结合文件变化检测实现按需重启通过监控配置文件的变化时间戳,仅在订阅内容实际更新时才重启Clash服务,避免不必要的服务中断。脚本流程为:下载订阅配置到临时文件,与现有配置文件进行差异比较(使用diff命令或MD5校验),若文件有变化则覆盖并重启Clash,若无变化则删除临时文件。该方案比定时无条件重启更精细,减少了服务重启频率,适合对服务稳定性要求较高的生产环境。利用订阅服务商的自动更新机制机场面板中的定时更新功能部分机场服务商在用户面板中提供了“自动更新订阅”功能,用户可设置更新频率(每天、每周等),服务商定期将最新节点配置推送至用户订阅链接。启用该功能后,用户无需在本地脚本中操作,只需在Clash客户端中定期拉取订阅即可。该功能适合对自定义配置需求较少的用户,更新周期由服务商控制,灵活性有限但配置成本最低。订阅转换服务的API定时拉取使用ACL4SSR等订阅转换服务时,转换后的配置链接支持定时自动更新。用户设置好转换规则和过滤条件后,服务端按固定周期(通常为6-12小时)重新拉取原始订阅并生成新配置。用户只需在Clash客户端中保留该转换链接,客户端定期拉取即可获得最新节点配置。该方案适合需要订阅合并、规则过滤或格式转换的用户,无需本地维护脚本。自建订阅服务器的定期更新在自建订阅服务器上,可部署定时任务定期从多个上游订阅源拉取配置,合并后生成统一的订阅链接。使用Python或Node.js编写的订阅聚合脚本,按预设周期(如每小时)从各机场API获取节点列表,去重后生成标准Clash格式的配置并通过HTTP服务托管。用户端Clash直接使用该自建订阅链接,无需关注上游来源的变化。自动化更新中的错误处理与回滚订阅更新失败时的配置保护在自动化更新脚本中,应包含配置保护机制,确保订阅下载失败时不会清空或损坏现有配置文件。在覆盖配置文件前先下载到临时文件,验证文件格式正确(使用clash-t-f测试)且非空,再执行覆盖。若验证失败,保留现有配置并记录错误日志,避免因订阅链接失效导致Clash服务中断。配置版本备份与回滚策略每次更新前将当前配置文件备份为带时间戳的历史版本(如config_$(date+%Y%m%d_%H%M%S).yaml),保留最近5-10个版本。若更新后Clash服务启动失败或代理功能异常,可手动切换回最近的稳定版本。备份策略在自动化环境中尤为重要,可在配置错误或订阅异常时快速恢复服务。更新失败的通知与告警在自动化更新脚本中集成告警功能,当订阅更新连续失败或Clash重启异常时发送通知。通过邮件、TelegramBot或Webhook发送错误信息,包含失败原因、时间戳和当前配置状态。及时告警可帮助管理员在问题扩大前介入处理,避免长时间服务中断不被察觉。常见问题FAQ

教程

Clash能通过命令行切换节点吗?

ClashVPN可通过命令行切换节点,核心方法为调用外部控制器API的/proxies端点,执行curl-XPUThttp://127.0.0.1:9090/proxies/策略组名-d'{"name":"目标节点"}'即可将指定select类型策略组切换至目标节点。若配置了secret密钥,需在请求中添加Authorization:Beareryour-password认证头。切换前可通过GET/proxies接口获取可用节点列表和策略组类型,确认目标策略组为select类型(url-test和fallback类型不支持手动切换)。第三方命令行工具如activate-clash-core提供select-node交互式切换,自动测速并显示节点延迟;clash-kit提供ckuse交互式菜单;clash-cli提供set-proxy命令切换。Shell脚本可将API切换封装为一键命令,支持参数传递节点名称。自动化脚本可定期检测节点连通性,在节点不可用时自动切换至备用节点实现故障转移。cron定时任务可实现定时节点轮换,分散负载。切换后通过curl-xhttp://127.0.0.1:7890http://httpbin.org/ip验证出口IP确认节点是否生效。节点名称需与config.yaml中的name完全一致(包括大小写和特殊字符),否则API返回400错误。API返回204状态码表示切换成功。若需切换多个策略组,需分别调用API。命令行切换在无图形界面的Linux服务器、自动化运维和脚本集成场景中尤为实用。通过API接口切换节点调用/proxies端点切换节点ClashVPN支持通过命令行切换节点,核心方法是调用Clash外部控制器API的/proxies端点。执行curl-XPUThttp://127.0.0.1:9090/proxies/策略组名-d'{"name":"目标节点"}'即可切换指定策略组的节点。该命令向Clash的RESTfulAPI发送PUT请求,将策略组中当前选中的节点切换为目标节点。若配置了secret密钥,需在请求头中添加Authorization:Beareryour-password。切换成功后API返回204状态码,表示操作成功完成,切换操作立即生效,无需重启Clash或重新加载配置。该方式在无图形界面的服务器环境中尤为实用,用户可通过SSH连接到服务器后快速切换节点,而无需登录任何管理面板。API切换节点的完整命令格式切换节点的完整命令为curl-XPUThttp://127.0.0.1:9090/proxies/{selector}-H"Content-Type:application/json"-d'{"name":"{node}"}'。其中{selector}为策略组名称(如Proxy或🚀节点选择),{node}为目标节点名称(必须与config.yaml中proxies字段的name完全一致)。若策略组类型为select,切换后该策略组的选中节点立即变更,Clash的代理通道随即使用新节点转发流量。若策略组类型为url-test或fallback,手动切换无效,因为这两类策略组的节点选择由Clash内核的自动逻辑控制,不受API手动干预。在切换前建议先通过curl-shttp://127.0.0.1:9090/proxies|jq查看当前策略组的类型和可用节点列表,确认目标策略组支持手动切换后再执行操作。获取可用节点列表再执行切换在切换前,可通过GET/proxies接口获取当前所有策略组和可用节点列表,避免因节点名称拼写错误导致切换失败。执行curlhttp://127.0.0.1:9090/proxies返回所有策略组的详细信息,包括每个select组的当前选中节点和可用节点列表。返回的JSON数据中,proxies对象下的每个策略组包含name(策略组名称)、type(策略组类型)、now(当前选中节点)和all(所有可用节点列表)。获取节点列表后,确认目标节点名称的准确拼写,特别注意大小写和特殊字符(如Emoji、括号等),再执行切换命令。该步骤可避免因节点名称拼写错误导致的切换失败,在节点名称包含特殊字符时尤为必要。使用第三方命令行工具切换节点activate-clash-core工具的交互式切换activate-clash-core是一个零依赖的Linux终端代理工具,专门为无图形界面的服务器环境设计,提供了交互式节点切换功能。安装后执行select-node命令进入交互式选择界面,工具自动调用ClashAPI获取当前策略组和节点列表,并自动对各节点执行延迟测试,在终端中显示每个节点的名称和延迟数值。用户通过键盘上下键选择目标节点,按回车确认后工具自动调用PUT/proxies接口完成切换。该工具适合习惯命令行操作且需要直观查看节点延迟的用户,无需记忆API命令格式,切换体验接近图形界面的下拉菜单。clash-kit工具的交互式节点管理clash-kit是一个Node.js编写的命令行工具,提供了ckuse命令进入交互式节点切换菜单。执行ckuse后,工具自动连接ClashAPI获取当前配置中的策略组和节点信息,对各节点执行测速并显示延迟数值,用户通过键盘方向键选择目标节点后自动完成切换。clash-kit还支持cklist查看所有节点列表、ckcurrent查看当前选中的节点、ckspeed测试所有节点延迟等功能,提供了较完整的命令行节点管理体验。该工具适合Node.js环境已部署的服务器,安装和配置相对简便。clash-cli服务管理工具的节点切换clash-cli是一个Python编写的命令行工具,主要用于启动、停止和管理Clash服务,也支持通过API切换节点。执行clash-cliset-proxy策略组名节点名切换指定策略组的节点,例如clash-cliset-proxyProxy香港节点。clash-cli还支持clash-clilist-proxies查看节点列表、clash-clicurrent-proxy查看当前节点等命令,功能覆盖了日常节点管理的基本需求。该工具适合已在Python环境中部署Clash的用户。切换节点的脚本自动化编写Shell脚本实现一键切换将API切换命令封装为Shell脚本,可简化日常操作并支持自动化切换。示例脚本内容为:text#!/bin/bashif[-z"$1"];thenecho"用法:./switch_node.sh节点名称"exit1fiNODE=$1curl-XPUThttp://127.0.0.1:9090/proxies/Proxy-H"Content-Type:application/json"-d"{\"name\":\"$NODE\"}"echo"已切换至:$NODE"保存为switch_node.sh并赋予执行权限(chmod+xswitch_node.sh),执行./switch_node.sh香港节点即可切换。脚本支持通过命令行参数传递节点名称,适合频繁切换节点的场景。若配置了secret密钥,可在脚本中添加-H"Authorization:Beareryour-password"参数。节点健康检查与自动故障转移编写自动化脚本定期检测当前节点的连通性,在节点不可用时自动切换至备用节点,实现代理服务的自动故障转移。脚本流程为:通过当前代理节点访问测试URL(如http://www.gstatic.com/generate_204),检查HTTP响应码是否为204。若连续失败超过阈值(如3次),则调用GET/proxies获取策略组的可用节点列表,从列表中选择一个备用节点(排除当前不可用节点),调用PUT/proxies接口切换至备用节点。该脚本可通过cron定时任务每分钟执行一次,在节点故障后1分钟内自动恢复代理服务,大幅减少人工干预需求。cron定时任务中的定时节点轮换通过cron定时任务定期执行节点切换脚本,实现节点的定时轮换,分散节点负载。在crontab中添加06***/usr/local/bin/switch_node.sh日本节点每天早上6点切换至日本节点,018***/usr/local/bin/switch_node.sh美国节点每天晚上6点切换至美国节点。定时轮换可避免单一节点长期高负载运行,在不同时段使用地理位置最优的节点(如办公时间使用延迟低的亚洲节点,非工作时间使用带宽更大的欧美节点)。在crontab-e中添加定时任务,确保脚本路径使用绝对路径以避免环境变量问题。切换节点时的注意事项节点名称必须完全匹配API切换节点时,name字段的值必须与config.yaml中proxies字段定义的name完全一致,包括大小写和标点符号。若节点名称为🇭🇰香港节点01,命令中必须使用"🇭🇰香港节点01",Emoji和空格均不可省略或替换。名称不匹配时API返回400错误并提示proxy[名称]notfound。使用GET/proxies获取节点列表确认准确名称后复制粘贴执行切换,可完全避免名称拼写错误。在脚本中处理包含特殊字符的节点名称时,需正确转义JSON字符串中的引号。仅select类型策略组支持手动切换select类型策略组支持通过API手动切换节点,用户可自由选择组内任意节点。url-test类型策略组由Clash内核按延迟测试结果自动选择节点,fallback类型策略组按预设优先级自动切换,两者均不支持手动切换。若尝试对url-test或fallback类型策略组调用PUT/proxies接口,Clash返回400错误。在切换前通过GET/proxies查看策略组的type字段,确认其为select后再执行切换操作。切换后需验证节点是否生效切换节点后,可通过访问IP检测网站或查看Clash连接面板验证节点是否已生效。执行curl-xhttp://127.0.0.1:7890http://httpbin.org/ip查看当前出口IP是否与目标节点所在地一致。在ClashDashboard的「代理」页面中查看策略组的当前选中节点是否已更新为目标节点。若切换后出口IP未变化,检查节点名称是否拼写正确、策略组类型是否为select,以及API请求是否携带了正确的认证头(若配置了secret)。常见问题FAQ

教程

怎么用命令行查看Clash vpn的版本信息?

ClashVPN的版本信息可通过两种方式查看:执行clash-v直接查看内核版本,输出格式为ClashMetav1.18.0linuxamd64withgo1.21;通过API调用curlhttp://127.0.0.1:9090/version获取运行中实例的版本。-v参数无需Clash已运行,适合服务器环境快速确认内核版本;API方式需Clash已运行且external-controller已启用,适合远程查询。版本信息中的内核分支名称(ClashMeta/Mihomo表示Mihomo内核,Clash表示原版Clash内核)决定规则类型的支持范围。版本号是判断Hysteria2、Reality、TUIC等新协议是否支持的关键依据。操作系统和架构字段需与设备匹配,否则Clash无法执行。若clash-v提示commandnotfound,使用whichclash或find定位Clash路径后完整执行。在Docker容器中通过dockerexec执行-v参数查看版本。图形客户端版本在「关于」页面查看,与内核版本不同。版本信息中的go1.21为编译使用的Go语言版本,不影响功能判断。若clash-v与API返回的版本不一致,说明当前运行的Clash进程是旧版本,需重启Clash服务使新内核生效。使用-v参数直接查看内核版本-v参数的基本用法Clash内核提供了-v参数用于直接在终端中查看版本信息,这是查看Clash版本最直接的方式。在终端中执行clash-v,系统输出Clash内核的版本号、编译平台和Go语言版本等信息。若Clash可执行文件不在系统PATH中,需使用完整路径如./clash-v或/usr/local/bin/clash-v。-v参数不启动Clash服务,仅输出版本信息后立即退出,适合在无图形界面的服务器环境中快速确认内核版本。版本信息的输出格式执行clash-v后,输出格式通常为ClashMetav1.18.0linuxamd64withgo1.21。该输出包含内核名称(ClashMeta为Mihomo内核)、版本号(v1.18.0)、操作系统和架构(linuxamd64)以及编译使用的Go语言版本(go1.21)。不同内核分支的版本信息格式可能略有差异,但均包含核心版本号。版本号是判断内核是否支持特定功能的关键依据。-v参数在不同平台上的使用-v参数在Linux、macOS和Windows平台上均支持,使用方法一致。在Windows中执行clash.exe-v查看版本信息。若Clash可执行文件名称不同(如mihomo),使用对应的文件名执行mihomo-v。在Docker容器中,执行dockerexecclash/usr/bin/clash-v查看容器内Clash版本。通过API接口获取版本信息调用/version端点获取版本若Clash启用了外部控制器(external-controller),可通过HTTPAPI查询版本信息。执行curlhttp://127.0.0.1:9090/version向Clash的API端点发送GET请求,服务端返回包含版本信息的JSON数据。该方式无需知道Clash可执行文件的路径,适合远程管理或脚本自动化场景。API返回的版本信息与-v参数返回的版本号一致。API返回的版本信息格式GET/version接口返回的JSON格式为{"version":"1.18.0"}。若配置了secret密钥,需在请求头中添加Authorization:Beareryour-password。API方式是查看Clash运行中实例的版本信息,无需停止正在运行的Clash服务。API方式与-v方式的对比-v参数直接执行Clash可执行文件,无需Clash进程已运行,适合在Clash未启动时查看版本。API方式需Clash已运行且external-controller已启用,适合在Clash运行中远程查询。两者返回的版本号一致,选择依据为Clash的运行状态和环境条件。在无GUI服务器环境中查看版本通过which命令定位Clash路径在无GUI服务器中,若Clash可执行文件不在当前目录,使用whichclash命令定位Clash路径。执行whichclash输出Clash的安装路径(如/usr/local/bin/clash),然后执行/usr/local/bin/clash-v查看版本信息。若Clash安装在非标准路径,使用find/-nameclash2>/dev/null搜索文件位置。定位路径后在对应目录执行-v参数。使用包管理器查看Clash版本若Clash通过系统包管理器安装(如AUR、Homebrew),使用包管理器的版本查询命令查看。在macOS中使用brewinfoclash查看Homebrew安装的Clash版本信息。在ArchLinux中使用pacman-Qclash查看AUR安装的Clash版本。包管理器方式依赖系统的软件管理工具,不同发行版的命令有所不同。检查日志文件获取版本信息Clash启动时在日志中记录版本信息,在无法执行clash-v时可查看日志文件获取版本号。日志文件默认存放在配置目录(如~/.config/clash/logs/)中,Clash启动日志的第一行通常包含版本号。执行head-n5~/.config/clash/logs/clash.log查看日志头部,定位版本信息。该方式要求Clash至少已运行过一次且日志文件存在。版本信息中的关键内容解读内核分支名称的含义版本信息中的内核名称标识Clash使用的内核分支,不同分支支持的功能存在差异。ClashMeta表示Mihomo内核(原ClashMeta),支持GEOSITE、RULE-SET、IP-ASN等新规则类型和Hysteria2、TUIC等新协议。Clash表示原版Clash内核(Dreamacro维护),已停止维护,不支持新协议和规则类型。ClashPremium表示闭源Premium版,部分功能与Meta不同。确认内核分支判断配置文件中的规则类型是否受支持。版本号与功能支持的关系版本号是判断内核功能支持程度的关键指标。Mihomov1.14.0开始实验性支持Reality,v1.18.0支持已趋于稳定。Hysteria2需Mihomov1.14.0及以上版本,建议v1.18.0。TUIC需Mihomov1.15.0及以上版本。若配置文件中的功能要求与当前内核版本不匹配,可能导致unsupportedruletype错误或节点无法连接。升级内核至满足功能要求的版本可解决兼容性问题。操作系统和架构的兼容性版本信息中的操作系统和架构字段表示该Clash可执行文件编译的目标平台。linuxamd64适用于64位Linux系统,darwinarm64适用于AppleSiliconMac,windowsamd64适用于64位Windows。若在特定设备上运行Clash时出现段错误或无法执行,可能是下载了不匹配的架构版本。使用uname-m确认系统架构,下载对应版本的Clash可执行文件。常见问题FAQ

教程

Clash vpn中-d参数指定配置目录怎么用?

Clashvpn的-d参数用于指定配置目录,执行./clash-d/etc/clash启动Clash时加载/etc/clash/config.yaml文件。-d参数支持绝对路径和相对路径,如./clash-d.使用当前目录。若配置目录中缺少Country.mmdbGeoIP数据库,Clash在启动时自动下载,日志文件和缓存文件也默认存放在同一目录中。在systemd服务中使用-d/etc/clash指定配置目录,配合User=clash确保进程对配置目录有读取权限。-d参数与-f参数配合使用时,-f优先级更高,Clash加载-f指定的配置文件,-d指定的目录仍用于GeoIP数据库和日志文件。Linux服务器中/etc/clash是推荐的配置目录,Docker容器中通过-d参数指定容器内配置目录并挂载宿主机目录实现配置持久化。若-d指定目录中缺少config.yaml,Clash启动失败;若目录权限不足,Clash无法读取配置或写入日志。切换配置文件可通过准备多个独立目录并使用-d指向不同目录实现,也可使用-f参数指定具体文件路径。启动后通过API验证配置加载是否正确。-d参数的基本用法命令行中-d参数的标准格式-d参数是Clash命令行中最常用的启动参数之一,用于指定Clash加载配置文件的目录路径。标准用法为./clash-d/path/to/config_directory,其中/path/to/config_directory是包含config.yaml文件的目录的绝对或相对路径。执行该命令后,Clash从指定目录中加载config.yaml作为主配置文件,同时在该目录中查找Country.mmdbGeoIP数据库文件,日志文件和缓存文件也默认存放在同一目录中。若配置目录中缺少config.yaml文件,Clash启动失败并报错。使用相对路径指定配置目录-d参数支持使用相对路径指定配置目录,方便在项目目录或临时测试目录中快速启动Clash。执行./clash-d.将当前目录作为配置目录,Clash加载当前目录下的config.yaml。执行./clash-d./clash_config加载当前目录下clash_config子目录中的配置。相对路径在测试新配置或在不同目录中管理多个Clash配置时更为灵活。-d参数与默认配置目录的关系Clash默认配置目录为$HOME/.config/clash,若启动时不指定任何参数,Clash自动从该目录加载config.yaml。使用-d参数可覆盖默认配置目录,让Clash从自定义位置加载配置。若同时使用-d和-f参数,-f参数优先级更高,Clash加载-f指定的配置文件。使用-d参数启动Clash的完整流程准备配置目录和配置文件在使用-d参数启动Clash前,需先准备配置目录和config.yaml文件。执行mkdir-p/etc/clash创建配置目录,将config.yaml文件复制或移动到/etc/clash/目录中。确保config.yaml文件格式正确,可执行./clash-t-f/etc/clash/config.yaml测试配置文件格式。若配置目录中缺少Country.mmdbGeoIP数据库,Clash在启动时会自动下载。首次启动自动生成必要文件首次使用-d参数启动Clash时,若配置目录中缺少部分文件,Clash会自动创建必要文件。执行./clash-d/etc/clash启动Clash,若/etc/clash/config.yaml存在且格式正确,Clash正常启动。若配置目录中无Country.mmdb文件,Clash自动下载。Clash还会在配置目录中创建日志文件(如clash.log)和缓存文件(如cache.db)。自动生成文件简化了初次部署的流程。验证配置目录是否生效启动后通过检查日志或访问API确认配置目录是否生效。执行./clash-d/etc/clash后查看终端输出的日志,确认配置加载路径是否为/etc/clash/config.yaml。访问API地址http://127.0.0.1:9090/proxies确认节点列表是否与配置文件一致,验证配置已正确加载。-d参数在systemd服务中的使用systemd服务文件中配置-d参数在systemd服务文件中,通过ExecStart命令使用-d参数指定Clash的配置目录。配置示例为ExecStart=/usr/local/bin/clash-d/etc/clash。Clash启动时加载/etc/clash/config.yaml。若需修改配置,编辑/etc/clash/config.yaml后执行sudosystemctlrestartclash重启服务,新配置即可生效。systemd服务与-d参数的配合使用-d参数使得systemd服务文件中不需要硬编码配置文件的具体路径,服务文件可保持不变。配置目录/etc/clash中config.yaml的修改不影响服务文件的配置。多个Clash实例可在同一系统上使用不同配置目录运行,每个实例使用独立的-d目录。systemd服务的权限与-d参数systemd服务中使用-d参数时,需确保Clash进程对配置目录有读取权限。在服务文件中设置User=clash和Group=clash指定运行用户,并执行sudochown-Rclash:clash/etc/clash确保配置目录归该用户所有。若目录权限不足,Clash启动时可能因无法读取配置文件或写入日志而失败。-d参数与-f参数的配合使用-d与-f参数的优先级当同时使用-d和-f参数时,-f参数优先级更高,Clash加载-f指定的配置文件,忽略-d目录中的config.yaml。执行./clash-d/etc/clash-f./test.yaml,Clash加载当前目录下的test.yaml文件,而非/etc/clash/config.yaml。若需快速测试临时配置文件而不影响默认配置目录时使用该组合。-d参数指定目录-f参数指定文件的应用场景-d参数设定配置目录用于存放GeoIP数据库和日志等辅助文件,-f参数指定配置文件路径。执行./clash-d/etc/clash-f/tmp/temp_config.yaml,Clash从/etc/clash目录读取GeoIP数据库和写入日志,但配置文件使用/tmp/temp_config.yaml。该组合适合使用临时配置但希望日志和缓存存放在固定目录的场景。避免-d与-f参数混淆的实践日常使用中,若配置文件在配置目录中且文件名固定为config.yaml,仅使用-d参数即可。若配置文件不在配置目录中或文件名不是config.yaml,使用-f参数。建议在标准化部署中统一使用-d参数,避免-d和-f混用导致配置管理混乱。-d参数在不同环境中的应用Linux服务器上使用-d参数在Linux服务器中,-d参数是管理Clash配置的标准方式。通过-d/etc/clash指定系统级配置目录,配合systemd服务实现开机自启和进程守护。配置目录与Clash二进制文件分离,便于更新和维护。/etc/clash是Linux系统中推荐的配置存放位置,符合FHS文件系统层次标准。Docker容器中使用-d参数在Docker容器中运行Clash时,通过-d参数指定容器内的配置目录,并将宿主机配置目录挂载到容器内。执行dockerrun-v/host/clash:/etc/clashdreamacro/clash-d/etc/clash,Clash加载容器内/etc/clash/config.yaml。挂载配置目录使配置文件持久化存储在宿主机上,便于修改和管理。macOS和Windows中的使用差异在macOS和Windows中,-d参数的功能与Linux完全一致,但路径格式不同。Windows中使用.\clash.exe-dC:\clash,使用反斜杠。macOS中使用./clash-d/Users/username/clash,与Linux一致。不同平台均可使用-d.使用当前目录。常见问题FAQ

教程

命令行启动Clash vpn带哪些参数?

Clash核心命令行参数包括-d指定配置目录(如./clash-d/etc/clash加载/etc/clash/config.yaml)、-f指定配置文件完整路径(如./clash-f./config.yaml)、-t测试配置文件格式(如./clash-t-fconfig.yaml)、-v显示版本信息和-h显示帮助信息。-d和-f功能互补,-d适合标准化部署,-f适合灵活测试和配置切换。-t参数在修改配置后用于预验证,避免因配置错误导致服务启动失败。-v确认内核版本是否满足功能需求,-h快速查看所有参数说明。-home-dir是-d的别名功能相同,-ext-ui指定外部Dashboard静态文件目录。环境变量(如CLASH_HTTP_PORT)可覆盖配置文件中的端口设置。在systemd服务中通过-d参数指定配置目录实现标准化部署。命令行版本与图形界面客户端使用相同的配置格式,配置文件可互通使用。通过API管理无GUIClash需在配置文件中启用external-controller,使用curl命令或Dashboard面板进行节点切换和状态查看。核心启动参数:-d指定配置目录-d参数的作用与用法-d参数用于指定Clash的配置目录,Clash会从该目录下加载config.yaml配置文件。执行./clash-d/etc/clash启动Clash,加载/etc/clash/config.yaml作为配置文件。若配置目录中缺少Country.mmdbGeoIP数据库文件,Clash会在启动时自动从网络下载,确保GEOIP规则能正常使用。使用-d参数比-f参数更便于集中管理配置文件,日志和缓存文件也会默认存放在同一目录中,所有Clash相关文件集中在同一位置便于备份和管理。该参数适合将配置文件、GeoIP数据库、日志文件和缓存文件统一管理,是生产环境中推荐的标准启动方式。-d参数与配置目录结构Clashvpn配置目录中必须包含config.yaml文件,这是Clash运行的核心配置文件,包含节点、策略组、规则和DNS等全部配置内容。GeoIP数据库文件Country.mmdb可选,缺失时Clash会在启动时自动下载,用于GEOIP规则的IP归属地判断。执行./clash-d/etc/clash后,Clash在/etc/clash目录中查找config.yaml和Country.mmdb。日志文件clash.log和缓存文件cache.db也默认存放在该目录中,便于集中查看和清理。-d参数使所有Clash相关文件集中在同一位置,简化了配置管理和故障排查。-d参数在systemd服务中的使用在systemd服务文件中,通过-d参数指定Clash的配置目录是实现标准化部署的标准方式。配置示例为ExecStart=/usr/local/bin/clash-d/etc/clash,Clash启动时加载/etc/clash/config.yaml。若需修改配置,只需编辑/etc/clash/config.yaml后重启服务即可生效。-d参数使得systemd服务文件中不需要指定具体的配置文件路径,配置目录保持不变时服务文件无需修改。精确指定配置文件:-f参数-f参数的作用与用法-f参数用于精确指定Clash加载的配置文件路径,比-d参数更加灵活。执行./clash-f/path/to/config.yaml,Clash加载指定路径的配置文件,忽略默认配置目录中的config.yaml。该参数适合在同一系统中快速切换不同配置文件,例如在测试环境与生产环境之间切换配置,或在多个订阅配置之间快速轮换。-f参数可与-d参数配合使用,但通常单独使用,避免配置目录和文件路径不一致导致的混淆。-f参数与-d参数的区别-d参数指定配置目录,Clash从目录中读取默认文件名config.yaml,配置文件名称固定为config.yaml,不能自定义文件名。-f参数直接指定配置文件完整路径,不依赖默认文件名,可使用任意文件名(如test.yaml、prod.yaml)。使用-d时配置目录中必须存在config.yaml文件;使用-f时文件路径可自定义,文件名可任意命名,灵活性更高。两者功能互补,-d适合标准化部署,-f适合灵活测试和配置切换。-f参数在自动化场景中的使用在自动化脚本或临时配置测试中,-f参数可指定临时配置文件而不影响默认配置,实现配置的热切换而无需覆盖原有文件。执行./clash-f./temp_config.yaml快速测试新配置,配置目录保持原样,测试完成后删除临时文件即可。-f参数还支持指定备份配置文件或订阅转换后的临时配置文件,适合在配置更新前进行兼容性测试。若需验证配置格式,-t参数与-f配合使用:./clash-t-f./config.yaml。配置测试:-t参数-t参数的作用与用法-t参数用于测试配置文件格式是否正确,不实际启动代理服务,是避免因配置错误导致服务中断的重要工具。执行./clash-t-f/etc/clash/config.yaml,Clash解析配置文件并输出验证结果。若配置文件格式正确,输出Configurationfiletestpassed。若存在YAML格式错误或不支持的规则类型,输出具体的错误信息和行号,帮助用户快速定位和修正配置问题。该参数在修改配置后用于预验证,避免因配置错误导致服务启动失败后反复排查。-t参数与-d或-f的配合-t参数可与-d或-f参数配合使用,灵活验证不同来源的配置文件。./clash-t-d/etc/clash测试配置目录中的config.yaml,验证默认配置目录中的文件。./clash-t-f./config.yaml测试指定路径的配置文件,适合验证新配置或测试配置。在自动化部署脚本中,在重启Clash服务前先执行./clash-t-fconfig.yaml验证配置,通过后再执行systemctlrestartclash。-t参数在实际部署中的应用在无GUI服务器环境中,手动验证配置准确性至关重要,-t参数是配置修改后的必要步骤。在编辑config.yaml后执行./clash-t-f/etc/clash/config.yaml,确认无错误后再启动服务。若-t参数报告错误,根据输出的行号和错误信息修正配置文件。配置错误类型包括YAML缩进问题(yaml:unmarshalerrors)、不支持的规则类型(unsupportedruletype)和节点名称重复(duplicatename)等。版本信息与帮助参数-v显示Clash版本信息-v参数用于显示Clash内核的版本信息,帮助用户确认当前使用的内核版本。执行./clash-v输出类似Clashversion:v1.18.0的版本号信息。版本号对比可确认当前内核是否满足特定功能需求。订阅配置文件或规则集可能要求特定内核版本支持,使用-v可快速确认版本兼容性。-h显示帮助信息-h参数显示Clash所有命令行参数的完整说明,包括-d、-f、-t、-v等选项的用途和示例。执行./clash-h输出命令行帮助信息,适合不熟悉Clash命令行的用户快速参考。帮助信息中包括每个参数的简要描述和基本用法示例。版本兼容性检查在升级Clash内核或更新配置文件前,使用-v确认当前内核版本是否满足要求。若配置文件使用了新规则类型(如GEOSITE),需Mihomo内核版本不低于v1.18.0。版本不兼容可能导致unsupportedruletype错误。其他命令行参数-home-dir指定家目录-home-dir参数指定Clash的家目录,与-d参数功能类似。执行./clash-home-dir/etc/clash与./clash-d/etc/clash效果相同,均将配置目录设为/etc/clash。该参数是-d的别名,两者功能完全一致,优先使用-d保持简洁。-ext-ui指定外部UI目录-ext-ui参数指定Clash外部Dashboard面板的静态文件目录,用于自定义Web管理面板。执行./clash-ext-ui/path/to/ui指定Dashboard文件路径,通过http://127.0.0.1:9090/ui访问自定义面板。该参数需要external-controller已启用。大多数用户使用在线Dashboard(如YACD)而非本地UI文件。环境变量配置Clash部分配置可通过环境变量覆盖,无需修改配置文件。CLASH_HTTP_PORT覆盖port字段,CLASH_SOCKS_PORT覆盖socks-port字段,CLASH_API_SECRET覆盖secret字段。环境变量方式适合容器化部署(如Docker)中通过环境变量动态配置Clash。常见问题FAQ

教程

Clash vpn有没有纯命令行版本?无GUI怎么用?

ClashVPN的核心程序本身就是纯命令行版本,从GitHubReleases页面下载的内核文件(如clash-linux-amd64)可在终端中直接运行,不依赖任何图形界面。无GUI环境下使用Clash的基本方法是执行./clash-d/etc/clash启动代理服务,配置文件config.yaml需存放在指定目录中。常用命令行参数包括-f指定配置文件路径、-d指定配置目录、-t测试配置文件格式和-v查看版本信息。后台运行可通过nohup./clash-d/etc/clash&临时实现,或创建systemd服务(/etc/systemd/system/clash.service)配置ExecStart=/usr/local/bin/clash-d/etc/clash,通过sudosystemctlenableclash启用开机自启,sudosystemctlstartclash启动服务。pm2和supervisor是官方推荐的第三方进程管理工具,支持进程崩溃自动重启。无GUI环境通过配置external-controller启用API,使用curl命令或WebDashboard面板(如YACD)进行节点切换和状态查看。命令行版本的配置文件与图形界面客户端完全通用,用户可先在GUI环境中调试好配置再迁移到命令行环境。Clash核心本身就是命令行程序内核文件是CLI可执行文件而非GUI应用ClashVPN的核心程序(原版clash或Mihomo)本身就是一个命令行可执行文件,不包含任何图形界面组件。用户从GitHubReleases页面下载的clash-linux-amd64、clash-windows-amd64.exe等文件,本质上是在终端中运行的CLI程序,与图形界面客户端(如ClashVergeRev)是两个独立的组件。图形界面客户端通过在后台调用内核程序并套上可视化“外壳”实现操作,而命令行版本直接运行内核,不依赖任何图形库。因此,在无GUI的Linux服务器环境中,Clash核心程序可直接运行。无GUI环境下的原生适配Linux服务器(如UbuntuServer、Debianminimal)通常不安装图形界面,Clash核心程序无需X11或Wayland依赖即可运行。Clash核心使用Go语言编写,编译为静态二进制文件,不依赖外部动态库,可在无图形环境的系统中直接执行。用户通过终端命令启动、停止和管理Clash进程,所有配置通过编辑config.yaml文件完成,无需任何图形交互。命令行版本与图形界面的关系Clash命令行版本与图形界面客户端使用相同的配置格式(config.yaml),节点、规则和策略组的定义完全一致。命令行版本不包含GUI客户端的订阅管理、日志查看和节点切换等可视化功能,需通过命令行操作或外部控制器API实现这些功能。用户可先在图形界面客户端中调试好配置文件,再迁移到命令行环境运行,实现配置的平滑过渡。无GUI环境下运行Clash的基本方法直接执行内核文件启动代理服务在无GUI环境中运行Clash,最基本的方式是直接执行内核文件并指定配置文件路径。执行./clash-f/etc/clash/config.yaml启动Clash核心进程,代理服务立即开始运行。若Clash不在系统PATH中,需使用完整路径如/usr/local/bin/clash-f/etc/clash/config.yaml。启动后Clash在前台运行,输出日志到终端。若需后台运行,使用nohup./clash-f/etc/clash/config.yaml&将进程放入后台并忽略终端关闭信号。使用-d参数指定配置目录Clash支持通过-d参数指定配置目录,目录中需包含config.yaml文件和可选的Country.mmdbGeoIP数据库文件。执行./clash-d/etc/clash,Clash会自动加载/etc/clash/config.yaml配置文件。若配置目录中缺少GeoIP数据库,Clash启动时会自动下载。使用-d参数比-f参数更简洁,适合将配置文件统一存放在指定目录中。测试配置文件的正确性在启动Clash服务前,可使用-t参数测试配置文件的格式是否正确。执行./clash-t-f/etc/clash/config.yaml,若输出Configurationfiletestpassed则表示配置格式正确。若配置文件存在YAML格式错误或不支持的规则类型,-t参数会输出具体的错误信息,帮助用户在启动前修复配置问题。该功能在自动化部署和配置更新中尤为实用。命令行参数与常用选项-f指定配置文件路径-f参数用于指定Clash加载的配置文件路径,默认值为当前目录下的config.yaml。执行./clash-f/path/to/config.yaml,Clash加载指定路径的配置文件。该参数适合配置文件不在默认位置或需临时切换配置文件的场景。-d指定配置目录-d参数指定Clash的配置目录,目录中需包含config.yaml文件和GeoIP数据库文件。执行./clash-d/etc/clash,Clash加载/etc/clash/config.yaml。该参数使配置文件管理更整洁,适合将配置文件和相关资源统一存放在一个目录中。-t测试配置文件格式-t参数用于测试配置文件格式而不启动代理服务。执行./clash-t-fconfig.yaml,Clash解析配置文件并输出验证结果。若配置存在错误,输出具体的错误行号和原因,帮助用户快速定位和修正配置问题。该参数在自动化部署和配置更新中用于前置验证,避免因配置错误导致服务启动失败。版本信息与帮助执行./clash-v查看Clash内核版本信息。执行./clash-h查看所有命令行参数的说明。版本信息帮助用户确认当前内核是否满足功能需求,帮助参数提供完整的命令行选项参考。后台运行与管理方式使用nohup和&后台运行在无GUI环境中,使用nohup命令配合&符号可将Clash在后台持续运行。执行nohup./clash-d/etc/clash>/dev/null2>&1&启动Clash,忽略终端关闭信号,输出重定向到/dev/null。nohup确保进程在终端会话结束后不会被SIGHUP信号终止,&将进程放入后台运行。该方式适合简单场景的临时部署,但不具备进程守护和自动重启能力。创建systemd服务实现进程守护在Linux系统中创建systemd服务是管理Clash命令行版本的标准方式,支持开机自启、进程守护和日志管理。在/etc/systemd/system/clash.service中配置ExecStart=/usr/local/bin/clash-d/etc/clash,设置User=clash专用用户运行提升安全性。执行sudosystemctlenableclash启用开机自启,sudosystemctlstartclash启动服务,sudosystemctlstatusclash查看运行状态。systemd服务在进程崩溃时自动重启,适合生产环境长期运行。使用pm2或supervisor管理进程pm2和supervisor是Clash官方推荐的第三方进程管理工具,可在无GUI环境中管理Clash进程。执行pm2startclash---d/etc/clash启动Clash,pm2save保存进程列表,pm2startup生成开机自启脚本。supervisor在/etc/supervisor/conf.d/clash.conf中配置command=/usr/local/bin/clash-d/etc/clash,通过supervisorctl管理。两者均支持进程崩溃自动重启和日志管理。通过API管理无GUIClash配置external-controller启用API无GUI环境中的Clash可通过外部控制器API进行管理和监控,在config.yaml中设置external-controller:127.0.0.1:9090启用API服务。配置secret字段设置访问认证密钥。启用API后,可通过HTTP请求查询节点列表、切换节点、查看连接状态和重新加载配置。通过Dashboard面板可视化管理无GUIClash可通过WebDashboard面板进行可视化管理,在浏览器中访问http://yacd.haishan.me等Dashboard页面,填入Clash的API地址(如http://服务器IP:9090)和secret密钥即可连接。Dashboard面板支持节点切换、延迟测试、连接查看和规则管理等操作,为无GUI环境提供了便捷的可视化管理方式。可通过SSH端口转发将远程API映射到本地访问。使用curl命令管理Clash通过curl命令可直接调用ClashAPI进行管理操作。curlhttp://127.0.0.1:9090/proxies获取节点列表,curl-XPUThttp://127.0.0.1:9090/proxies/Proxy-d'{"name":"香港节点"}'切换节点,curlhttp://127.0.0.1:9090/connections查看活跃连接。无需图形界面即可完成节点切换、状态查看和配置重载等常见操作。常见问题FAQ

教程

Clash vpn的源码开源吗?代码安全有审计过吗?

ClashVPN核心内核(Dreamacro/clash和Mihomo)是开源的,采用GPL-3.0许可证,源代码公开在GitHub上,全球开发者可审查代码安全性。图形界面客户端开源状态存在差异,ClashforWindows是闭源的,历史上发现过CVE-2023-24205(远程代码执行,CVSS9.8)和CVE-2022-26255(恶意代码注入,CVSS9.8)等严重漏洞,建议迁移至开源客户端。ClashVergeRev和ClashMetaforAndroid等现代客户端是开源的,采用GPL-3.0许可证,代码公开可审查。CVE-2026-26422影响ClashVergeRev2.3.0之前版本,为本地提权漏洞,说明开源客户端仍需保持版本更新。开源社区的持续代码审查是Clash安全性保障的重要机制,但无独立第三方全面审计记录。用户应从官方GitHubReleases下载客户端,关注SecurityAdvisories及时升级修复版本。对安全性要求较高的用户可自行从源码编译Clash内核和客户端。保持客户端更新至最新版本是最有效的安全防护措施。Clash核心内核的源码开源状态Dreamacro/clash和Mihomo均以开源许可证发布ClashVPN的核心内核代码是开源的,Dreamacro维护的原版Clash和社区继任者Mihomo均采用GPL-3.0开源许可证发布。源代码公开托管在GitHub上,任何人都可以查看、审查和提出改进建议。GPL-3.0许可证要求任何基于Clash内核的衍生作品也必须开源,确保整个内核生态的透明度。开源代码的特性使得全球开发者能够持续检查代码质量、发现安全漏洞并提交修复,这是Clash安全性的基础保障之一。开源代码的可审计性开源代码允许任何用户自行审查Clash内核的实现逻辑,验证其是否存在恶意后门或隐私泄露风险。用户可下载源码在本地编译运行,完全掌控程序的执行流程,避免闭源软件中“黑盒”执行带来的信任风险。开源社区的持续审计机制使代码中的安全漏洞能被快速发现和修复,提升整体的安全性。但开源本身不保证代码绝对安全,用户仍需关注安全公告和版本更新。开源许可证对安全性的影响GPL-3.0许可证要求衍生作品必须开源,但部分闭源Clash客户端通过“动态链接”方式规避该限制,使得其代码不公开。开源内核与闭源GUI的组合导致用户使用的Clash软件部分开源、部分闭源,安全审查覆盖范围不完整。用户选择完全开源的Clash客户端(如ClashVergeRev)可获得更完整的安全透明度。图形界面客户端的开源状态差异ClashforWindows闭源且存在安全漏洞历史ClashforWindows是装机量最大的Clash图形客户端,但其源代码是闭源的,未公开在GitHub上。闭源特性使得用户无法自行审查其代码是否存在恶意收集用户数据或安全漏洞。历史上发现多个影响ClashforWindows的严重安全漏洞,包括CVE-2023-24205(允许通过配置文件覆盖执行远程代码,CVSS9.8严重)和CVE-2022-26255(通过注入恶意内容执行任意代码,CVSS9.8严重)。因代码闭源,用户无法自行确认这些漏洞是否已被完全修复,需依赖开发者的公告和版本更新。ClashVergeRev等现代客户端开源ClashVergeRev等较新的Clash图形界面客户端是开源的,采用GPL-3.0许可证,源代码公开在GitHub上。开源GUI客户端与开源内核组成完整的开源Clash解决方案,用户可自行审查全部代码,验证是否存在隐私泄露或安全后门。社区开发者持续为ClashVergeRev贡献代码,修复安全漏洞和功能缺陷,安全响应速度较快。但CVE-2026-26422(影响2.3.0版本之前的服务组件,本地提权漏洞)说明,即使是开源客户端仍需保持版本更新以修复最新安全漏洞。第三方客户端的来源风险从非官方GitHubReleases或应用商店下载的Clash客户端可能存在代码被恶意修改的风险。攻击者可能在闭源客户端中植入后门代码,或修改开源客户端源码后重新打包分发。用户不应从第三方下载站、网盘分享链接或不明来源处下载Clash客户端。官方发布的ClashVergeRev和ClashMetaforAndroid均通过GitHubReleases分发,可校验文件哈希值确认代码完整性。历史安全漏洞记录与修复情况CVE-2023-24205远程代码执行漏洞CVE-2023-24205影响ClashforWindowsv0.20.12及之前版本,攻击者可通过恶意的配置文件覆盖执行远程代码,CVSS评分为9.8(严重)。攻击者可构造包含恶意payload的配置文件,诱导用户加载后获取系统控制权。该漏洞已在ClashforWindows后续版本中修复,用户需升级至最新版本避免该风险。因CFW闭源,修复细节未公开披露,用户无法确认修复的完整性。CVE-2022-26255恶意代码注入漏洞CVE-2022-26255影响ClashforWindowsv0.19.8及之前版本,攻击者通过注入恶意内容执行任意代码,CVSS评分为9.8(严重)。该漏洞与配置文件的解析逻辑有关,攻击者可利用该漏洞在用户设备上执行任意命令。已在后续版本中修复,建议用户升级至最新版本或迁移至开源的ClashVergeRev。CVE-2026-26422本地提权漏洞CVE-2026-26422影响ClashVergeRev2.3.0版本之前的服务组件,为本地提权漏洞,攻击者可利用该漏洞提升系统权限。该漏洞的发现说明开源客户端的安全审查仍在持续进行,漏洞被公开后开发者迅速修复并发布新版本。用户需升级至2.3.0及以上版本以修复该漏洞,保持客户端更新是最有效的安全防护措施。社区安全审计与透明度开源社区持续进行代码审查Clash核心代码开源后,全球开发者和安全研究人员持续对代码进行审查。开源社区的审计机制使得代码中的安全漏洞能被快速发现和报告,漏洞修复后通过版本更新向所有用户推送。社区开发者对提交的代码进行审核,确保新功能不引入安全风险。开源社区安全审计是Clash安全性的重要保障,但其有效性依赖社区的活跃度和代码审查的覆盖范围。安全公告与版本更新响应速度开源项目通过GitHubIssues、SecurityAdvisories和公开邮件列表发布安全公告,用户可及时获取漏洞信息。ClashVergeRev在CVE-2026-26422披露后迅速发布修复版本,安全响应速度较快。闭源的ClashforWindows安全公告依赖开发者的独立发布,用户获取信息的渠道相对有限。用户应关注项目的ReleaseNotes和SecurityAdvisories,及时升级至修复版本。用户自行编译与信任验证对安全性要求较高的用户,可自行从源码编译Clash内核和开源客户端,完全掌控代码的执行逻辑。自行编译可验证编译产物是否与源代码一致,避免预编译二进制文件被篡改的风险。自行编译需要一定的技术能力,普通用户更依赖官方发布的预编译版本和社区信任机制。开源Clash客户端的推荐与安全实践优先选择完全开源的Clash客户端ClashVergeRev是目前推荐的开源Clash图形客户端,采用GPL-3.0许可证,代码公开可审查。ClashMetaforAndroid(安卓端)同样为开源客户端,代码公开在GitHub上,用户可自行审查或编译。Stash(iOS端)为闭源商业应用,iOS用户需通过AppStore下载,安全性依赖Apple审核和开发者信誉。始终从官方渠道下载最新版本从官方GitHubReleases页面下载ClashVergeRev、ClashMetaforAndroid等开源客户端,避免使用第三方下载站或不明来源的安装包。在GitHub上下载时核对项目名称和发布者身份,确认下载的发布版本与官方公告一致。保持客户端更新至最新版本,及时修复已知的安全漏洞。关注安全公告与版本更新关注Clash项目的GitHubReleases、SecurityAdvisories和社区讨论,及时获取安全漏洞信息。订阅项目更新通知,在安全漏洞披露后尽快升级至修复版本。对于历史漏洞已修复但用户未升级的版本,仍存在被攻击的风险。定期检查客户端版本是否为最新,是维持基本安全性的必要措施。常见问题FAQ

教程

怎么确保Clash vpn退出了代理就完全断开?

确保ClashVPN退出后代理完全断开,应通过系统托盘右键菜单选择“退出”而非点击窗口关闭按钮,正常退出时Clash会主动将系统代理设置恢复为直连状态。退出前先关闭“系统代理”开关可进一步确保代理配置被主动还原。Clash退出后若浏览器仍无法上网,进入Windows「设置→网络和Internet→代理」关闭“使用代理服务器”开关,或在命令提示符中执行netshwinhttpresetproxy重置WinHTTP代理。macOS用户需在「系统设置→网络→高级→代理」中取消所有代理协议勾选。浏览器代理插件(如SwitchyOmega)需切换为“直接连接”或“系统代理”模式,清除浏览器缓存和HSTS设置后重启浏览器。强制结束Clash进程后需手动关闭系统代理,清理DNS缓存(ipconfig/flushdns)释放Fake-IP残留映射,必要时执行netshwinsockreset和netshintipreset重置网络堆栈。关闭allow-lan参数或停止防火墙入站规则可防止局域网设备继续连接本机代理。确认代理完全断开可通过netshwinhttpshowproxy查看配置为空,并访问http://www.gstatic.com/generate_204确认正常响应。养成退出前关闭系统代理的习惯可避免每次手动清理残留配置。通过客户端正常退出触发清理流程使用系统托盘菜单选择退出而非关闭窗口确保ClashVPN退出后代理完全断开的第一步是使用正确的方式退出客户端,而非简单地关闭窗口。在Windows系统托盘中右键点击Clash图标,选择“退出”或“Quit”选项;在macOS菜单栏中点击Clash图标选择“退出”。正常退出时,Clash会执行清理流程,主动将系统代理设置从指向自身端口(127.0.0.1:7890)恢复为关闭状态。若直接点击窗口右上角的“X”关闭按钮,Clash可能仅关闭图形界面而核心进程继续在后台运行,代理设置保持不变。退出前先关闭系统代理开关在退出Clash客户端前,先手动关闭“系统代理”开关可确保代理配置被主动还原,即使退出时清理函数执行失败也能防止残留。在ClashVergeRev中点击「设置」页面,找到“系统代理”或“SystemProxy”开关将其关闭。关闭后系统代理恢复为直连状态,网络流量不再指向Clash端口。然后点击“退出”按钮完全关闭客户端。该操作顺序确保系统代理在Clash退出前已被清除。使用“重启核心”功能代替完全退出若需临时停止代理服务但后续仍需使用,可使用Clash的“重启核心”或“停止核心”功能临时断开代理。在ClashVergeRev的「设置」页面中点击“重启核心”停止当前核心进程,代理服务立即中断。再次点击“启动核心”恢复服务时,系统代理设置会在核心启动时自动配置。该方式比完全退出和重新启动更快速,适合需要频繁开关代理的场景。强制结束进程后手动恢复代理配置通过任务管理器结束Clash相关进程当Clash因崩溃或强制结束进程而非正常退出时,核心进程可能仍在后台运行占用端口和代理配置。打开任务管理器(Ctrl+Shift+Esc),在“进程”或“详细信息”标签页中查找clash.exe、clash-verge.exe或verge-mihomo.exe等Clash相关进程。选中所有Clash进程,点击“结束任务”强制终止。进程终止后,代理服务停止,但系统代理设置可能仍残留指向Clash端口。手动关闭Windows系统代理设置强制结束Clash进程后,需手动关闭系统代理设置才能完全断开代理。进入Windows「设置→网络和Internet→代理」,在“手动代理设置”区域找到“使用代理服务器”开关,将其关闭。若该开关已处于关闭状态但浏览器仍无法上网,可尝试先开启再关闭以刷新系统代理配置的注册表状态。手动取消macOS系统代理设置在macOS中,进入「系统设置→网络」,选择当前使用的网络连接,点击“高级”进入高级设置界面。切换到“代理”标签页,将列表中所有被勾选的代理协议(“网页代理HTTP”、“安全网页代理HTTPS”、“SOCKS代理”)取消勾选,点击“好”保存设置。系统代理恢复为空配置,网络流量恢复正常直连。使用命令行重置代理配置重置WinHTTP代理清除系统级残留即使系统代理开关已关闭,部分应用(尤其是命令行工具和系统服务)仍可能无法联网,需重置WinHTTP代理配置。在命令提示符中以管理员身份执行netshwinhttpresetproxy命令,清除所有通过netshwinhttpsetproxy设置的代理配置,将其重置为直连状态。执行后无需重启即可生效。重置Winsock和IP堆栈清理网络残留当代理配置残留影响网络堆栈时,执行Winsock重置和IP堆栈重置可彻底清理系统中的网络配置残留。以管理员身份打开命令提示符,依次执行netshwinsockreset和netshintipreset两个命令,执行完成后重启电脑使重置生效。该操作会重置所有网络适配器配置,重启前需确保有网络恢复的备份方案。清理DNS缓存释放残留解析记录Clash的Fake-IP模式可能在系统DNS缓存中留下198.18.x.x的虚拟IP映射,关闭Clash后这些缓存可能导致部分域名解析异常。在命令提示符中执行ipconfig/flushdns清理系统DNS缓存,清除残留的Fake-IP映射记录。清理后域名解析恢复正常,访问网站不再受虚拟IP残留影响。浏览器代理设置的独立清理切换浏览器代理插件为直连模式Clash退出后,若浏览器代理插件(如SwitchyOmega)仍设置为“代理”模式指向Clash端口,浏览器请求将持续尝试连接已关闭的代理。在SwitchyOmega中,将当前情景模式切换为“直接连接”或“系统代理”,确保浏览器使用与系统一致的代理状态。若插件配置了自动切换规则,检查规则是否包含特定域名的代理例外。暂时禁用插件可快速验证是否为插件层面的问题。清理浏览器缓存和HSTS设置代理配置变更后,浏览器缓存的DNS记录和HSTS设置可能导致特定网站持续出现连接错误。在Chrome中进入「设置→隐私与安全→清除浏览数据」,勾选“缓存的图片和文件”和“Cookie及其他站点数据”后执行清除。对于HSTS设置的残留,在Chrome中访问chrome://net-internals/#hsts,在“Deletedomainsecuritypolicies”中输入域名后删除。清除后重新启动浏览器,网络访问恢复正常。移除浏览器启动参数中的代理设置部分用户可能在Chrome快捷方式的目标路径中添加了--proxy-server=127.0.0.1:7890等启动参数,强制浏览器使用代理。退出Clash后该代理端口无服务,浏览器无法上网。检查Chrome快捷方式的属性,移除目标路径中的--proxy-server等代理相关参数,重新启动浏览器即可恢复直连。关闭Clash的局域网共享功能关闭AllowLAN防止其他设备继续使用代理ClashVPN开启局域网共享功能(AllowLAN)时,其他局域网设备可能仍将代理指向本机。关闭Clash后在系统设置中关闭代理,或修改config.yaml将allow-lan设为false并绑定bind-address:127.0.0.1。若电脑需继续运行但不提供代理服务,关闭AllowLAN可阻止其他设备通过本机IP连接到代理端口。停止防火墙入站规则或关闭端口若已在Windows防火墙中为7890端口创建了入站规则允许局域网连接,关闭Clash后该规则仍存在。可在防火墙高级设置中禁用或删除该入站规则,或修改规则的作用域限制为仅本机IP。删除规则后,局域网设备无法再通过7890端口连接到本机的代理服务。通知局域网设备移除代理配置局域网中其他设备若仍配置了指向本机的代理,在Clash关闭后这些设备将持续尝试连接已关闭的端口导致网络异常。通知所有使用该代理的设备,在其WiFi设置或系统代理设置中关闭代理配置,切换至直连网络。在手机端进入WiFi设置,将代理模式从“手动”切换为“无”或“自动”。在其他电脑的系统代理设置中关闭代理开关。常见问题FAQ