Skip to content

fscarmen/microsocks

 
 

Repository files navigation

MicroSocks - 多线程、轻量、高效的 SOCKS5 服务器

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 将被加入白名单,后续使用无需再次认证。

支持的 SOCKS5 特性

  • 认证方式:无认证、密码认证、一次性认证
  • 网络协议:IPv4、IPv6、DNS
  • 传输协议:TCP(暂不支持 UDP)

故障排除

如果遇到程序崩溃,请尝试在 sockssrv.c 中逐步增加 THREAD_STACK_SIZE 的值,每次增加 4KB。

如果这样解决了你的问题,欢迎提交 Pull Request。

MicroSocks 使用最小安全线程栈大小来优化内存使用,这个值可能需要根据不同平台进行调整。

About

tiny, portable SOCKS5 server with very moderate resource usage

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C 81.2%
  • Roff 10.9%
  • Shell 5.5%
  • Makefile 2.4%