
# 服务网格如何支持自定义网段或端口拦截规则？
#### 操作场景
Istio 为实现服务网格的透明化流量治理，Sidecar默认拦截所有出入流量， 这种设计确保了流量治理无死角、业务零侵入和安全可信。但这种默认拦截机制在实际应用场景下也会带来一些问题：
- 所有流量都经过Sidecar代理，会导致Sidecar的资源占用（内存、CPU）较高，严重时可能导致业务pod重启甚至服务雪崩。
- 某些场景下需要直接访问外部服务（如数据库连接池），不能使用默认拦截机制。
因此本章将介绍如何精细化配置流量拦截规则，以解决Istio的默认拦截机制在实际应用场景下的问题。
#### 负载级别配置拦截IP网段
通过配置业务deployment文件，可以在负载级别配置IP网段拦截：
执行**kubectl edit deploy --n *user_namespace user_deployment***
1. 在deployment.spec.template.metadata.annotations中配置IP网段拦截traffic.sidecar.istio.io/includeOutboundIPRanges：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001614624177.png)
2. 在deployment.spec.template.metadata.annotations中配置IP网段不拦截traffic.sidecar.istio.io/excludeOutboundIPRanges：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001564064816.png)
![](https://support.huaweicloud.com/asm_faq/public_sys-resources/caution_3.0-zh-cn.png)
上述操作会导致业务容器滚动升级。
#### 负载级别指定端口配置出入流量拦截
通过修改业务deployment文件，可以在负载级别配置端口上的出入流量拦截规则：
执行**kubectl edit deploy --n *user_namespace user_deployment***
1. 在deployment.spec.template.metadata.annotations中配置入流量指定端口不拦截traffic.sidecar.istio.io/excludeInboundPorts：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001614704537.png)
2. 在deployment.spec.template.metadata.annotations中配置入流量指定端口拦截traffic.sidecar.istio.io/includeInboundPorts：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001563905496.png)
3. 在deployment.spec.template.metadata.annotations中配置出流量指定端口不拦截traffic.sidecar.istio.io/excludeOutboundPorts：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001614824185.png)
4. 在deployment.spec.template.metadata.annotations中配置出流量指定端口拦截traffic.sidecar.istio.io/includeOutboundPorts：
![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001614504613.png)
![](https://support.huaweicloud.com/asm_faq/public_sys-resources/caution_3.0-zh-cn.png)
上述操作会导致业务容器滚动升级。
#### 验证方式
由于流量拦截配置最终会在容器内iptables中生效，执行下述指令查看配置是否生效：
1. 登录到配置流量拦截策略工作负载所在节点，**docker ps**找到对应的pause容器，查看容器id；
2. 查看容器进程**docker inspect \<CONTAINER_ID\> \| grep --i pid** ;
3. 进入对应进程namespace：**nsenter --t \<PID\> -n bash**;
4. 查询iptables：iptables --t nat --L --n --v，检查配置的端口、网段拦截策略是否生效; ![](https://support.huaweicloud.com/asm_faq/zh-cn_image_0000001718823329.png)
   
 
