同一VPC下的ECS互通原理与实践

stellia 发表于 2021/08/13 11:31:47 2021/08/13
【摘要】 对于多数刚接触华为云的开发者来说,使用VPC和安全组总是有各种疑问,本文通过实践操作来快速了解安全组和VPC的作用

华为云官网上有一句话“默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。”

https://support.huaweicloud.com/productdesc-vpc/zh-cn_topic_0030969424.html

让我们来看看如何理解这句话。

第一步:我们来创建一个VPC中同一子网下的两个ECSecs01:192.168.1.240;ecs02:192.168.1.119)

把两ECS放在同一个安全组中;他们的安全组default策略如下:

验证可以互相ping通:

 

并且可以通过SSH互相登录:

由于安全组中对ICMPTCP:22策略进行了放行,所以我们可以看到验证到以上内容。

 

第二步:我们把上面的两个ECS放置在不同的安全组中。

esc01 安全组sg-01设置如下:

 

ecs02 安全组sg-02设置如下:

 

可以发现,该设置下无法互相ping

 

并发现,该设置下可以通过SSH登录

 

为什么ICMP策略不生效而TCP:22是生效的?

因为这里ICMP对应策略的源地址是它自身的安全组而TCP:22对应策略是所有的IP地址,所以说明设置了源地址为自身安全组的策略,它只能保证这一个安全组内的ecs可以执行通信策略。

 

所以我们将这个源地址替换成另一个ecs所绑定的安全组,如上方的sg-01替换成sg-02,此时ICMP又可以ping通。

 

经过以上操作和验证,文章开头这句话“默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。”是不是错的?

并不是,因为在实际网络规划中会先规划VPC和子网,还没有包含安全组的策略问题,所以当我们不考虑安全组设置时,这句话显然就是对的。

 

那问题出在了哪里?

因为对于华为云用户习惯来说,当我们创建ECS时必须要给ECS分配好VPC、子网以及安全组,所以这句话完全没有提安全组并不符合华为云操作特点或习惯。

对于安全组来说,默认情况下,系统会为每个用户创建一个default安全组,策略如下:

方向

协议

端口范围

目的地址/源地址

说明

出方向

全部

全部

目的地址:0.0.0.0/0

允许所有出站流量的数据报文通过。

入方向

全部

全部

源地址:当前安全组(例如:sg-xxxxx)

仅允许安全组内的云服务器彼此通信,丢弃其他入站流量的全部数据报文。

入方向

TCP

22

源地址:0.0.0.0/0

允许所有IP地址通过SSH远程连接到Linux云服务器。

入方向

TCP

3389

源地址:0.0.0.0/0

允许所有IP地址通过RDP远程连接到Windows云服务器。

 

安全组内的云服务器无需添加规则即可互相访问

 

如果客户的ECS使用的安全组都是默认情况下的安全组,那么“默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。”这句话也成立。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。