Thanks to visit codestin.com
Credit goes to github.com

Skip to content

tiny, portable SOCKS5 server with very moderate resource usage

License

Notifications You must be signed in to change notification settings

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

No packages published

Languages

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