zoukankan      html  css  js  c++  java
  • linux 多播路由打开

    转:https://blog.csdn.net/bestjie01/article/details/89639197

    linux内核中要打开支持多播: 

    CONFIG_IP_MULTICAST=y
    CONFIG_NET_IPIP=m
    CONFIG_IP_MROUTE=y

     总所周知,Linux 服务器是可以作为一台路由器使用,不仅仅是可以转发单播数据包,同事也可以转发组播数据包.但是多数同学却不知道如何配置.本文将介绍将Linux配置成组播转发路由器的方法做一个分享.

    目录

    手工开启

    1.开启转发开关

    2.在需要开启组播转发的接口上打开组播转发开关.

    3.手工配置静态组播路由.

    4.配置iptables,放行组播转发报文

    使用pimd工具动态配置组播路由和igmp成员发现

    1.开启转发开关

    2.下载安装pimd

    3.配置pimd的配置文件并启动pimd

    4.配置iptables,放行组播转发报文

     组播转发配置的常用命令:

    查看系统配置:

    查看当前生效的组播路由:

    查看 pimd 的 debug 日志,以观察各种事件

    抓包查看igmppim具体组播报文



    手工开启


    1.开启转发开关

         和ip单播一样,首先需要打开系统的ipv4转发开关.

    [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/ip_forward

    2.在需要开启组播转发的接口上打开组播转发开关.

        以下示例是打开所有接口的组播转发开关.

    1.  
      [root@dap1:/home/vap]# cat /proc/sys/net/ipv4/conf/
    2.  
      all/ docker0/ enp62s0f0/ lo/ veth28802fc/ vethbb97ad5/
    3.  
      default/ enp134s0/ enp62s0f1/ veth1811b4c/ veth43493c1/
    4.  
       
    5.  
      [root@dap1:/home/vap]# echo 1 > /proc/sys/net/ipv4/conf/all/mc_forwarding
    6.  
       

        以下为打开docker0接口的组播转发开关.

    [root@dap1:/home/vap]# echo 1 >  /proc/sys/net/ipv4/conf/docker0/mc_forwarding
    

    可以依照例子手工一次打开各参与组播路由转发的接口开关.

    3.手工配置静态组播路由.

    以下示例增加了2条静态的组播路由

    1.  
      [root@dap1:/home/vap]# ip route add 224.0.16.0/24 dev docker0
    2.  
       
    3.  
      [root@dap1:/home/vap]# ip route add from 12.23.24.15 to 224.0.18.0/24 dev docker0
    4.  
      [root@dap1:/home/vap]# ip route
    5.  
      default via 10.46.169.1 dev enp134s0 onlink
    6.  
      10.46.169.0/24 dev enp134s0 proto kernel scope link src 10.46.169.239
    7.  
      172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
    8.  
      224.0.16.0/24 dev docker0 scope link
    9.  
      224.0.18.0/24 dev docker0 scope link
    10.  
      238.97.1.144 dev docker0 scope link

    4.配置iptables,放行组播转发报文

    首先检查iptables 的 filter 表的 FORWARD 链的默认策略和实际规则,如果发现被阻断的情况需要根据实际情况放通规则.

    注意下图中 Chain FORWARD (policy ACCEPT .....),该ACCEPT标识了这条链的默认规则为ACCEPT.
     

    1.  
      [root@dap1:/home/vap]# iptables -t filter -nvL
    2.  
      Chain INPUT (policy ACCEPT 23306 packets, 3074K bytes)
    3.  
      pkts bytes target prot opt in out source destination
    4.  
      481K 108M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
    5.  
       
    6.  
      Chain FORWARD (policy ACCEPT 194K packets, 278M bytes)
    7.  
      pkts bytes target prot opt in out source destination
    8.  
      6544K 11G DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
    9.  
      6544K 11G DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
    10.  
      2262K 1036M ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
    11.  
      1295K 1806M DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
    12.  
      2987K 8295M ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
    13.  
      1533 61320 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
    14.  
       
    15.  
      Chain OUTPUT (policy ACCEPT 188K packets, 201M bytes)
    16.  
      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 的当前路由表情况:

    1.  
      [vap@dap1:~]$ pimd --show-routes
    2.  
      pimd: Failed removing /var/run/pimd/pimd.dump, may be showing stale information: Permission denied
    3.  
      Virtual Interface Table ======================================================
    4.  
      Vif Local Address Subnet Thresh Flags Neighbors
    5.  
      --- --------------- ------------------ ------ --------- -----------------
    6.  
      0 10.46.169.239 10.46.169/24 1 DR NO-NBR
    7.  
      1 172.17.0.1 172.17 1 DR NO-NBR
    8.  
      2 10.46.169.239 register_vif0 1
    9.  
       
    10.  
      Vif SSM Group Sources
    11.  
       
    12.  
      Multicast Routing Table ======================================================
    13.  
      ----------------------------------- (*,G) ------------------------------------
    14.  
      Source Group RP Address Flags
    15.  
      --------------- --------------- --------------- ---------------------------
    16.  
      INADDR_ANY 224.0.75.75 172.17.0.1 WC RP
    17.  
      Joined oifs: ...
    18.  
      Pruned oifs: ...
    19.  
      Leaves oifs: l..
    20.  
      Asserted oifs: ...
    21.  
      Outgoing oifs: o..
    22.  
      Incoming : ..I
    23.  
       
    24.  
      TIMERS: Entry JP RS Assert VIFS: 0 1 2
    25.  
      0 10 0 0 0 0 0
    26.  
      ----------------------------------- (S,G) ------------------------------------
    27.  
      ----------------------------------- (*,G) ------------------------------------
    28.  
      Source Group RP Address Flags
    29.  
      --------------- --------------- --------------- ---------------------------
    30.  
      INADDR_ANY 238.97.1.144 172.17.0.1 WC RP
    31.  
      Joined oifs: ...
    32.  
      Pruned oifs: ...
    33.  
      Leaves oifs: .l.
    34.  
      Asserted oifs: ...
    35.  
      Outgoing oifs: .o.
    36.  
      Incoming : ..I
    37.  
       
    38.  
      TIMERS: Entry JP RS Assert VIFS: 0 1 2
    39.  
      0 55 0 0 0 0 0
    40.  
      ----------------------------------- (S,G) ------------------------------------
    41.  
      --------------------------------- (*,*,G) ------------------------------------
    42.  
      Number of Groups: 2
    43.  
      Number of Cache MIRRORs: 0
    44.  
      ------------------------------------------------------------------------------

    4.配置iptables,放行组播转发报文

    首先检查iptables 的 filter 表的 FORWARD 链的默认策略和实际规则,如果发现被阻断的情况需要根据实际情况放通规则.

    注意下图中 Chain FORWARD (policy ACCEPT .....),该ACCEPT标识了这条链的默认规则为ACCEPT.
     

    1.  
      [root@dap1:/home/vap]# iptables -t filter -nvL
    2.  
      Chain INPUT (policy ACCEPT 23306 packets, 3074K bytes)
    3.  
      pkts bytes target prot opt in out source destination
    4.  
      481K 108M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22
    5.  
       
    6.  
      Chain FORWARD (policy ACCEPT 194K packets, 278M bytes)
    7.  
      pkts bytes target prot opt in out source destination
    8.  
      6544K 11G DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
    9.  
      6544K 11G DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
    10.  
      2262K 1036M ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
    11.  
      1295K 1806M DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
    12.  
      2987K 8295M ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
    13.  
      1533 61320 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
    14.  
       
    15.  
      Chain OUTPUT (policy ACCEPT 188K packets, 201M bytes)
    16.  
      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

    抓包查看igmppim具体组播报文

    tcpdump -ennvi 接口名

  • 相关阅读:
    Hibernate--Day01
    Java语言基础之数组
    Java语言基础之方法的设计
    Jmeter-文件目录
    Jmeter-简介及安装
    测试基础-测试策略与类型
    测试基础-软件测试计划
    测试基础-软件测试流程与测试模型
    测试基础-软件测试的环境
    测试基础-软件测试目的与对象
  • 原文地址:https://www.cnblogs.com/newjiang/p/13706485.html
Copyright © 2011-2022 走看看