Giter VIP home page Giter VIP logo

lightsocks's Introduction

GoDoc

一个轻量级网络混淆代理,基于 SOCKS5 协议,可用来代替 Shadowsocks。

  • 只专注于混淆,用最简单高效的混淆算法达到目的;
  • 不会放大传输流量,传输流量更少更快,占用资源更少(内存占用1M左右,CPU 占用 0.1% 左右);
  • 纯 Golang 编写,跨平台,对Golang感兴趣?请看Golang 中文学习资料汇总

想了解 Lightsocks 的实现原理?请阅读文章:你也能写个 Shadowsocks

下载

releases 页下载最新的可执行文件,注意选择正确的操作系统和位数(Mac 系统内核为 darwin)。 解压后会看到2个可执行文件,分别是:

  • lightsocks-local:用于运行在本地电脑的客户端,用于桥接本地浏览器和远程代理服务,传输前会混淆数据;
  • lightsocks-server:用于运行在代理服务器的客户端,会还原混淆数据;

启动

启动 lightsocks-server

在代理服务器下载好 lightsocks-server 后,执行命令:

./lightsocks-server

就可启动服务端,启动成功后会输出如下日志:

服务监听地址 listen:
:12315
密码 password:
******

假如服务器的 IP 是 45.56.76.5,则以上日志的含义是指:

  • 服务监听在 45.56.76.5:12315,监听端口12315是随机生成的;
  • 使用的密码是 ******

除此之外你还可以通过 Docker 快速启动

启动 lightsocks-local

在本地电脑下载好 lightsocks-local 后,执行命令:

./lightsocks-local

就可启动本地代理客户端,会看到如下日志:

2017/10/11 10:03:16 保存配置到文件 /Users/username/.lightsocks.json 成功
2017/10/11 10:03:16 lightsocks-client:master 启动成功 监听在 [::]:7448

这表明生成了一份配置文件到 /Users/username/.lightsocks.json。 为了让客户端用指定的密码去连接服务器,需要给客户端传入参数,为此需要修改该配置文件为如下:

{
  "remote": "45.56.76.5:12315",
  "password": "******"
}

重新启动 lightsocks-local 后,再使用监听在 127.0.0.1:7448 的本地 SOCK5 服务就可以正常使用了。

都启动成功后,可参考 搭配 Chrome 使用 配置你的 Chrome。

自启动

macOS
$ sudo vim /Library/LaunchDaemons/lightsocks.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>RunAtLoad</key>
    <true/>
    <key>Label</key>
    <string>lightsocks</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/lightsocks-local</string>
            <string>/Users/macOS-username/.lightsocks.json</string>
    </array>
   <key>StandardOutPath</key>
    <string>/var/log/lightsocks.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/lightsocks.log</string>
</dict>
</plist>

启用开机自启动:

sudo launchctl load -w /Library/LaunchDaemons/lightsocks.plist

关闭开机自启动:

sudo launchctl stop /Library/LaunchDaemons/lightsocks.plist
sudo launchctl unload -w /Library/LaunchDaemons/lightsocks.plist

注意:

  • lightsocks-local 和 lightsocks-server 的 password 必须一致才能正常正常使用,password 不要泄露。
  • password 会自动生成,不要自己生成。两端的password要保持一致,一般采用拷贝 lightsocks-server 生成的密码到 lightsocks-local 使用的本地配置文件中。
  • 如果你想自定义保持配置文件的名称,可以通过 lightsocks-local your-name.json 启动,这时配置文件会保存到 ~/your-name.json 中。
  • 启动后会把配置保存在 ~/.lightsocks.json 文件中,启动前会去 ~/.lightsocks.json 文件中读取配置,你可以在启动前修改~/.lightsocks.json 文件来应用你需要的配置,格式如下:
{
  "remote": "45.56.76.5:7448",
  "password": "******",
  "listen": "127.0.0.1:7448"
}

其它语言实现

lightsocks's People

Contributors

chyroc avatar cxwx avatar gwuhaolin avatar leviathan1995 avatar xpzouying avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

lightsocks's Issues

不能编译

release failed error=fatal: Invalid object name 'warning'.

要怎么才能编译?

访问阿里云国际版无法登陆?

开了lightsocks后,访问 阿里云国际版,无法登陆,页面已经加载出来了,但是登陆框是空白的。无法登陆

用同一台VPS测试过SSR V2ray Brook,均没有这个问题

增加流量统计

能否考虑增加流量统计,统计单个进程通过代理走的流量是多少,代理总共流量使用了多少!

broken pipe & request ack

image
如图 两边配置成功,显示broken pipe 或者request ack, 这是什么原因,该如何解决呢

后台运行自动失效

我用nohup ./lightsocks-server &启动之后,一段时间后连不上,需要重新启动启动才行,但是查看进程还在。怎样才能让它一直后台运行?

关于socks协议的流程,想请教一下!

sever端的handleConn

服务端到底是如何解析客户端发过来的数据的?

我看代码是在handleConn开始处判断是不是socks5协议信息。如果不是就直接返回了。

所以那是如何接收local真正的http请求呢?

在后面又开了一个 go程 , err := localConn.DecodeCopy(dstServer)
似乎这里是接收真实的http请求的。
为何这里又不会进入到 判断是不是socks5请求的逻辑呢


反复看了你文章的描述,对于这句

数据转发
客户端在收到来自服务器成功的响应后,就会开始发送数据了,服务端在收到来自客户端的数据后,
会转发到目标服务。

实在不懂具体是怎么样的?

这两个点让我有点晕了。。。。

Windows 客户端无法启动

Windows 客户端双击之后,窗口只是闪了一下就消失了,请问这个要怎么处理呀?
谢谢!

代码lint问题

代码注释写的挺不错的,但是我的编辑器打开还是有不少lint提示,比如:

  1. if 条件里return 那么后面的else其实可以不要else这里block,直接写在下面github.com/gwuhaolin/lightsocks/server/server.go:143
  2. fmt Error 错误写成Errorf的 github.com/gwuhaolin/lightsocks/cmd/config.go:36
  3. 变量名Json ==> JSON等等

空了可以优化下

存在内存泄露

现象:

  • 使用期间内存占用只增加不见,启动时占用不到1M,运行一天后占用5M
  • 内存增长速度很慢

初步通过 code review 无法找到导致内存泄露的原因,还请哪位大神帮忙看看,找出原因~

dial tcp :0: getsockopt: connection refused

你好,我用的vultr的VPS,Ubuntu17的系统,使用时出现这个问题??

local.go:60: 连接到远程服务器 :0 失败:dial tcp :0: getsockopt: connection refused
local.go:60: 连接到远程服务器 :0 失败:dial tcp :0: getsockopt: connection refused
local.go:60: 连接到远程服务器 :0 失败:dial tcp :0: getsockopt: connection refused

server配置:

{
        "listen": ":39139",
        "remote": "",
        "password": "3P8c84MN+5Ifs7A1ItTZBz7OwZZcS7b0i1OFZK8C0T0M2/FvJ1v9GXRHnW7r0mmV+R2yo/rvfol7LS+Ep3ks4HMkSKJQ3prL5hJhghOKVyM4TMKgQghdF49AdwuehzeM9ckaWsiqrI0/A7htBe7AKEExqyoWJVSGGw94ukmTl9ozNErpME19eme74RD4tPDydVllvwqxBFUYOpSf4y4hTgmomGMrxszP9ps8RhEp06ns3+pigXJoJpmtalHntfztT+Q71WumjpF8YNcAgGbFruXonHF/WOKkDjbDvNgyX2yhdt2Q0MpeASC9iM0UcL6l9zm3x0S5Vv4GxEXWUkMeFQ=="
}

local配置:

{
        "listen": ":7448",
        "remote": "45...:39139",(IP不方便打出来)
        "password": "3P8c84MN+5Ifs7A1ItTZBz7OwZZcS7b0i1OFZK8C0T0M2/FvJ1v9GXRHnW7r0mmV+R2yo/rvfol7LS+Ep3ks4HMkSKJQ3prL5hJhghOKVyM4TMKgQghdF49AdwuehzeM9ckaWsiqrI0/A7htBe7AKEExqyoWJVSGGw94ukmTl9ozNErpME19eme74RD4tPDydVllvwqxBFUYOpSf4y4hTgmomGMrxszP9ps8RhEp06ns3+pigXJoJpmtalHntfztT+Q71WumjpF8YNcAgGbFruXonHF/WOKkDjbDvNgyX2yhdt2Q0MpeASC9iM0UcL6l9zm3x0S5Vv4GxEXWUkMeFQ=="
}

请问是什么问题啦??谢谢

superh cpu

您好,能否增加sh4( ST40-300)的binary,謝謝。

Windows/Linux 客户端/服务端 无法自定义配置文件目录

lightsocks-local.exe
config.go:49: 从文件 C:\Users\T233/.lightsocks.json 中读取配置
...
lightsocks-local.exe D:\abc\lightsocks.json
config.go:49: 从文件 C:\Users\T233/D:\abc\lightsocks.json 中读取配置

./lightsocks-server
config.go:49: 从文件 /root/.lightsocks.json 中读取配置
config.go:43: 保存配置到文件 /root/.lightsocks.json 成功

./lightsocks-server /usr/local/lightsocks/config.json
config.go:43: 保存配置到文件 /root/usr/local/lightsocks/config.json 成功

好像无论写什么,都会在前面强制加上 C:\Users\T233/ 用户文档目录。
只能自定义配置文件名称,不能自定义配置文件位置。客户端与服务端都是。
而 Linux 客户端与服务端同样也是,强制前面加上 /root

加密

问一下,这个默认有加密的吗?就是说默认有使用如chacha20这样的加密算法吗?

支持多账户

这里是指支持配置多个服务端,把来自本地的流量在 lightsocks-local 端根据一种合理的算法分配到各个服务端,以降低一台服务器宽带有限带来的网速慢。

socks5 链接问题

测试发现在 socks5 代理下貌似有点小问题:

  • docker 在配置 lightsocks sokcs5 代理后进行 pull 镜像,会出现 pull 完成后出现 retry 动作,感觉像是 最后校验失败
  • privoxy 将 lightsocks sokcs5 转换为 http 代理后,wget 走代理下载文件出现 反复 重试动作

curl 日志如下

mritd.docker ➜  ~ proxy wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
--2017-10-27 17:01:33--  https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
Connecting to 10.10.1.3:8123... connected.
Proxy request sent, awaiting response... 302 Found
Location: https://r1---sn-hxb54vo-3i8e.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz?cms_redirect=yes&expire=1509109290&ip=92.223.67.84&ipbits=0&mm=28&mn=sn-hxb54vo-3i8e&ms=nvh&mt=1509094368&mv
=u&pcm2cms=yes&pl=26&shardbypass=yes&sparams=expire,ip,ipbits,mm,mn,ms,mv,pcm2cms,pl,shardbypass&signature=842925B6E455C6A6508144799487CC11807163B9.32F90844C6C995A72AEF34F627428E8C2D6E119E&key=
cms1 [following]
--2017-10-27 17:01:34--  https://r1---sn-hxb54vo-3i8e.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz?cms_redirect=yes&expire=1509109290&ip=92.223.67.84&ipbits=0&mm=28&mn=sn-hxb54vo-3i8e&ms=nvh&m
t=1509094368&mv=u&pcm2cms=yes&pl=26&shardbypass=yes&sparams=expire,ip,ipbits,mm,mn,ms,mv,pcm2cms,pl,shardbypass&signature=842925B6E455C6A6508144799487CC11807163B9.32F90844C6C995A72AEF34F627428E
8C2D6E119E&key=cms1
Connecting to 10.10.1.3:8123... connected.
Proxy request sent, awaiting response... 200 OK
Length: 104247844 (99M) [application/octet-stream]
Saving to: ‘go1.9.2.linux-amd64.tar.gz.1’

98% [=====================================================================================================================================================>  ] 103,070,960 7.12MB/s   in 10s

2017-10-27 17:01:44 (9.77 MB/s) - Connection closed at byte 103070960. Retrying.

--2017-10-27 17:01:45--  (try: 2)  https://r1---sn-hxb54vo-3i8e.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz?cms_redirect=yes&expire=1509109290&ip=92.223.67.84&ipbits=0&mm=28&mn=sn-hxb54vo-3i$e&ms=nvh&mt=1509094368&mv=u&pcm2cms=yes&pl=26&shardbypass=yes&sparams=expire,ip,ipbits,mm,mn,ms,mv,pcm2cms,pl,shardbypass&signature=842925B6E455C6A6508144799487CC11807163B9.32F90844C6C995A72AE$34F627428E8C2D6E119E&key=cms1
Connecting to 10.10.1.3:8123... connected.
Proxy request sent, awaiting response... 206 Partial Content
Length: 104247844 (99M), 1176884 (1.1M) remaining [application/octet-stream]
Saving to: ‘go1.9.2.linux-amd64.tar.gz.1’

99% [++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++> ] 103,841,008 2.54MB/s   in 0.3s

2017-10-27 17:01:46 (2.54 MB/s) - Connection closed at byte 103841008. Retrying.

--2017-10-27 17:01:48--  (try: 3)  https://r1---sn-hxb54vo-3i8e.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz?cms_redirect=yes&expire=1509109290&ip=92.223.67.84&ipbits=0&mm=28&mn=sn-hxb54vo-3i8
e&ms=nvh&mt=1509094368&mv=u&pcm2cms=yes&pl=26&shardbypass=yes&sparams=expire,ip,ipbits,mm,mn,ms,mv,pcm2cms,pl,shardbypass&signature=842925B6E455C6A6508144799487CC11807163B9.32F90844C6C995A72AEF
34F627428E8C2D6E119E&key=cms1
Connecting to 10.10.1.3:8123... connected.
Proxy request sent, awaiting response... 206 Partial Content
Length: 104247844 (99M), 406836 (397K) remaining [application/octet-stream]
Saving to: ‘go1.9.2.linux-amd64.tar.gz.1’

99% [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ] 104,037,616 1.13MB/s   in 0.2s

2017-10-27 17:01:49 (1.13 MB/s) - Connection closed at byte 104037616. Retrying.

--2017-10-27 17:01:52--  (try: 4)  https://r1---sn-hxb54vo-3i8e.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz?cms_redirect=yes&expire=1509109290&ip=92.223.67.84&ipbits=0&mm=28&mn=sn-hxb54vo-3i8
e&ms=nvh&mt=1509094368&mv=u&pcm2cms=yes&pl=26&shardbypass=yes&sparams=expire,ip,ipbits,mm,mn,ms,mv,pcm2cms,pl,shardbypass&signature=842925B6E455C6A6508144799487CC11807163B9.32F90844C6C995A72AEF
34F627428E8C2D6E119E&key=cms1
Connecting to 10.10.1.3:8123... connected.
Proxy request sent, awaiting response... 206 Partial Content
Length: 104247844 (99M), 210228 (205K) remaining [application/octet-stream]
Saving to: ‘go1.9.2.linux-amd64.tar.gz.1’

99% [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ] 104,119,536 --.-K/s   in 0.1s

2017-10-27 17:01:52 (736 KB/s) - Connection closed at byte 104119536. Retrying.

^C

对网络层不算太熟悉,但是感觉像是链接被提前关闭了

包结构

目前的结构使导包语句中有gwuhaolin/lightsocks,没办法fork,只能go get后直接修改,这样就没办法提PR了

一 无法自定义密码,二 配置文件 password 参数留空不会重新生成密码

一是 无法自定义密码(提示密码不合法,即使是几百位的随机字符串)。
二是 当我想要再次随机生成一个新的密码时,我把 配置文件中的 password 参数留空,再次启动 lightsocks-server 后,报错提示密码不合法,而没有自动生成。

{
	"listen": ":50573",
	"remote": "",
	"password": ""
}

main.go:52: lightsocks-server:1.0.6 启动成功 监听在 [::]:50573
config.go:49: 从文件 /root/.lightsocks.json 中读取配置
config.go:43: 保存配置到文件 /root/.lightsocks.json 成功
main.go:36: 不合法的密码

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.