eaglexiang / eagle.tunnel.go

稳定的代理工具,比.NET版本更轻量和易用
MIT License
155 stars 42 forks source link

请问新添加的参数如何使用? #8

Closed konnyakuxzy closed 5 years ago

konnyakuxzy commented 5 years ago

0.7之前的版本似乎是没有speed-check这个参数的,似乎也能够进行限速

请问我应该如何设置这个参数呢?

比如我试图限制一个账号为test,密码为pswd,速度<=100kb/s,最多在五个地方登录的账号,应该如何配制服务端文件与客户端文件?

eaglexiang commented 5 years ago

其它都不用变,只需要增加speed-check=on就可以了。如果是你的举例的话。

test:pswd:100:5
konnyakuxzy commented 5 years ago

@eaglexiang 请问是在服务端的配置文件里写上 test:pswd:100:5 speed-check=on 还是在客户端里写?

eaglexiang commented 5 years ago

程序会对它知道的所有用户进行检测和限速。一般使用中,服务端对users.list中的用户进行限速,客户端对user参数填写的用户进行限速。

eaglexiang commented 5 years ago

@konnyakuxzy 为什么要加上speed-check参数呢,因为很多时候我们并没有限速和检查速度的需求(比如不显示实时速度的客户端)。那么让速度检测默认启动会浪费一些性能。

konnyakuxzy commented 5 years ago

@eaglexiang 哦,我大概知道了 也就是说客户端与服务端都能对这个进行限速 就算是服务端不开speed-check,如果客户端开了,那如果user参数设置的用户里设置了速度上限,也是会被限速的(刚刚实验了一下) 但是我发现这个速度限制有点迷。。。就是设置了限速后有时候会飙到这个速度上限之上一点,然后就开始往下掉,有时候甚至会掉到0b,这是我姿势不太正确吗?QAQ

eaglexiang commented 5 years ago

@konnyakuxzy 针对你的举例。如果在服务端这么配置:

# users.list
test:pswd:100:5

# server.conf
speed-check = on

便可以对test用户进行速度检查,并限速到100。

在客户端这样配置:

# client.conf
user = test:pswd
et = on
speed-check = on

这样就可以通过以下指令检查客户端的当前速度:

et check speed -r 127.0.0.1:8080

至于为什么要在client.conf中启用et,那是因为速度检查由et协议提供支持。

eaglexiang commented 5 years ago

@konnyakuxzy 对,你的理解非常准确。而且你说的现象也是存在的,因为速度检查周期为1s(为了照顾树莓派等低性能平台),实际传输速度很可能在不限速的一秒内直接飙过阈值。所以只能对平均速率进行限制。如果要提高控制精度就会增加性能消耗。

eaglexiang commented 5 years ago

@konnyakuxzy 目前的限速策略是检测到超速就暂停传输,直到平均速度降到基准以下再放行。暂时没想到怎么做才最合适,以后应该会改进。

如果有算法上的建议那是非常欢迎了!

konnyakuxzy commented 5 years ago

@eaglexiang emmm新的et-electron马上就要开发好了,除了界面上的美化似乎并没有太大的更新 请问check speed指令是如何调用的呢? 我刚刚试验了一下 首先打开了et.go,然后可以正常代理 然后运行指令:et check speed --relayer 127.0.0.1:8080(我本机的客户端设置了listen=127.0.0.1:8080) 然后并没有任何反馈,程序也一直没有退出,似乎卡死了 不过我当前使用的账户是没有速度限制的 请问这是怎么肥四呢?QAQ

konnyakuxzy commented 5 years ago

好吧我大概知道了,我还是把这个功能加进去吧

eaglexiang commented 5 years ago

@konnyakuxzy 客户端的配置是否打开以下参数?

et = on
speed-check = on
konnyakuxzy commented 5 years ago

@eaglexiang 嗯明白了 话说这个功能似乎牵扯到比较多的配置 您觉得是否有必要加入这个功能呢? (其他功能都已经添加完毕了,除了debug、ip-type以及location三个参数)

konnyakuxzy commented 5 years ago

@eaglexiang 另外刚刚我加上了这两个配置 等待大概10秒后输出: connect2Relayer -> checkVersionOfRelayer -> EOF QAQ

eaglexiang commented 5 years ago

@konnyakuxzy :smile:其实我觉得可以不加的。因为图形界面可以运行的地方我们通常拥有其它方式来查看网速,利用check指令来查看,实时性和开销都不太理想。

原本check指令的初衷就是方便测试和调试,并不是会经常用到的功能。不过auth version ping我认为相对比较必要。

konnyakuxzy commented 5 years ago

@eaglexiang 嗯,那马上能发布了OvO 但是还是有个问题我无法进行测试(因为我家网速今晚慢出奇迹),我需要确认一下 如果我在服务端没有进行限速,比如speed-check=off 然后本地我如下配置: user=test:pswd:100 speed-check=on et=on 是否可以将该用户test限速?

eaglexiang commented 5 years ago

@konnyakuxzy 出现这个报错说明你的客户端在版本校验阶段拒绝服务了。我猜测是你设置了head参数,此时et check speed是需要额外添加参数--head=的。

当然,我认为这种晦涩的操作不该由用户来学习,我也仅仅是用其作为调试工具使用。:smile:

eaglexiang commented 5 years ago

@konnyakuxzy 可以,此时限速由客户端完成,服务端并不知情。

另外其实我都不是很确定客户端是否应该提供限速功能。之所以ET支持客户端限速,纯粹是因为users.list与user参数共用了同一套校验机制。其实我自己是从没给自己的客户端限过速的:laughing:

konnyakuxzy commented 5 years ago

@eaglexiang 确实如此,谢谢2333 那么现在程序已经通过测试了,准备打包发布啦! 下一个版本的et-electron我可能会加入类似于终端的功能,可以让用户自定义参数,而不是封装好的几个按钮,目前这个功能似乎暂时没有什么必要 (家里没有Linux,Linux打包可能得明天了)

eaglexiang commented 5 years ago

@konnyakuxzy 不着急。如果能有自定义参数的接口那就太完美,很实用的功能!

konnyakuxzy commented 5 years ago

@eaglexiang emmmm这个功能后面再添加吧,今天时间怕是不够了,而且这个功能我估计还得好好调一调,比如用户是不知道config文件存在哪里的,如果需要调用的话也许得对参数字符串进行处理之类的 暂时用户使用的话基本上已经是完美的了,我先发(偷)布(个)吧(懒) 233333