技术解析

用 OpenResty 写了一个 SNI 代理
0
2021-05-25 13:50:17
idczone

功能类似于dlundquist/sniproxy

推荐 OpenResty 加上 stream 模块和 ngx_stream_lua_module 模块。在 1.9.15.1 上测试通过。

测了一下比 nginx 的 stream 模块直接转发 443 速度低 20%。转发的部分现在还很 low ,需要读 TLS 的头取得包长度,然后一次性读完之后给对面。不知道各位有啥好的建议不。

国外服务器

Github→ https://github.com/fffonion/lua-resty-sniproxy.git


excited. +1s

赞.
```
wait(
spawn(_upl, self),
spawn(_dwn, self)
)
```
能不能直接换成 port forwarding?

绝赞!

好像没有这个能力. 只能去求一个类似 nodejs 的 xxx.pipe(yyy) 的 api 了, 直接挂在 read_event_handler 和 write_event_handler 上.
在这个 api 没有做出来之前可以把 send 和 receive 的字节数都去掉, 收到多少发多少.


收到多少发多少好像不行? send 和 receive 在一个轻线程里是同步的

可以直接调用 sock:receive() 而不需要 len 参数吧?

不加参数的话是相当于`'*l'`,读到换行符为止

写死 4096 如何?

这样碰到一些小包可能会堵住吧?
如果有像 go 里面的 channel 一样的东西就好了

那请问 echo server, socks5 server 都应该怎么写?

这种我觉得要么是头上带长度然后 receive(length),要么有分隔符的 receiveuntil(分隔符)?个人感觉 openresty 的 socket 得用同步的思想来写

春哥说正则有 jo 参数(

好我去加一个

mark

mark

自己改源码包装个 ioctl 出来得 fd buf 长度

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服