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. 基于线段的激光雷达和单目联合曲面重建
  2. jquery的html,text,val的区别
  3. 一文读懂基本的核方法和径向基函数
  4. flutter图标按钮_Flutter开发第一个项目android studio 开发工具的使用说明
  5. gprof使用介绍 (gcc -pg)
  6. IT人的年夜饭,也太香了吧
  7. vue前端框架面试问题汇总,附答案
  8. 回溯法 - 递归 - n皇后问题 - 所有解
  9. ubuntu1804系统设置在哪里_Ubuntu 1804.4 server版本的安装及配置网络和图形化界面
  10. 《把时间当做朋友》读书摘记
  11. 使用Spark MLlib进行情感分析
  12. Julia学习笔记:使用GLM包进行一元回归分析及模型拟合度检验
  13. 勒索病毒肆虐的原因分析
  14. PLSQL 误删表恢复及误删数据恢复
  15. Waiting alone
  16. ARM基本接口之LCD实验
  17. python主成分得分系数矩阵_用spss得出的成分矩阵就是初始因子载荷矩阵吗?成分得分系数矩阵又是什么...
  18. mysql报错ERROR 1366(HY000)
  19. 有会用正则表达式解这个吗?
  20. python需要学多久-python培训需要学多久

热门文章

  1. LMS消除噪声和干扰结合代码的实验理解
  2. 炉石传说 服务器 维护,《炉石传说》维护一整天 因为玩家数据丢失导致?
  3. 如何检验光盘镜像(ISO格式文件)并刻录系统安装光盘?
  4. perl 数组变量(Array) 转载
  5. 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。C语言实现。
  6. c语言产生随机数函数
  7. 你不得不知道的python超级文献搜索工具(最新更新)
  8. 【Latex】arg 优化参数下标 argmax 和 argmin
  9. 如何使用c++制作一个跑酷游戏
  10. JS实现中午吃什么[Math对象+定时器(setInterval)]