前言(只是一些废话,不想看的可以略过) ===================================== 多播路由是一个很好的技术,在Internet上实现了对数据的“广播”,不同于广播的是,由于广播风暴的问题,路由器是禁止广播数据跨路由传送的。而多播则很好的解决了这个问题。现在M$软件如:Netmeeting,WMS就广泛运用了多播这种技术。这里讨论的是怎么样把你的Linux架设成一个多播路由器 (一般的网关、路由器是不支持多播数据包通过的)。并不是讨论编写这方面的应用程序。 本来想把Multicast-Howto译出来的,但看看了,里面全是专业性的废话,对真正想做这个的人来说,帮助不大,所以还是省点力气吧。再说,可能是因为mrouted的版本跟不上Linux的内核的发展,在2.2-X上成功编译的人可能不多,因此也就没有人写这东西了。
1 安装透明网关 ===============
1.1 在你的机器上安装多块网卡 安装的方法很多,用你最熟悉的方法装就可以了,象linuxconf之类的。我这里用的是直接修改配置文件的方法:(看来这家伙是个受虐狂)修改/etc/conf.modules文件,加入网卡: alias eth0 ne2k-pci options ne io=0x300 irq=0x3 alias eth1 ne2k-pci
1.2 设定网卡的IP等一系列数据 第一块卡: 修改/etc/sysconfig/network-scripts/ifcfg-eth0,如果没有这个文件,手工创建一个,内容如下: DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=10.0.0.1 <-------你第一块的IP地址 NETMASK=255.255.255.0 <-------子网掩码 BROADCAST=10.0.0.255 <-------广播地址 GATEWAY=10.0.0.1 <-------网关
并把文件设为可执行: #chmod 755 /etc/sysconfig/network-scripts/ifcfg-eth0
第二块卡: 修改/etc/sysconfig/network-scripts/ifcfg-eth1,如果没有这个文件, 手工创建一个,内容如下: DEVICE=eth1 BOOTPROTO=static ONBOOT=yes IPADDR=10.0.1.1 NETMASK=255.255.255.0 BROADCAST=10.0.1.255 GATEWAY=10.0.1.1
并把文件设为可执行: #chmod 755 /etc/sysconfig/network-scripts/ifcfg-eth1
设定静态路由: 修改/etc/sysconfig/static-routes,如果没有这个文件,手工创建一个,内容如下: eth0 net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 eth1 net 10.0.1.0 netmask 255.255.255.0 gw 10.0.1.1
允许IP转发: 修改/etc/sysconfig/network,如果没有这个文件,手工创建一个,内容如下: NETWORKING="yes" FORWARD_IPV4="yes" <----允许IP转发 HOSTNAME="test" GATEWAY="10.0.0.1" GATEWAYDEV="eth0"
2 给内核加上多播路由支持 ========================
2.1 内核默认是不支持的,你得重新编译内核,加入多播路由的支持。 #cd /usr/src/linux #make menuconfig 确认选中以下的选项: Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers
Networking options ---> [*] IP: multicasting <*> IP: tunneling [*] IP: multicast routing 存盘退出
2.2 重编译内核 #make dep #make clean #make install 经过长时间的等待后,新的内核将会装上去。
3 安装mrouted-3.8 =================
3.1 mrouted是一个多播路由服务,通过它,可以把Linux作为一个多播路由器来使用。下载: ftp.parcftp.xerox.com/pub/net-research/ipmulti/
3.2 编译 #tar -zxpvf mrouted-3.81-linux.tgz #cd mrouted-3.81/mrouted #make 运气好的话,你一次就能成功编译。哈~ 不过多数情况是象我一样编译不过去的,这是因为内核版本不同,这时你就得手工改写Makefile和里面相关的.c文件。(不会写Makefile和C语言是玩不转的,呵呵呵)改动比较多,这里就不写出来的。有需要的同志可以与我联系。 #./Install 这时会问你几个安装上的问题,一路回车就可以了。
3.3 修改/etc/mrouted.conf 找到 tunnel 128.4.0.77 128.4.0.8 metric 1 threshold 64 rate_limit 500 把它用#注释掉。
3.4 把mrouted的相关文件拷到相应的目录: #cp map-mbone /sbin/ #cp mrinfo /sbin/ #cp mrouted /sbin/ #cp mstat /sbin/ #cp mtrace /sbin/ #cp map-mbone.8 /usr/man/man8/ #cp mrinfo.8 /usr/man/man8/ #cp mrouted.8 /usr/man/man8/ #cp mstat.8 /usr/man/man8/ #cp mtrace.8 /usr/man/man8/
4 编写mrouted的启动文件 =======================
4.1 建立/etc/rc.d/mrouted,内容如下: #!/bin/sh # A Script to start mrouted and add a ipchains forward
#把eth0加入多播路由表中 route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #把eth1加入多播路由表中 route add -net 224.0.0.0 netmask 240.0.0.0 dev eth1
/sbin/mrouted
#把两个网段内的IP加入IP转发列表 /sbin/ipchains -A forward -s 10.0.1.2/24 -j MASQ /sbin/ipchains -A forward -s 10.0.1.3/24 -j MASQ ……中间省略 /sbin/ipchains -A forward -s 10.0.1.253/24 -j MASQ /sbin/ipchains -A forward -s 10.0.1.254/24 -j MASQ
/sbin/ipchains -A forward -s 10.0.0.2/24 -j MASQ /sbin/ipchains -A forward -s 10.0.0.3/24 -j MASQ ……中间省略 /sbin/ipchains -A forward -s 10.0.0.253/24 -j MASQ /sbin/ipchains -A forward -s 10.0.0.254/24 -j MASQ
并把文件设为可执行: #chmod 755 /etc/rc.d/mrouted
4.2 修改/etc/rc.d/rc.local,让它开机时自动mrouted,在文件的最后加上:/etc/rc.d/mrouted
这时,多播路由的设置全部完成,这可是双向路由O~
5 windows客户机的设置 ===================== 只要在 控制面板->网络->TCP/IP的属性->网关 中,把多播服务器的IP加上即可。如: WIN98客户机,IP为10.0.1.2,网关则为10.0.1.1 WIN98客户机,IP为10.0.0.2,网关则为10.0.0.1 设置完成后,就可在客户机启动多播应用程序。实现多播数据的跨路由传送。
6 存在的问题 ============ 多播在一些100M网卡上不能被实现,原因未明。如: DLink的DTF-530TX Rev A 这一版的网卡就不能实现多播。而同是DLink的DTF-530TX Rev B 这一版的网卡却可以实现多播。因此,安装时要注意这方面的问题。对于10M的PCI网卡,兼容性最好的是Realtek 8029。容易安装,也很好用。
|