AWS CDK 2.62.2中ALB自动生成ICMP出站拒绝规则的原因及建议
AWS CDK隐式创建ALB安全组时生成特殊ICMP规则的疑问解答
问题描述
使用AWS CDK 2.62.2版本,当通过以下代码让CDK隐式创建SecurityGroup时:
this.alb = new ApplicationLoadBalancer(this, 'Alb', { loadBalancerName: "Raido", vpc: props.vpc, internetFacing: true, vpcSubnets: { subnetType: SubnetType.PUBLIC, onePerAz: true, }, // securityGroup: props.securityGroup, idleTimeout: Duration.seconds(60), dropInvalidHeaderFields: false, desyncMitigationMode: DesyncMitigationMode.DEFENSIVE, });
会生成一条特殊的ICMP出站规则,详情如下:
egress rule: Type: Custom ICMP - IPv4 Protocol: 252 Port: 86 Destination: 255.255.255.255/32 Description: Disallow all traffic
手动创建SecurityGroup时则不会生成该规则,疑问点:
- CDK为何创建此规则?
- 是否需要自行添加类似规则?
解答
为什么CDK会创建这条规则
这是CDK内部的占位式规则,用于处理安全组出站规则的管理逻辑:
- AWS安全组默认会允许所有出站流量,但CDK在隐式创建安全组时,为了支持后续用户自定义出站规则的场景(避免自定义规则和默认全通规则冲突),会先添加这条特殊规则作为占位。
- 这条规则实际上不会影响正常流量:它的协议(252)和端口(86)是非常见的ICMP类型,且优先级低于后续CDK自动添加的必要出站规则(比如ALB与后端通信、健康检查所需的规则),同时它的目标地址是广播地址,实际不会匹配正常的出站流量。
是否需要自行添加类似规则
不需要。
- 如果是手动创建安全组:AWS默认会开放所有出站流量,若你有自定义需求,直接添加对应允许规则即可,无需添加这类占位规则。
- 如果是通过CDK隐式创建安全组:这条规则是CDK的内部机制,无需用户手动干预,也不会对ALB的正常运行产生影响。
内容的提问来源于stack exchange,提问作者Shorn
相关产品推荐
相关产品推荐

