nowtunnel 一个简单的跨网转发和 sdwan 解决方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jason56
V2EX    分享创造

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

  •  
  •   jason56 2024-08-21 14:55:13 +08:00 2016 次点击
    这是一个创建于 418 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    • 通过多地运行节点服务,以中继方式实现异地节点网络互通,突破地域限制,提供分支机构、数据中心、云之间全场景互联互通。
    • 不需要固定公网 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 条附言    2024-08-23 11:30:52 +08:00
    程序用 php + swoole 开发,修修改改两年多了,投入很多心血,目前限制 5M 转发免费,不够用可以联系添加;
    欢迎大家测试,方便的话也可以提提建议,谢谢大家。
    4 条回复    2024-08-26 08:53:48 +08:00
    6a82aa9bfe
        1
    6a82aa9bfe  
       2024-08-21 17:29:09 +08:00 via Android
    开源不?
    jason56
        2
    jason56  
    OP
       2024-08-22 11:35:59 +08:00
    @6a82aa9bfe 目前系统在制造业跨国公司生产环境中使用,三地互联场景 (我国、我国台湾、东南亚)。
    理论上短期不会开源,未来会考虑。
    R4rvZ6agNVWr56V0
        3
    R4rvZ6agNVWr56V0  
       2024-08-25 17:06:38 +08:00
    功能强大,但看着很难用
    jason56
        4
    jason56  
    OP
       2024-08-26 08:53:48 +08:00
    @GeekGao现阶段就是首次配置时稍微复杂点,分 3 个部:运行程序、客户端 web 、服务控制端 web ,配好之后基本只操作 “服务控制端 web” ,其实也是很方便的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2912 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 14:04 PVG 22:04 LAX 07:04 JFK 10:04
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86