TLDR:有没有办法使用“ip route”为多个网卡添加组播路由?

我们的软件使用两个多播组与两个不同的物理网络上的两个不同的设备组进行通信.除此应用程序外,一个网络上的设备无需通过我们的设备进行通信,即可与另一个网络上的设备进行通信.

为此,该软件创建了两个套接字.每个绑定到单独的NICS的ip地址之一.然后该套接字加入该网络上存在的组播组,例如套接字1绑定到192.168.0.2并加入组播组233.255.10.1,而套接字2绑定到10.57.31.2并加入组播组239.255.100.1.

我们目前正在使用bash脚本(Linux内核3.14.39)使用路由在两个网络接口上设置组播路由,例如

route add -net 224.0.0.0 netmask 240.0.0.0 eth0

route add -net 224.0.0.0 netmask 240.0.0.0 eth1

并通过路线验证-n

Destination Gateway Genmask Flags Metric Ref Use Iface

224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth0

224.0.0.0 0.0.0.0 240.0.0.0 U 0 0 0 eth1

我最近读到该路由已被弃用/过时,我们应该使用ip route,例如

ip route add 224.0.0.0/4 dev eth0

ip route add 224.0.0.0/4 dev eth1

不幸的是,第二次调用失败并显示“RTNETLINK答案:文件存在”,当然第二次调用在这些调用之后没有出现.

有没有办法使用ip route将组播路由添加到多个NIC?

我可以使用/ 8作为网络掩码?例如

ip route add 233.0.0.0/8 dev eth0

ip route add 239.0.0.0/8 dev eth1

但这是有问题的,因为执行此操作的脚本不知道哪个多播地址与哪个设备相关联,并且根据系统配置,它并不总是保证相同.使用我的第一个路由添加示例使这成为一个非问题.

更新

感谢与@Ron Maupin的扩展讨论,我意识到错误出现在我们的代码中.我们没有使用IP_MULTICAST_IF设置用于多播的接口.一旦我添加了setsockopt调用以设置IP_MULTICAST_IF,我就不再需要添加路由表了.

struct in_addr multicastInterface = {};

multicastInterface.s_addr = interfaceAddressNetworkOrder;

// Set which outgoing interface to use

int result = setsockopt(m_socket,IPPROTO_IP,IP_MULTICAST_IF,(char*)&multicastInterface,sizeof(struct in_addr));

linux添加组播路由命令,linux – 使用ip route add将组播路由添加到多个接口相关推荐

  1. linux添加组播路由命令,linux – 所有接口的组播路由

    我有一堆程序产生多播流量,我希望在网络上看到wifi和以太网,但我也希望它们在网络出现故障时不会死于"无路由". 所以我真正想要的是将所有多播流量从一台机器路由到所有可用的接口,或 ...

  2. linux添加源ip路由命令,linux添加ip、路由相关命令

    1- Linux添加永久路由 vi /etc/sysconfig/network-scripts/route-eth1 ADDRESS0=192.168.10.0 NETMASK0=255.255.2 ...

  3. linux加静态路由命令,linux 添加静态路由

    linux下静态路由修改命令 方法一: 添加路由 route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev ...

  4. Linux黑洞路由命令,linux – Blackhole路由私有内部网流量

    ip route add blackhole 10.0.0.0/8 ip route add blackhole 172.16.0.0/12 ip route add blackhole 192.16 ...

  5. linux启动网络服务的命令,linux重启服务命令

    linux重启服务命令 重启:service 服务名 restart 或systemctl restart 服务名 service和systemctl 1.service命令 service命令其实是 ...

  6. linux写永久路由命令,Linux 系统添加永久静态路由

    Loading... linux下面可以使用`route add`命令添加静态路由,但是在网卡重启.系统重启后会丢失,添加永久静态路由的方法如下: 在`/etc/sysconfig/`目录下创建静态路 ...

  7. linux组的管理命令,linux 用户和组管理命令(示例代码)

    Linux 用户和组管理 组管理 groupadd命令:添加组 groupadd 选项 group_name -g GID :指定GID;默认是上一个组的GIDS+1 -r 创建系统组: groupm ...

  8. 在linux系统中查看组管理信息命令,Linux常用命令(五)账号和组管理

    Linux常用命令(五)账号和组管理 一.管理用户账号 1.用户账号的分类 ■超级用户:root用户是Linux系统中默认的超级用户账号,对本主机拥有最大的权限,类似于Windows          ...

  9. linux组的管理命令,Linux用户与组管理命令

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. who | cut -d" " -f1 | sort -u 或 who | cut -d ...

最新文章

  1. 问题集锦(46-47)
  2. 1.15 Java冒泡排序法
  3. Apollo分布式配置中心在本地的安装教程
  4. KEIL-MDK编译错误问题解决办法
  5. PLSQL9.0下载及配置oracle,PLSQL登录时常见问题解决
  6. Python面向对象编程 __init__方法
  7. python判断set里是否包含值_【python】判断值是否在list和set的对比以及set的实现原理...
  8. WampServer2.0的Apache的service无法启动的解决方法
  9. eclipse解压版_Eclipse配置JavaWeb开发环境
  10. 2. DICOM图像层级分类-DCMTK-工程搭建
  11. 微信小程序地图组件利用腾讯地图生成热力图
  12. 给初中生的量子力学学习指南
  13. LU分解、矩阵求逆与解线性方程组(matlab代码)
  14. MPB:使用QIIME 2分析微生物组16S rRNA基因扩增子测序数据(视频)
  15. C++编程易范错误集合
  16. 50控制器的结构和功能
  17. 计算机英语短句,有意义的英文短句
  18. 解决Windows update medic service服务禁用不了拒绝访问
  19. Android nba2k14 mod,NBA 2K14 真实化合集游戏MOD
  20. 安富莱v6开发板网口通讯_【安富莱】各种开发板和模块的资料下载汇总贴(2020-04-06)...

热门文章

  1. .netcore 3.1 webapi部署到docker的坑
  2. 微信小程序 齐枭飞:wx.navigateTo 不跳转问题
  3. 使用ConvNets进行集成识别,定位和检测
  4. ODP.NET使用手记
  5. 复变函数与mathematica(2)
  6. 【NKOJ-2165】【搜索】四色问题
  7. 写技术博客,如何选择博客平台
  8. 计算机行业新财富排名,2019年富人排行榜_2019新财富500富人榜
  9. 中国网通北京市分公司营业厅
  10. StockChart Android股票图/K线图开发库