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

xTom NetworkSwitch - 一个用于 EdgeOS 上切换路由的前端

  •  
  •   xTom · 2017-03-16 22:12:43 +08:00 · 3742 次点击
    这是一个创建于 2842 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    本项目需求源自于:公司多线出口切换,可实现在网页上实现切换不同出口

    设计思路

    本项目基于多网关思路如下:

    1. 为每个出口设置一个网关 将网关名称设置为模式名称
    2. 当客户通过浏览器访问该站可从请求中得到 IP 的远程地址
    3. 请求切换路由时将带上 模式名称 此时这是将执行 ./hooks/switch. sh
    4. 切换路由将由 ./hooks/switch. sh 实现

    需要在 iproute2 里面编辑相应的 VRF Table

    比如说增加联通和电信的策略出口,就需要在 rt_tables 里面增加 VRF table

    vim /etc/iproute2/rt_tables
    

    增加这两行:

    250 china_telecom
    249 china_unicom
    

    然后添加默认路由

    /sbin/ip route add default via [Your_china_unicom_gateway_ip/Your_china_unicom_gateway_interface] table china_unicom
    /sbin/ip route add default via [Your_china_telecom_gateway_ip/Your_china_telecom_gateway_interface] table china_telecom
    

    记得写个脚本监控这两条路由是否存活,如果遇到意外情况导致 Interfac e 挂掉,路由会消失而且不会自动补上。 完成后, VRF Table 就做好了,然后调用 PBR 模块就可以对特定 IP 地址进行策略路由。

    文件说明

    ./configure.json

    {
      "listen": "127.0.0.1:10000",
      "modes": [
        "main",
        "china_telecom",
        "china_unicom",
        "load_balance",
        "clear_settings"
      ]
    }
    
    • listen 用于描述本服务的监听地址及 IP
    • modes 用于限制请求变更路由模式的名称集合

    ./hooks/switch. sh

    本文件用于实现 实现切换路由 在网页上点击各出口路由按钮将通过 ajax 触发该操作

    本操作等价于 ./hooks/switch. sh $REMOTE_ADDRESS $MODE_NAME 操作 ($REMOTE_ADDRESS 为您访问该网页的 IP 、$MODE_NAME 为您选择的模式名称)

    (警告:本项目的实现目前仅限于 EdgeRouter Lite v1.6 ,您可通过适当的修改实现在 OpenWrt 使用)

    ./hooks/status. sh

    本文件用于实现 查询当前路由模式状态 在网页上点击 Read Status 按钮将通过 ajax 触发该操作

    本操作等价于 ./hooks/status. sh $REMOTE_ADDRESS 操作 ($REMOTE_ADDRESS 为您访问该网页的 IP )

    (警告:本项目的实现目前仅限于 EdgeRouter Lite v1.6 ,您可通过适当的修改实现在 OpenWrt 使用)

    ./pages/index.html

    本文件的是您访问该服务所为您提供视觉呈现的网页

    项目地址

    https://github.com/xtomcom/NetworkSwitch

    欢迎 Star 和 Fork

    4 条回复    2017-03-17 19:50:51 +08:00
    xTom
        1
    xTom  
    OP
       2017-03-16 22:16:30 +08:00
    因为自动转换域名了,所以 status. sh 和 switch. sh 文件名和后缀之间多写了个空格
    GPU
        2
    GPU  
       2017-03-17 08:53:19 +08:00
    不好明白和 EdgeOS 有什么关系 。明明就没有用到 EdgeOS 的功能。

    一开始我还以为楼主是给 EdgeOS 写了一个功能。然而并不是。
    xTom
        3
    xTom  
    OP
       2017-03-17 18:49:13 +08:00
    @GPU 您好,我们为 EdgeOS 适配的,可以自己修改后在别的平台使用
    GPU
        4
    GPU  
       2017-03-17 19:50:51 +08:00
    @xTom #3 又不是集成在 EdgeOS 里面的功能 , 我觉得你没必要说 EdgeOS 了 .

    毕竟大部分类 linux 的路由器系统都是差不多的结构都可以用得到.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2931 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:48 · PVG 22:48 · LAX 06:48 · JFK 09:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.