yinl_li 发表于 2017-12-5 08:35:13

在OpenStack中绕过或停用security group (iptables)

  眼下。OpenStack中默认採用了security group的方式。用系统的iptables来过滤进入vm的流量。这个本意是为了安全,可是往往给调试和开发带来一些困扰。
  因此,暂时性的禁用它能够排除由于iptables规则错误问题带来的网络不通等情况。
  在H版本号中,能够通过改动neutron plugin.ini中的firewall配置来禁用security group。
  但在I版本号中。类似的操作仅仅会让vm出来的流量都无法通过安全网桥。
  因此,在正常配置启用security group的情况下,我们须要想办法来让流量绕过它。
  通过《深入理解OpenStack中的网络实现》中的分析。我们知道。从vm出来的流量被过滤的规则在 neutron-openvswi-o9LETTERID链上。而到vm里面的规则在neutron-openvswi-i9LETTERID链上。
  因此,我们仅仅须要相应在链上加入同意通过的规则就可以。
  首先。查看vm出来的安全规则链上的规则
  iptables -nvL neutron-openvswi-o9LETTERID

  普通情况下,类似于以下几条
  Chain neutron-openvswi-o4430511a-6 (2 references)
pkts bytes target   prot opt in   out   source               destination         
    61968 RETURN   udp--*      *       0.0.0.0/0            0.0.0.0/0          udpspt:68dpt:67
1437121K neutron-openvswi-s4430511a-6all--*      *      0.0.0.0/0            0.0.0.0/0         
    0   0 DROP       udp--*      *       0.0.0.0/0            0.0.0.0/0          udpspt:67dpt:68
    0   0 DROP       all--*      *       0.0.0.0/0            0.0.0.0/0         state INVALID
278 23352 RETURN   all--*      *       0.0.0.0/0            0.0.0.0/0         state RELATED,ESTABLISHED
1159 97356 RETURN   all--*      *       0.0.0.0/0            0.0.0.0/0         
    0   0 neutron-openvswi-sg-fallbackall--*      *      0.0.0.0/0            0.0.0.0/0   
  可见,默认同意通过的流量仅仅有源port为67而目标port68的dhcp请求流量,另外就是neutron-openvswi-s4430511a-6链中,会对源地址和源mac进行检查,假设跟分配到的一致,则同意通过。
  比如,我们让全部的ping包(无论源地址和源mac)都同意从vm发出来,则须要加入
  iptables -I neutron-openvswi-o9LETTERID -p icmp -j RETURN

  更简单粗暴的,同意全部的从vm出来的流量。不进行不论什么检查。则须要加入
  iptables -I neutron-openvswi-o9LETTERID -j RETURN

  

  须要注意的是,这样加入的规则,不在neutron的维护中。因此,过一段时间后会被清理掉,这时候就须要又一次加入。
页: [1]
查看完整版本: 在OpenStack中绕过或停用security group (iptables)