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上的发送程序
6、运行windows xp主机B上的接收程序
已经收到包了。
--------------------------------------------------------------------------------------------
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