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

本文介绍如何在OpenStack中临时禁用安全组以解决网络问题。通过修改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         
    6  1968 RETURN     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp spt:68 dpt:67 
 1437  121K neutron-openvswi-s4430511a-6  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
    0     0 DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp spt:67 dpt: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-fallback  all  --  *      *       0.0.0.0/0            0.0.0.0/0     

可见,默认允许通过的流量只有源端口为67而目标端口68的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的维护中,因此,过一段时间后会被清理掉,这时候就需要重新添加。

OpenStack 中,安全组Security Group)是用于控制虚拟机实例网络流量的一种机制,类似于防火墙规则。通过 `openstack security group create` 命令可以创建一个新的安全组,并为其分配名称和描述。 ### 命令格式与参数说明 命令的基本格式如下: ```bash openstack security group create [OPTIONS] NAME ``` - `NAME`:指定新创建的安全组的名称,必须是唯一的。 - `[OPTIONS]`:可选参数,用于定义安全组的附加属性,例如描述信息、项目关联等。 例如,创建一个名为 `my-security-group` 的安全组并添加描述信息的命令如下: ```bash openstack security group create --description "Allow SSH and HTTP traffic" my-security-group ``` 该命令创建了一个名为 `my-security-group` 的安全组,并设置了描述信息为 `Allow SSH and HTTP traffic`。 ### 安全组规则的配置 创建安全组后,需要为其添加规则以定义允许拒绝的流量类型。例如,允许 SSH 流量的规则可以使用以下命令: ```bash openstack security group rule create \ --protocol tcp \ --dst-port 22 \ --remote-ip 0.0.0.0/0 \ my-security-group ``` 该命令为 `my-security-group` 添加了一条规则,允许从任意 IP 地址(`0.0.0.0/0`)向目标端口 22(SSH)发送 TCP 协议的数据包。 ### 安全组的使用场景 安全组通常用于控制虚拟机实例的网络访问权限。例如,在创建虚拟机实例时,可以指定一个多个安全组,以确保实例仅接受特定类型的网络流量。这种机制可以有效提升云环境的安全性。 安全组的配置与管理在 OpenStack 的网络服务(Neutron)中实现。Neutron 提供了丰富的 API 和 CLI 工具,用于管理和操作安全组规则[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值