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

2017-03-16 22:12:43 +08:00
 xTom

介绍

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

设计思路

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

  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"
  ]
}

./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

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

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

毕竟大部分类 linux 的路由器系统都是差不多的结构都可以用得到.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/348046

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX