linux启用IPV4组播路由转发

简介:

linux启用IPV4组播路由转发

最近在研究组播路由转发,按照网上的帖子配置mrouted和smcroute都试过了,编译错误,没办法继续,最后试了一下pimd,并测试成功

一、软件系统

1、系统内核 2.6.18

2、pimd软件  https://github.com/downloads/troglobit/pimd/pimd-2.1.8.tar.bz2

3、两台WindowXP主机A和B,单网卡
     一台Linux主机,双网卡

WindowsXP 主机A  (连接linux eth0 接口)

ip地址  10.10.10.1掩码 255.255.255.0 网关:10.10.10.2

linux主机

eth0   ip地址10.10.10.2 掩码 255.255.255.0 网关:10.10.10.1

eth1     192.168.111.2掩码 255.255.255.0 网关:无

WindowsXP 主机B  (连接linux eth1 接口)

ip地址  192.168.111.2掩码 255.255.255.0 网关:192.168.111.1

二、

1、查看Linux系统是否支持多播:

方法A:  ifconfig出现 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric

方法B: 查看/boot/config-x.x.xx  文件中是否有如下内容

                       CONFIG_IP_MULTICAST=y
                       CONFIG_NET_IPIP=m
                       CONFIG_IP_MROUTE=y

2、如果系统不支持多播,需要编译内核

编译步骤如下: 

运行make menuconfig
进 Networking support -> Networking options ,
里面就有选项:
IP: multicasting 
IP: tunneling
IP: multicast routing 
IP: PIM-SM version 1 support 
IP: PIM-SM version 2 support 
选中这几项,保存退出

make && make modules_install && make install

重启,用新内核启动。

3、启用路由转发 echo 1 >/proc/sys/net/ipv4/ip_forward

4、配置pimd

    将下载的pimd-2.1.8.tar.bz2解压并进入解压目录

  make

 make install

安装完成后执行pimd

/usr/local/sbin/pimd

如果在执行pimd时出错,可以先关闭iptables再执行pimd就不报错了(实际上报错并不影响测试)

5、运行windows xp 主机A上的发送程序

1d2b7d8b4710b9129d25565dc3fdfc0393452263

6、运行windows xp主机B上的接收程序

07106f59252dd42af7d1a108033b5bb5c8eab870

已经收到包了。

--------------------------------------------------------------------------------------------

linux上可以用几个命令查看组播配置

[root@gaodi-linux ~]# route -e
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.111.0   *               255.255.255.0   U         0 0          0 eth1
10.10.10.0      *               255.255.255.0   U         0 0          0 eth0
default         10.10.10.1      0.0.0.0         UG        0 0          0 eth0
[root@gaodi-linux ~]# ip mroute
(10.10.10.1, 224.1.1.1)          Iif: eth0       Oifs: eth1 
[root@gaodi-linux ~]# more /proc/net/ip_mr_vif
Interface      BytesIn  PktsIn  BytesOut PktsOut Flags Local    Remote
 0 eth0       18348036   17362   9784860    9231 00000 020A0A0A 00000000
 1 eth1       113304460  106891  18009400   16990 00000 016FA8C0 00000000
 2 pimreg            0       0         0       0 00004 020A0A0A 00000000
[root@gaodi-linux ~]# more /proc/net/ip_mr_cache 
Group    Origin   Iif     Pkts    Bytes    Wrong Oifs
010101E0 010A0A0A 0      17637 18695220        0  1:1  
FAFFFFEF 010A0A0A 0         30    12393        0
[root@gaodi-linux ~]# 

备注:如果使用虚拟机测试,网卡不能设置为桥接模式,否则不转发组播包。


本文转自gaodi2002 51CTO博客,原文链接:http://blog.51cto.com/gaodi2002/1618055


相关文章
|
8月前
|
Linux
如何在 Linux 上添加路由?
如何在 Linux 上添加路由?
500 1
|
运维 Linux 网络虚拟化
【运维】Debian linux实现单臂路由
Debian linux实现单臂路由
951 0
|
8天前
|
Ubuntu 网络协议 Linux
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
Linux(20) Ubuntu 20.04 网络接口自动切换路由配置
32 0
|
2月前
|
网络协议 Linux 网络架构
如何在Linux c/c++ 进行多播(组播)编程
如何在Linux c/c++ 进行多播(组播)编程
24 0
|
8月前
|
网络协议 Linux
如何在 Linux 中配置 IPv4 和 IPv6 地址?
如何在 Linux 中配置 IPv4 和 IPv6 地址?
194 0
|
10月前
|
Linux
【linux】解决软路由内部服务器无法访问外网的问题
【linux】解决软路由内部服务器无法访问外网的问题
381 0
|
Linux iOS开发
Linux——多播(组播)
Linux——多播(组播)
267 0
Linux——多播(组播)
|
网络协议 Linux
【趣谈网络协议】工具篇:如何在Linux上添加路由
【趣谈网络协议】工具篇:如何在Linux上添加路由
91 0
【趣谈网络协议】工具篇:如何在Linux上添加路由
|
Linux 网络架构
Linux Command route 路由
Linux Command route 路由
Linux Command route 路由
|
域名解析 网络协议 小程序
Linux Command traceroute 路由追踪
Linux Command traceroute 路由追踪
Linux Command traceroute 路由追踪