加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 使用外部程序进行高级动态路由

发布时间:2020-12-13 17:09:33 所属栏目:Linux 来源:网络整理
导读:我需要建立一个系统,在这个系统中,我能够根据一些参数(例如端口/协议等)路由数据包,这些参数在某种程度上是“正常的”,但也可以在其他方面,例如队列长度和其他外部因素.我的路由器由2个内部接口(802.11)和两个外部接口(一个ADSL,一个LTE)组成.所以我想通过外
我需要建立一个系统,在这个系统中,我能够根据一些参数(例如端口/协议等)路由数据包,这些参数在某种程度上是“正常的”,但也可以在其他方面,例如队列长度和其他外部因素.我的路由器由2个内部接口(802.11)和两个外部接口(一个ADSL,一个LTE)组成.所以我想通过外部程序检查每个数据包,并决定它应该路由到哪个接口.

我看了一下iproute2,但是我没有找到任何方法将每个数据包传递给外部程序,或者以某种方式为每个数据包动态选择路由.

所以问题是:最好的方法是什么?是否已经有朝这个方向发展的工具,或者我应该依靠自己制作的东西,并通过linux标准工具传递数据包?

解决方法

Netfilter(iptables)有 queue module将帧发送到用户空间程序.可以使用不同语言的库( c,python,perl等)来检查数据包.处理完帧后,您将返回ACCEPT或DROP判定,原始或修改的帧以及设置标记的选项.

我猜你可以使用标记在netfilter链的其余部分以不同方式处理这个数据包,并更改路由标记以选择特定的路由表.

这将是一个比非常低级别的设备处理更优雅的解决方案,但可能是性能问题,具体取决于您的用户空间实现的选择.

我在另一个项目中使用它来修改来自损坏的客户端的传入DHCP帧但从未使用过该标记.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读