同一VPC下的ECS互通原理与实践
华为云官网上有一句话“默认情况下,同一个VPC的所有子网内的弹性云服务器均可以进行通信,不同VPC的弹性云服务器不能进行通信。”
https://support.huaweicloud.com/productdesc-vpc/zh-cn_topic_0030969424.html
让我们来看看如何理解这句话。
第一步:我们来创建一个VPC中同一子网下的两个ECS(ecs01:192.168.1.240;ecs02:192.168.1.119)
把两ECS放在同一个安全组中;他们的安全组default策略如下:
验证可以互相ping通:
并且可以通过SSH互相登录:
由于安全组中对ICMP和TCP: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的弹性云服务器不能进行通信。”这句话也成立。
- 点赞
- 收藏
- 关注作者
评论(0)