将TCP/UDP放到WebSocket中传输(就能走CDN)基于ws的内网穿透 隧道代理 tcp2ws 全平台0依赖
小优化可以不更新
修复客户端被外部掐断ws后重连失败时出错,错误表现为重连失败后不会再次重连并一直出错 #21 重写了重连的方式,在客户端被外部断开ws时,重连ws,如果连接失败将在下次客户端收到tcp数据包时重新尝试连接
修复保存的数据使用了同一个内存地址导致都是一样的内容的问题,所以服务端也需要更新
在多次测试检查后,找到了这个问题,很生草的赋给了一个新的局部变量,于是第一次优选出来的ip没存到,在第一次ttl超时后将正常工作 需要更新客户端 修复了这个问题 #19
#15 更新客户端
2023/08/21 重新上传更小的二进制文件
由正则驱动的resolv.conf解析器,如有配置,优先使用配置的dns并使用udp 53连接解析域名,方便内网用户使用(无法访问公共dns) Windows的话咩咩不知道配置存在哪里,所以就没有了,如果有什么好办法,可以提个issuse来讨论下(为了良好的兼容性,尽量不引入新的库) 需要更新客户端
用正则写了个hosts解析器,来弥补一下在没有本地dns的情况下实现某些奇怪的域名ip解析需求
^([0-9.]+).+[ \t](hostname$|hostname.*)
这个正则应该可以覆盖目前常见的hosts配置格式,看起来应该可以优化但没想到怎么优化
虽然咩咩也不知道这么干有什么用,因为已经会自动测试连通性并选择延迟最小的ip使用,但是 #14 有这个需求那就写一下吧
只需要更新客户端
#13 提的需求
只需更新客户端
另外go获取dns记录的ttl,只能使用miekg/dns
这个库,别无它法
不再获取本地设置的dns用于解析,但是会先尝试使用本地udp53的dns服务
@chengziqing 的需求 #5 调了半天重写了两次写出来了 需要更新客户端和服务端才能支持UDP转发,有向下兼容,但在有一端是旧版时无法使用UDP转发 所有版本看这里 https://github.com/zanjie1999/tcp-over-websocket/releases
8.5修复了如果从dns获取的域名ip优选到ipv6将无法连接的问题
8.4修复了修复了8.3版本在Android的Termux下无法使用系统DNS解析域名导致无法启动 如果系统的DNS无法解析ws服务器的域名,将使用opendns的5353非标准端口进行初始化时的nslookup
以下为8.3的更新日志: 本次更新主要在客户端,服务端可以不更新
客户端启动时会自动获取域名对应的ip(如果服务端链接是个域名的话),会进行tcping选择延迟最低的ip进行连接 与直接替换掉链接不同,服务端依然能收到连接使用的域名(像cf这种公共cdn,使用域名判断该转给谁) 在Android中运行的时候再也不会因为开了Vpn而导致域名无法解析了 也不会因为Openwrt的dnsmasq上游爆炸而导致无法连接 nginx提示的ip改为127.0.0.1照护一下Windows用户 @manaphp 的需求:
客户端可以指定tcp监听ip,就像这样只监听本地tcp2ws ws://127.0.0.1/ws/ 127.0.0.1:1234 https://github.com/zanjie1999/tcp-over-websocket/issues/8 nginx提示的location改为随机12位uuid https://github.com/zanjie1999/tcp-over-websocket/issues/9
本版本修复了修复了8.3版本在Android的Termux下无法使用系统DNS解析域名导致无法启动 如果系统的DNS无法解析ws服务器的域名,将使用opendns的5353非标准端口进行初始化时的nslookup
以下为8.3的更新日志: 本次更新主要在客户端,服务端可以不更新
@manaphp 的需求:
tcp2ws ws://127.0.0.1/ws/ 127.0.0.1:1234
#8