栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Linux中通过特定接口发送多播数据包

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Linux中通过特定接口发送多播数据包

我并不完全相信我的解决方案是正确的,但是我至少可以对所发生的事情有更多的了解。

背景

Linux实际上有多个路由表,并且以特定的优先级顺序一次搜索一个路由表,直到找到具有匹配路由的表。您可以选择根据源地址或协议搜索某些路由表。参见

ip-rule(8)
手册页。

麻烦的是“本地”路由表,它的优先级为0,可能是最高的。内核自动填充“本地”表,其中包含“显而易见的”接口和广播路由。对于Linux下的IPv6,这显然包括整个多播块。

问题

我将使用 iproute2 工具,而不是更传统的工具

route
,因为它将向我展示我需要知道的所有信息。

在我的Linux机器上:

$ ip -6 route show table locallocal ::1 via :: dev lo  proto none  metric 0 local fe80::213:a9ff:fe91:5bcb via :: dev lo  proto none  metric 0 local fe80::250:b6ff:fe44:37d1 via :: dev lo  proto none  metric 0 ff00::/8 dev eth0  metric 256 ff00::/8 dev eth1  metric 256$ ip -6 route show table mainfe80::/64 dev eth0  proto kernel  metric 256 fe80::/64 dev eth1  proto kernel  metric 256 ff15::/16 dev eth1  metric 1024ff00::/8 dev eth1  metric 1024$ ip -6 rule show0:      from all lookup local 32766:  from all lookup main

…而且我的ff15 :: 1(5 == site-local,> link-
local)的多播数据包最终到达eth0,因为“本地”路由表首先匹配并覆盖了“主”表,即使“主”表具有更具体的路由。在较大的策略路由方案中,此替代行为是正确的,但是将ff00
:: / 8自动添加到本地表的选择对我来说是个问题。

我的解决方案

我没有足够的经验来知道这是否是一个好主意,但是:

# ip -6 route add ff15::/16 dev eth1 table local

现在我的ff15 :: 1数据包通过eth1路由。

这与本地表的语义有些一致,因为它直接通过设备进行路由。感觉并不完全正确(考虑自动管理和“您不必看这张表”),但这是我找到的最佳解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号