双网卡组播问题
1. 网络结构
2. 需求描述
(1) 存在两个网络 192.168.1.0 和 192.168.18.0,Multicast Server 与 192.168.18.200 和
192.168.18.100 通过路由器 192.168.18.1 接入网络 192.168.18.0,192.168.1.200 与
192.168.1.100 通过路由器 192.168.1.1 接入网络 192.168.1.0;
(2) Multicast Server 作为组播发送方,组播的目标为 226.0.0.10,组播端口为 50000;
(3) 192.168.18.200(24)/192.168.1.200(24)为双网卡 Window 7 系统,
192.168.18.100(24)/192.168.1.100(24)为双网卡 Linux 系统;
(4) 要求 192.168.18.200 和 192.168.18.100 均能收到来自 Multicast Server 的 UDP 组
播报文,并且能通过 192.168.1.0 网络将收到的组播报文相互转发。
3. 问题描述
两台主机在接入单网 192.168.18.0 时均能正常接收组播消息,而一旦接入双网,UDP
接收程序均不能收到组播报文。Wireshark 和 tcodump 工具抓包显示,两台主机均有收
到组播消息,但 UDP 接收程序为不能收到消息。
4. 解决过程
4.1 经过资料查询和试验显示,造成问题的原因在于双网络带来的路由混乱。
4.2 Windows 7 主机解决过程。
4.2.1 删除双网卡的默认网关
(1) 192.168.1.200
(2) 192.168.18.200
4.2.2 修改组播路由
(1) 默认路由表
(2) 删除所有组播相关的路由项
(3) 添加新的组播路由项
(4) 修改后的路由信息
4.2.3 修改完后,Windows 7 上的 UDP 接收程序可顺利收到来自从 192.168.18.0 网络上
226.0.0.10 组的组播消息,还可以顺利通过 192.168.1.0 网络转发消息。
4.3 Linux 主机解决过程
4.3.1 删除双网卡的默认网关
(1) 192.168.1.100
(3) 192.168.18.100
4.3.2 修改路由表
(1) Ifconfig
(2) Route
(3) 添加默认网络接口
从 ifconfig 中知道,wlan0 是用来接收组播消息的网络接口。
(4) 修改后的路由表
(5) 若要保持多个 default 项时,必须保证接收组播的接口有最高的优先级,如下图
(6) 经过以上修改后,Linux 主机可以成功从 192.168.18.0 网络上接收 226.0.0.10 组的组
播消息,并且可以通过 192.168.1.0 网络转发给主机 192.168.1.200。
4.4 将路由器 192.168.1.1 使用交换机替换时,仍能正确的工作。