tun2socks
tun2socks copied to clipboard
这个应该是仅限于TCP的转发吧,作者有做过UDP的转发吗?
能留个联系方式吗?
TCP转发就可以了(因为这个最麻烦),UDP的话需要你自己添加上去就可以了
不太擅长C++开发,所以想咨询一下。
兄弟应该有看过https://github.com/ambrop72/badvpn/
这个?在看了c语言版本的,我自己也有想要实现一个C++的版本,也是考虑使用boost库实现。没想到在网上竟然找到了你的实现。 能问下你这个版本后续还有计划维护吗?想和你讨论一下一起做维护。
兄弟应该有看过https://github.com/ambrop72/badvpn/
这个?在看了c语言版本的,我自己也有想要实现一个C++的版本,也是考虑使用boost库实现。没想到在网上竟然找到了你的实现。 能问下你这个版本后续还有计划维护吗?想和你讨论一下一起做维护。
不是太考虑维护这个项目,基于 “Lwip” 协议栈的效率太差了,极限只能跑到20~30Mbps,而且由于 “Lwip” 协议栈代码限制几乎很难做到协议栈的多核优化(高并发)。。另外我已经重新设计新的工具 “适应.NET CLR 2.0/4.0 ”的 VPN自用工具(PPP);;;其原理为 “内核协议栈桥接”,物理与虚拟链路重叠的一种实现办法。
你或许可以参考这种原理思路自己做一个,TCP/Link上网效率优异,除了打游戏延迟可靠性没有传统VPN工具(Pptp、L2TP、SkylakeNAT)好~~~几乎没有太多的缺点。。。
dd: ---- Local -> V -> Local Listener -> VPN server Local <- V <- Local Listener <- VPN server
@liulilittle 最近正在研究LWIP,遇到点小问题。。。
写入数据似乎有250ms延迟,尽管调用tcp_nagle_disable
可以解决此问题,但时常出现tcp_write
写入的数据不能完整发送。
具体表现为调用tcp_write
写入5840 Bytes
,但是只发送了一部分比如1440
(sent_callback
打印),其余的数据不再继续发送,像是卡主了。不调用tcp_nagle_disable
即便跑满100Mbps也一切正常。
日志打印没找到可用的信息,不知你有遇到此问题吗?
你要需要主动调用 tcp_output,tcp_write 只是把发送流拷贝到发送滑块窗口之中,如果不主动调用 tcp_output 函数,是无法发送出去的,
lwip 分了两种模式 1、后台线程,不需要主动调用 tcp_output , 2、收到TCP报文,触发 tcp_output
tcp_write 和 tcp_output 这2个函数,在外部其它函数和 tcp_sent 回调中,都是依次调用的。
我不大理解,为什么tcp_nagle_disable
会导致数据不继续发送,不调用此宏又一切正常。
这个只有具体看代码了,具体分析了。。LwIP也有很多发行版本,每个版本可能遇到的问题都不一样,你用最新的未必见得会遇到这个问题,但是 pcb 内存泄漏的问题,那么版本都有。
嗯,谢谢建议。我目前使用的最新版2.12,抽空降到1.4试一试。
使用Xcode和valgrind检测过,暂时还没有遇到内存泄漏和crash问题。
那挺好的,我是经常遇到内存泄漏 carsh 的问题,一切都是正常操作,然而当它的协议栈一旦工作开始跑了一会之后(流量要大),就会出现各种难以解决的:内存泄漏(严重的)、或者访问PCB/BUF堆内存被释放的问题。。
我只是粗略的测试,流量小和时间短。听你这么描述,好像是多线程引发的问题
不是多线程引起的,协议栈与逻辑处理代码都运行在同一个线程上面循环处理, LwIP 只允许一个线程R/W协议栈(多线程访问是低级错误),但是上述提到的问题还是会出现的;我太清楚你的版本会不会出现,但是我手上 1.x 的版本这个问题是经常发生的。
不是多线程引起的,协议栈与逻辑处理代码都运行在同一个线程上面循环处理, LwIP 只允许一个线程R/W协议栈(多线程访问是低级错误),但是上述提到的问题还是会出现的;我太清楚你的版本会不会出现,但是我手上 1.x 的版本这个问题是经常发生的。
兄弟现在base哪里,方便联系吗
不是多线程引起的,协议栈与逻辑处理代码都运行在同一个线程上面循环处理, LwIP 只允许一个线程R/W协议栈(多线程访问是低级错误),但是上述提到的问题还是会出现的;我太清楚你的版本会不会出现,但是我手上 1.x 的版本这个问题是经常发生的。
加个QQ联系下可以吗?