Shadowsocks SOCKS5 设置教程:从服务器参数到本地代理
简答:Shadowsocks 客户端连接成功后,通常会在本机提供一个 SOCKS5 代理,常见地址是 127.0.0.1,端口以客户端显示或配置为准。设置时先填写服务器地址、服务器端口、密码和加密方式,再让浏览器或应用使用本地 SOCKS5,而不是把服务器地址直接填进浏览器代理栏。
定义:Shadowsocks 是负责加密转发的代理协议,本地客户端则通常通过 127.0.0.1:本地端口向浏览器或其他应用提供 SOCKS5 代理。
先记住:服务器参数和 SOCKS5 参数不是一回事
这是 Shadowsocks SOCKS5 设置中最容易填错的地方。Shadowsocks 的本地组件会像传统 SOCKS5 服务器一样,为本机应用提供代理服务;它再把应用流量加密转发给远端 Shadowsocks 服务端。Shadowsocks 官方说明也将本地组件描述为可向客户端提供 SOCKS5 服务的组件。
| 参数 | 填写位置 | 含义 |
|---|---|---|
| 服务器地址 | Shadowsocks 客户端 | 远端服务器的 IP 地址或域名 |
| 服务器端口 | Shadowsocks 客户端 | 远端 Shadowsocks 服务监听的端口 |
| 密码 | Shadowsocks 客户端 | 与服务端匹配的加密密码 |
| 加密方式 | Shadowsocks 客户端 | 必须与服务端配置一致 |
| 本地地址 | 浏览器或应用代理设置 | 通常填写 127.0.0.1,也可能由客户端改成其他监听地址 |
| 本地端口 | 浏览器或应用代理设置 | 客户端在本机监听的 SOCKS5 端口,例如 1080,以实际配置为准 |
因此,浏览器代理栏通常不填写远端服务器地址和服务器端口,而是填写本地地址与本地端口。Windows 客户端项目文档给出的常见手动代理示例是 127.0.0.1:1080,并说明本地端口可以在服务器编辑界面修改;具体端口仍应以当前客户端界面为准。Shadowsocks for Windows 项目说明
配置前准备这 5 项信息
- 确认 Shadowsocks 服务器地址,可能是域名或 IP 地址。
- 确认服务器端口,不要与本地端口混淆。
- 确认密码,注意大小写、空格和特殊字符。
- 确认加密方式,客户端与服务端必须使用兼容配置。
- 确认本地 SOCKS5 监听地址和端口,常见是
127.0.0.1与1080,但不能凭经验强行填写。
如果你拿到的是 ss:// 链接或二维码,优先使用客户端的导入功能;如果是手动配置,则按上表分别填写远端连接参数和本地监听参数。部分图形客户端还允许测试延迟,但延迟测试通过不代表浏览器一定已经使用了正确的代理。
Windows 设置 Shadowsocks SOCKS5:最短操作路径
- 打开 Shadowsocks 客户端,添加服务器,填写服务器地址、服务器端口、密码和加密方式。
- 保存后选择该服务器并连接,确认客户端状态变为已连接或运行中。
- 查看客户端的本地监听端口。若未修改,部分 Windows 客户端示例使用
127.0.0.1:1080,但应以当前界面为准。 - 需要让多个支持系统代理的应用使用代理时,启用客户端提供的系统代理选项。Windows 客户端项目文档同时提醒,浏览器中的其他代理扩展可能覆盖系统代理。
- 只想让某个浏览器使用代理时,在浏览器代理设置中选择 SOCKS5,地址填写
127.0.0.1,端口填写客户端本地端口。
Windows 客户端通常提供系统代理、PAC 分流和全局模式等选项。项目说明列出了系统代理、PAC、全局模式以及手动设置 SOCKS5 或 HTTP 代理的基本方式。不同构建版本的菜单名称可能变化,找不到对应选项时,应以当前客户端帮助或设置页面为准。
可观察结果:浏览器代理设置保存后,访问一个普通网页并查看客户端日志或流量计数。如果客户端没有连接记录,先检查应用是否真的使用了 127.0.0.1:本地端口;如果有连接记录但网页失败,再检查远端参数、DNS 和代理类型。
macOS、Linux 和其他应用怎么填
跨平台设置的核心不变:Shadowsocks 客户端负责连接远端服务,应用负责连接本地 SOCKS5。图形客户端通常会提供“本地地址”“本地端口”或“代理端口”字段;命令行客户端则可能通过配置文件或启动参数创建本地监听端口。不要把某个客户端的菜单名称当成所有版本都相同。
- 浏览器:选择 SOCKS5,填写本地地址和本地端口;如果客户端同时提供 HTTP 代理,只有在应用不支持 SOCKS5 时才考虑使用 HTTP 入口。
- Git、终端或开发工具:在应用自己的网络或代理设置中填写 SOCKS5,或者使用该工具当前版本支持的代理配置方式。命令参数会随工具版本变化,执行前应先查看当前版本帮助。
- 支持 SOCKS5 的即时通信或下载工具:选择 SOCKS5 类型,填写本地监听地址和端口;不要填写 Shadowsocks 服务器端口。
- 不支持 SOCKS5 的应用:仅凭 Shadowsocks 客户端本身不一定能接管该应用流量,需要该客户端提供 HTTP 代理、系统代理或透明代理能力。
V2Ray 官方指南展示了一个典型结构:客户端的入站是 SOCKS,出站是 Shadowsocks;其中本地 SOCKS 端口与远端 Shadowsocks 服务器参数分属不同配置段。V2Ray 官方指南
SOCKS5、HTTP、PAC 和全局模式怎么选
| 模式 | 适合场景 | 注意事项 |
|---|---|---|
| 应用 SOCKS5 | 只让浏览器、Git 或某个软件走代理 | 应用必须支持 SOCKS5,其他应用不受影响 |
| 系统代理 | 希望多个遵循系统代理的应用自动使用代理 | 并非所有应用都会遵循系统代理,应用内代理可能覆盖它 |
| PAC | 按域名或规则决定哪些请求使用代理 | 规则不匹配时,请求可能不会进入 SOCKS5 |
| 全局模式 | 需要让更多支持系统代理的请求统一经过代理 | 仍不等于所有驱动、服务和 UDP 流量都会被接管 |
| HTTP 代理 | 应用只支持 HTTP 或 HTTPS 代理 | 不要把 SOCKS5 类型误选为 HTTP |
在支持 SOCKS5 的情况下,优先选择 SOCKS5 通常更直接;Shadowsocks-Qt5 使用手册也区分了 SOCKS5 与 HTTP(S) 本地代理,并提醒 HTTP(S) 模式可能增加一层代理处理。Shadowsocks-Qt5 使用手册
配置后怎么验证:按顺序检查,不要只看“已连接”
- 先验证本地端口:确认 Shadowsocks 客户端正在运行,并核对本地地址和端口。若应用提示连接被拒绝,优先检查端口是否写错、客户端是否退出或端口是否被其他程序占用。
- 再验证代理类型:应用中选择 SOCKS5 时,不要填写 HTTP;选择 HTTP 时,也不要直接填写 SOCKS5 端口,除非客户端明确提供 HTTP 代理入口。
- 再验证远端参数:服务器地址、服务器端口、密码和加密方式任一项不匹配,都可能表现为本地端口存在但请求无法完成。
- 检查分流规则:如果使用 PAC 或规则模式,确认目标域名确实命中了代理规则。可以临时切换到明确的全局或单应用 SOCKS5 测试,测试结束后再恢复原模式。
- 检查 DNS 与 IPv6:DNS 解析方式、IPv6 优先级和客户端的远程解析选项可能影响结果。若出现域名打不开但 IP 测试正常,记录浏览器、客户端和系统的 DNS 设置,再逐项切换验证。
- 检查 UDP 需求:网页访问主要使用 TCP,但部分应用需要 UDP。是否支持 UDP 取决于客户端、服务端和应用配置,不能因为 TCP 页面能打开就推断 UDP 一定可用。
一次访问成功只能说明当时的链路和配置可用,不能证明所有应用、所有协议或长期连接都正常。排查时应记录使用的客户端、代理类型、本地端口、目标应用和错误提示。
常见故障分流:看到什么现象就查什么
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
| 应用提示无法连接本地代理 | 客户端是否运行、本地地址和端口 | 重新查看客户端监听端口,关闭占用端口的其他程序或修改本地端口后重试 |
| 客户端显示已连接,但浏览器打不开 | 浏览器是否使用系统代理、代理类型是否选错、PAC 是否绕过 | 先临时手动指定 SOCKS5 与本地端口,排除系统代理和规则因素 |
| 能打开部分网站,部分域名失败 | DNS、IPv6、PAC 规则 | 分别测试域名与 IP,暂时切换规则模式,并核对 DNS 相关选项 |
| 连接超时 | 服务器地址、服务器端口、防火墙和服务端状态 | 重新核对服务端资料;若服务端状态无法确认,不能仅靠修改浏览器代理解决 |
| 浏览器可以用,其他应用不能用 | 应用是否支持 SOCKS5、是否有独立代理设置 | 在该应用内单独配置 SOCKS5,或确认客户端是否提供系统级接管能力 |
配置模板:只用于理解字段,不要直接复制
下面是结构示例,不是可直接复制的完整配置。字段名称、加密方式和启动参数会因客户端或内核版本不同而变化,使用前必须对照当前项目文档。
{
"local_address": "127.0.0.1",
"local_port": 1080,
"server": "替换为服务器地址",
"server_port": "替换为服务器端口",
"password": "替换为服务端密码",
"method": "替换为服务端支持的加密方式"
}local_address和local_port是本地应用连接的 SOCKS5 入口。server和server_port是 Shadowsocks 客户端连接的远端服务。password与method必须和服务端匹配。- 修改配置前先备份原文件;出现问题时恢复备份,并重新启动客户端。
如果你使用的是支持 JSON 的命令行实现,可参考对应项目的当前文档;例如 Shadowsocks Rust 项目同时提供本地与服务端命令及配置说明,但具体参数仍应以当前版本帮助为准。Shadowsocks Rust 项目文档
常见问题
Shadowsocks 的 SOCKS5 地址是不是服务器地址?
通常不是。服务器地址和服务器端口用于 Shadowsocks 客户端连接远端服务;浏览器或应用使用的是客户端在本机提供的 SOCKS5,常见形式是 127.0.0.1 加本地端口。
Shadowsocks SOCKS5 端口一般填多少?
没有固定值。部分 Windows 客户端示例使用 1080,但本地端口可以被修改,也可能因客户端不同而变化。应以当前客户端的本地代理或服务器编辑页面显示为准。
浏览器应该选 SOCKS5 还是 HTTP?
如果浏览器支持 SOCKS5,并且客户端提供的是 SOCKS5 本地入口,选择 SOCKS5;只有在客户端明确提供 HTTP 代理入口,或应用不支持 SOCKS5 时,才选择 HTTP。
Shadowsocks 客户端显示已连接,为什么应用仍然不能用?
“已连接”通常只说明客户端已经启动或建立了远端连接,不代表目标应用正在使用它。应检查应用代理类型、本地地址、本地端口、PAC 规则、DNS 和应用是否支持 SOCKS5。
配置 Shadowsocks SOCKS5 后,所有应用都会走代理吗?
不会自动保证。单独在浏览器中填写 SOCKS5 通常只影响该浏览器;系统代理、PAC、全局模式和透明代理的覆盖范围不同,而且部分应用会忽略系统代理。
相关阅读
参考资料
- What is Shadowsocks? | Shadowsocks(shadowsocks.org)
- Shadowsocks for Windows 项目说明
- Shadowsocks-Qt5 使用手册
- Shadowsocks | V2Ray Beginner's Guide(guide.v2fly.org)
- Shadowsocks Rust 项目文档