English | 简体中文
MicroSocks 是一个可以在远程服务器上运行的 SOCKS5 服务,当 SSH 隧道无法满足你的需求时,它能提供一个完美的替代方案。
-
超轻量级设计
- 为每个客户端创建一个小型堆栈的线程
- 主进程几乎不消耗任何系统资源
- 资源占用仅受限于文件描述符数量和可用内存
-
稳定可靠
- 优雅处理资源耗尽情况
- 在资源不足时,会直接拒绝新连接,而不是像其他程序那样崩溃退出
-
简单易用
- 无需配置文件
- 支持命令行快速设置
- 大多数情况下甚至不需要任何参数就能运行
这是 "rocksocks5" 的继任者,开发时考虑了以下目标:
- 优先使用标准 libc 函数而不是自定义函数
- 没有人为限制
- 不追求最小二进制大小,而是追求最小源代码大小、最大可读性、可重用性和可扩展性
得益于此,该程序支持开箱即用的 IPv4、DNS 和 IPv6,并且可以使用相同的代码。相比之下,rocksocks5 需要通过多个编译时定义来减小二进制大小,例如在仅启用 IPv4 支持时可以达到 10 KB 的极限值。
即便如此,如果针对大小进行优化,本程序在静态链接到 musl libc 时也不到 50 KB,这在最便宜的路由器上也能轻松使用。
microsocks -1 -q -i listenip -p port -u user -P passw -b bindaddr -w wl所有参数都是可选的。默认监听 IP 为 0.0.0.0,端口为 1080。
- -q:禁用日志输出
- -b:指定出站连接的绑定 IP
- -w:设置免认证白名单,支持多个 IP,用逗号分隔 例如:-w 127.0.0.1,192.168.1.1,::1
- -1:启用一次性认证模式,适用于不支持用户名密码认证的程序
使用支持认证的程序(如 curl)进行首次认证:
curl --socks5 user:password@listenip:port anyurl认证成功后,该 IP 将被加入白名单,后续使用无需再次认证。
- 认证方式:无认证、密码认证、一次性认证
- 网络协议:IPv4、IPv6、DNS
- 传输协议:TCP(暂不支持 UDP)
如果遇到程序崩溃,请尝试在 sockssrv.c 中逐步增加 THREAD_STACK_SIZE 的值,每次增加 4KB。
如果这样解决了你的问题,欢迎提交 Pull Request。
MicroSocks 使用最小安全线程栈大小来优化内存使用,这个值可能需要根据不同平台进行调整。