zeroiter+nginx 内网穿透
一叶舟轻

zeroiter+nginx 内网穿透

一叶舟轻
2023-11-26 / 0 评论 / 35 阅读 / 正在检测是否收录...

说到内网穿透,一般都会想起frp,但速度完全依靠公网服务器的带宽,而且每起一个服务都要暴露一个端口,比较麻烦。

而今天要讲的zeroiter给了我们另一种选择,还可以搭配nginx实现上面类似的效果。

  • 异地组网+反向代理 方案
  • 内网带宽能跑满,但需要加入网络。
  • 外网开放访问,但受服务器带宽影响,且需要只能开放可定端口。
    lpewf4o9.png

zerotier

一款异地组网工具,每台设备终端上只需要安装对应的客户端,加入到同一个网络组,就可以实现内网 IP 互相访问。
所有的设备都是客户端,连接方式是点对点(p2p)。

基础概念

Earth

指的就是所有设备都连接起来的整体的一个服务。

Network

每一个 Network 包含的所有设备都在同一个网络里。每个网络有一个 Network ID。各客户端通过这个 ID 连接到此网络。
一个账号是可以创建多个网络的。
网络分为 Public 和 Private。
一般我们自己组网是要用 Private,需要在页面授权设备才可以进行访问。

Planet

星球。指的是官方提供的服务器节点(好像在欧洲)。
各客户端都是通过这些服务来互相寻址的。
lpewjgll.png
lpewjmba.png

Moon

自定义的 Planet。由于 Zerotier 没有国内节点,在两个设备刚开始互连的时候有可能需要通过国外的节点寻址,(部分地区)可能创建连接的速度偏慢。
在自己的网络里搭建 Moon 可以使连接提速。
lpewke4t.png

Leaf

客户端。就是连接到网络上的每一个设备。其实经过测试,Moon 也是客户端的一种。这里特指没有额外功能,单纯用于连接的客户端。
lpewl2a9.png
lpewl687.png

nginx

完成了上面的组网后,虽然自己可以随意访问了,但对于没有加入网络的设备要怎么访问呢?
其实很简单,这时候整个可以视作同一个内网,只需要其中一台设备具有公网ip,通过其转发端口就可以了。

# stream模块,用于转发内网端口
stream {
    # v-Ubuntu ssh 22端口
    upstream rabbitmq{
        server 10.24.159.16:22;
    }
    server{
        listen 221; # 任意不占用的端口
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass rabbitmq; # 注意写法,不带http://
    }

    # v-Ubuntu mysql 3306端口
    server{
        listen 33069;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass 10.24.159.16:3306;
    }
    
    # v-Ubuntu redis 6379端口
    server{
        listen 63799;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass 10.24.159.16:6379;
    }
    
    # v-Ubuntu selenium 4455端口
    server{
        listen 4455;
        proxy_connect_timeout 10s;
        proxy_timeout 300s;
        proxy_pass 10.24.159.16:4488;
    }
}

# 仅支持http协议的
http {
    //...
}
0

评论 (0)

取消