Results 16 comments of TKaxv_7S

可以,windows版不支持服务端,但是可以在路由器中运行服务端(OpenWrt这些),zerotier再配置下路由,可以直接暴露内网的机器,最后客户端直接在远程主机上启动就行了 ![TIM图片20200726173514](https://user-images.githubusercontent.com/22593101/88475860-6406c300-cf66-11ea-9a31-7b993e1e6af3.png) ![TIM图片20200726173518](https://user-images.githubusercontent.com/22593101/88475864-6701b380-cf66-11ea-8d6f-27c587031b25.png)

@piiiiiiiiiiiiiii 速度应该是一样的,我用出口带宽能跑满

@flyfishcn udp2raw-tunnel是套在zerotier外的,肯定不会走9993端口了

@piiiiiiiiiiiiiii 如果你的每个节点都需要用到udp2raw-tunnel,那每个节点都需要进行部署(对应服务端和客户端)。 如果你需要双向打通,那在每台电脑上要同时部署服务端与客户端。 如果你只需要单向打通,那在服务端上只有需要部署udp2raw-tunnel server,客户端(一台或多台)只需要部署udp2raw-tunnel client。 拿远程控制举例: ZeroTier配置:在官网页面单独给服务端设备(OpenWrt)配置路由,其他保持自己的配置就行 服务端设备(OpenWrt):部署ZeroTier、udp2raw-tunnel server,路由器再连接到目标主机(被控端电脑),同时要给目标主机分配静态IP并配置好udp2raw的端口、IP参数信息,启动udp2raw服务,长期用可以设置开机自启,目标主机上什么都不要配置,等待连接就行了。 客户端设备(控制端电脑):部署ZeroTier、udp2raw-tunnel client,配置好udp2raw的端口、IP参数信息,启动udp2raw客户端,自动连接上,现在可以启动远程工具,使用目标主机的静态IP连接即可。 上面只是大概介绍下流程,因为这个的确很麻烦,很多细节没法说清楚,实在想用是可以自己折腾出来的,这个作为参考应该会有帮助

@flyfishcn 你的网络环境应该很简单,可能是直通了,zerotier打洞适用在复杂的网络情况下,可以用多层路由的网络试试,我的网络环境很复杂,可以肯定的告诉你是有用的,远程控制、包括串流玩游戏都很稳定,在之前是一直被运营商断流的,后面的问题,用udp2raw-tunnel肯定是需要指定好端口的,没走这个端口的包那肯定是没被udp2raw-tunnel处理的

@piiiiiiiiiiiiiii 看来上面都白说了。。。套udp2raw-tunnel也是点对点,只是客户端、服务端都需要搭好,还有,点对点本来就是受限与某一方带宽,与之前完全没有区别,不是“由于要走服务器”,而是数据本身就是服务器传出来的。。。中间没有第三方服务器参与流量转发

@flyfishcn 其实你的问题就是zerotier没走udp2raw-tunnel,应该是调用时IP指向错了,查一下udp2raw-tunnel和zerotier的官方文档,理清服务端、客户端、zerotier默认路由与子路由之间的IP关系,应该就解决了

> @TKaxv-7S 大佬我想问下使用zerotier的话需要在两端都使用OpenWrt吗? 一端就行

> @TKaxv-7S 感谢回复,再请教个问题,既然upd2raw-tunnel是套在zerotier外面的,那么问题在于,upd2raw-tunnel是怎么连接上服务器的?因为在配置时服务器客户端都要指定IP地址,服务器肯定是监听所有IP,那客户端的IP如何配置呢?配置成服务器的外网IP吗?还是说使用--lower-level参数走数据链路层?服务器的外网IP直接连接是不可以的, 因为还有运营商nat的存在,不打洞是无法直接连接上的。 > ![image](https://user-images.githubusercontent.com/17448639/97651769-ee941c80-1a97-11eb-9978-38377c28bc0c.png) > 就像这张图,其中数据发送流程就是:通过虚拟网卡加路由的方式将需要走隧道的流量转发到openvpn client,然后openvpn client通过配置文件中配置好的端口将流量转发给本地地址的3333端口,upd2raw-tunnel客户端将流量加密后发送给IP为45.66.77.88:8855的服务器,之后解密发送给openvpn server,通过虚拟网卡加路由转发给应用程序。这个流程是没问题的。 > 但是其中upd2raw-tunnel 客户端需要连接`45.66.77.88:8855`,这个IP看起来是个外网IP,如果是两个内网打洞的话是没有这个IP的,这时应该怎么配置upd2raw-tunnel客户端呢? 配置地址是zerotier的指定的路由地址,比如:192.168.1.1、172.28.0.2,但这个地址是zerotier提供的。如果按照你的思路来,我之前说的upd2raw-tunnel在zerotier外 可能是错的,有可能是zerotier在upd2raw-tunnel外,又或者里外都有做数据处理,具体原理没深入,只能问作者了,但是有一点:客户端使用的地址是zerotier提供的,而且一定可用。

> @TKaxv-7S 我不是说我的思路是对的,我只是借用这张图来解释我认为可能的思路和数据流向,这张图所有的数据流向都是在第三层进行处理的,因为都用到了IP地址。我认为upd2raw-tunnel在zerotier外是对的,但是如果upd2raw-tunnel需要使用到zerotier的IP地址的话和前面的假设相冲突,这里就有了矛盾。 > 而且按理说如果zerotier在upd2raw-tunnel外的话,应该达不到抵抗qos的效果,因为数据包仍然是zerotier发送的,最外层仍然是udp,并且被upd2raw-tunnel处理过的包是被加密后放到了zerotier的udp包中的。。 > 所以大佬能否简单分享下大概的数据流向? 其实我的疑问和你一样,按理说upd2raw-tunnel应该包在zerotier外,但是又和zerotier的IP路由有冲突,也是没想通,所以才会猜想upd2raw-tunnel在zerotier拿到网络数据前后都进行了处理,不然无法解释,真的要理解原理可能还是得看源码,可惜我是做Java的,看不懂C,我就不深入了,能用就行,哈哈