V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jason56
V2EX  ›  分享创造

nowtunnel 一个简单的跨网转发和 sdwan 解决方案

  •  
  •   jason56 · 94 天前 · 1337 次点击
    这是一个创建于 94 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    • 通过多地运行节点服务,以中继方式实现异地节点网络互通,突破地域限制,提供分支机构、数据中心、云之间全场景互联互通。
    • 不需要固定公网 IP ,能上网就能组网;支持软件、虚拟机、硬件等方式部署,云端管理方便快捷。
    • 可以方便开发者跨地域部署内网服务,节省 IP 及公网宽带费用。
    • 底层使用 tls + websocket 安全互联,支持 TCP / UDP / PROXY(socks5 http https) 等跨区域转发。
    • WGD 功能实现三层路由,方便运维/网管扩展 SD-WAN MPLS VPLS VXLAN GRE IPIP 等应用.

    部署

    场景

    假设有运行两个节点软件 test1 和 test2 ,登录 nowtunnel 创建节点并在两台设备中运行。

    代理转发 :

    环境描述 :
    # 节点 test1 设备 IP: 192.168.1.5
    # 节点 test2 设备网段: 192.168.2.0/24 ,测试服务器 IP: 192.168.2.5
    
    规则类型 : proxy
    # Proxy 类型会自动识别协议 socks5/http/https
    
    监听 IP/端口 : 0.0.0.0 8871
    # 监听设备任意 IP+端口号 8871
    
    中继节点 : test2
    # 中继节点选远端/对端节点 test2
    
    验证结果 (通过 curl 代理功能验证) :
    curl --proxy socks5://192.168.1.5:8871 http://myip.ipip.net
    # 可以看到代理流量通过 “test2 节点” 流出,此时通过 curl 查询到的 IP 归属为 “节点 test2” 的公网 IP
    curl --proxy socks5://192.168.1.1:8871 http://192.168.2.1
    # 通过 curl 可以访问 192.168.2.1 的 WEB 界面
    

    TCP 端口转发 :

    环境描述 :
    # 节点 test1 设备 IP: 192.168.1.5
    # 节点 test2 设备网段: 192.168.2.0/24 ,测试服务器 IP: 192.168.2.5
    
    规则类型 : tcp
    # 任意使用 tcp 协议的应用
    
    监听 IP/端口 : 192.168.1.5 33981
    # 监听设备 IP 192.168.1.5 端口号 33891
    
    中继节点 : test2
    # 中继节点选远端/对端节点 test2
    
    远程主机/端口 : 192.168.2.5 3389
    #
    
    验证结果 (通过 windows mstsc 远程桌面) :
    # 此时通过远程桌面访问 192.168.1.5:33891 ,等同于直接访问 192.168.2.5 的远程桌面 3389 端口
    

    UDP 端口转发 :

    环境描述 :
    # 节点 test1 设备 IP: 192.168.1.5
    # 节点 test2 设备网段: 192.168.2.0/24 ,测试服务器 IP: 192.168.2.5
    
    规则类型 : udp
    # 任意使用 udp 协议的应用
    
    监听 IP/端口 : 0.0.0.0 9901
    # 监听设备任意 IP+端口号 UDP 9901
    
    中继节点 : test2
    # 中继节点选远端/对端节点 test2
    
    验证结果 (通过 nc 工具) :
    echo "TEST" | nc -4u 192.168.1.5 9901
    # 本例中所有访问 192.168.5.1:9901 的 UDP 流量都会通过 “test2 节点” 发向 192.168.2.5:9901
    

    路由转发 :

    • WGD 隧道路由原理: 底层 nowtunnel 网络(tcp+ssl) + udp 端口转发 + wireguard/iptables 。
    • 支持 nat 和 route 方式路由。
    • 系统使用 ip rule 绑定 table ,不污染本地路由,也可以指定该 table 的静态路由。
    • 点击节点 test1 "转发规则" - "新增规则" ,规则类型选 "wgd"。
    环境描述 :
    # 节点 test1 设备 ip: 192.168.1.5 , 设备所在网段: 192.168.1.0/24
    # 节点 test2 设备 ip: 192.168.2.5 , 设备所在网段: 192.168.2.0/24 ,192.168.3.0/24
    # 打通 192.168.1.0/24 ,192.168.2.0/24 ,192.168.3.0/24 网段之间的路由。
    # 注意: 本例中 wgd 配置可以在 test1 上,也可以在 test2 上,但不能两边都配置.
    
    规则类型 : wgd
    # 三层路由转发
    
    中继节点 : test2
    # 中继节点选远端/对端节点 test2
    
    本地网络/对端网络 :
    # 配置宣告本地网络和对端网络,多个用逗号隔开。
    
    验证结果 (通过 ping 工具) :
    # 在 test1 网络中的网关路由器上配置静态路由:
    route add 192.168.2.0 mask 255.255.255.0 192.168.1.5
    route add 192.168.3.0 mask 255.255.255.0 192.168.1.5
    # 在 test2 网络中的网关路由器上配置静态路由:
    route add 192.168.1.0 mask 255.255.255.0 192.168.2.5
    # 配置完成后所有网段将互通。
    
    第 1 条附言  ·  92 天前
    程序用 php + swoole 开发,修修改改两年多了,投入很多心血,目前限制 5M 转发免费,不够用可以联系添加;
    欢迎大家测试,方便的话也可以提提建议,谢谢大家。
    4 条回复    2024-08-26 08:53:48 +08:00
    6a82aa9bfe
        1
    6a82aa9bfe  
       94 天前 via Android
    开源不?
    jason56
        2
    jason56  
    OP
       93 天前
    @6a82aa9bfe 目前系统在制造业跨国公司生产环境中使用,三地互联场景 (我国、我国台湾、东南亚)。
    理论上短期不会开源,未来会考虑。
    GeekGao
        3
    GeekGao  
       90 天前
    功能强大,但看着很难用
    jason56
        4
    jason56  
    OP
       89 天前
    @GeekGao 很多时候我也觉得难用,后续我们会优化下流程。
    现阶段就是首次配置时稍微复杂点,分 3 个部:运行程序、客户端 web 、服务控制端 web ,配好之后基本只操作 “服务控制端 web” ,其实也是很方便的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1106 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 23:46 · PVG 07:46 · LAX 15:46 · JFK 18:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.