linux下启用组播转发的方法与一些常用状态检查命令 | 您所在的位置:网站首页 › 启用系统的方法有哪些 › linux下启用组播转发的方法与一些常用状态检查命令 |
总所周知,Linux 服务器是可以作为一台路由器使用,不仅仅是可以转发单播数据包,同事也可以转发组播数据包.但是多数同学却不知道如何配置.本文将介绍将Linux配置成组播转发路由器的方法做一个分享. 目录 手工开启 1.开启转发开关 2.在需要开启组播转发的接口上打开组播转发开关. 3.手工配置静态组播路由. 4.配置iptables,放行组播转发报文 使用pimd工具动态配置组播路由和igmp成员发现 1.开启转发开关 2.下载安装pimd 3.配置pimd的配置文件并启动pimd 4.配置iptables,放行组播转发报文 组播转发配置的常用命令: 查看系统配置: 查看当前生效的组播路由: 查看 pimd 的 debug 日志,以观察各种事件 抓包查看igmp\pim\具体组播报文 手工开启 1.开启转发开关和ip单播一样,首先需要打开系统的ipv4转发开关. [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/ip_forward 2.在需要开启组播转发的接口上打开组播转发开关.以下示例是打开所有接口的组播转发开关. [root@dap1:/home/vap]# cat /proc/sys/net/ipv4/conf/ all/ docker0/ enp62s0f0/ lo/ veth28802fc/ vethbb97ad5/ default/ enp134s0/ enp62s0f1/ veth1811b4c/ veth43493c1/ [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/conf/all/mc_forwarding以下为打开docker0接口的组播转发开关. [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/conf/docker0/mc_forwarding可以依照例子手工一次打开各参与组播路由转发的接口开关. 3.手工配置静态组播路由.以下示例增加了2条静态的组播路由 [root@dap1:/home/vap]# ip route add 224.0.16.0/24 dev docker0 [root@dap1:/home/vap]# ip route add from 12.23.24.15 to 224.0.18.0/24 dev docker0 [root@dap1:/home/vap]# ip route default via 10.46.169.1 dev enp134s0 onlink 10.46.169.0/24 dev enp134s0 proto kernel scope link src 10.46.169.239 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 224.0.16.0/24 dev docker0 scope link 224.0.18.0/24 dev docker0 scope link 238.97.1.144 dev docker0 scope link 4.配置iptables,放行组播转发报文首先检查iptables 的 filter 表的 FORWARD 链的默认策略和实际规则,如果发现被阻断的情况需要根据实际情况放通规则. 注意下图中 Chain FORWARD (policy ACCEPT .....),该ACCEPT标识了这条链的默认规则为ACCEPT. [root@dap1:/home/vap]# iptables -t filter -nvL Chain INPUT (policy ACCEPT 23306 packets, 3074K bytes) pkts bytes target prot opt in out source destination 481K 108M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22 Chain FORWARD (policy ACCEPT 194K packets, 278M bytes) pkts bytes target prot opt in out source destination 6544K 11G DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 6544K 11G DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0 2262K 1036M ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 1295K 1806M DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0 2987K 8295M ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 1533 61320 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 188K packets, 201M bytes) pkts bytes target prot opt in out source destination如果有实际需要控制的转发策略时,可以将默认设置为DROP,然后添加具体的ACCEPT规则. 如果没有进一步的需求,则可以直接将默认规则设置为ACCEPT. 设置默认规则的命令如下: [root@dap1:/home/vap]# iptables -t filter -P FORWARD ACCEPT 使用pimd工具动态配置组播路由和igmp成员发现 1.开启转发开关和ip单播一样,首先需要打开系统的ipv4转发开关. [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/ip_forward 2.下载安装pimd例如 centos 上可以使用 yum 直接安装 pimd ,也可以到 github 下载源码包编译安装. [vap@dap1~]#yum install pimd如何编译安装这个请自行查看帮助文档.源码包的 github 连接如下: https://github.com/troglobit/pimd/releases 3.配置pimd的配置文件并启动pimd使用 man pimd 可以查看 pimd 的手册. 配置文件一般放置在 /etc/pimd.conf. 默认是开启所有端口的 pim 和 igmp .正常初步使用的话直接使用 pimd 命令启动即可. [vap@dap1:~]pimd查看 pimd 的当前路由表情况: [vap@dap1:~]$ pimd --show-routes pimd: Failed removing /var/run/pimd/pimd.dump, may be showing stale information: Permission denied Virtual Interface Table ====================================================== Vif Local Address Subnet Thresh Flags Neighbors --- --------------- ------------------ ------ --------- ----------------- 0 10.46.169.239 10.46.169/24 1 DR NO-NBR 1 172.17.0.1 172.17 1 DR NO-NBR 2 10.46.169.239 register_vif0 1 Vif SSM Group Sources Multicast Routing Table ====================================================== ----------------------------------- (*,G) ------------------------------------ Source Group RP Address Flags --------------- --------------- --------------- --------------------------- INADDR_ANY 224.0.75.75 172.17.0.1 WC RP Joined oifs: ... Pruned oifs: ... Leaves oifs: l.. Asserted oifs: ... Outgoing oifs: o.. Incoming : ..I TIMERS: Entry JP RS Assert VIFS: 0 1 2 0 10 0 0 0 0 0 ----------------------------------- (S,G) ------------------------------------ ----------------------------------- (*,G) ------------------------------------ Source Group RP Address Flags --------------- --------------- --------------- --------------------------- INADDR_ANY 238.97.1.144 172.17.0.1 WC RP Joined oifs: ... Pruned oifs: ... Leaves oifs: .l. Asserted oifs: ... Outgoing oifs: .o. Incoming : ..I TIMERS: Entry JP RS Assert VIFS: 0 1 2 0 55 0 0 0 0 0 ----------------------------------- (S,G) ------------------------------------ --------------------------------- (*,*,G) ------------------------------------ Number of Groups: 2 Number of Cache MIRRORs: 0 ------------------------------------------------------------------------------ 4.配置iptables,放行组播转发报文首先检查iptables 的 filter 表的 FORWARD 链的默认策略和实际规则,如果发现被阻断的情况需要根据实际情况放通规则. 注意下图中 Chain FORWARD (policy ACCEPT .....),该ACCEPT标识了这条链的默认规则为ACCEPT. [root@dap1:/home/vap]# iptables -t filter -nvL Chain INPUT (policy ACCEPT 23306 packets, 3074K bytes) pkts bytes target prot opt in out source destination 481K 108M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22 Chain FORWARD (policy ACCEPT 194K packets, 278M bytes) pkts bytes target prot opt in out source destination 6544K 11G DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 6544K 11G DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0 2262K 1036M ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 1295K 1806M DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0 2987K 8295M ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0 1533 61320 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 188K packets, 201M bytes) pkts bytes target prot opt in out source destination如果有实际需要控制的转发策略时,可以将默认设置为DROP,然后添加具体的ACCEPT规则. 如果没有进一步的需求,则可以直接将默认规则设置为ACCEPT. 设置默认规则的命令如下: [root@dap1:/home/vap]# iptables -t filter -P FORWARD ACCEPT 组播转发配置的常用命令: 查看系统配置:sysctl -a | grep mc sysctl -a | grep forward 查看当前生效的组播路由:ip mroute show 查看 pimd 的 debug 日志,以观察各种事件pimd --debug=xxx xxx是 pimd 支持的各种 debug 级别,具体可以查看 pimd --help 抓包查看igmp\pim\具体组播报文tcpdump -ennvi 接口名 |
CopyRight 2018-2019 实验室设备网 版权所有 |