You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Istio严格mTLS模式下TCP Socket通信遇filter_chain_not_found错误

问题分析与排查解决方案

核心问题本质

当mTLS设为STRICT模式时,服务端Envoy仅接受经过mTLS加密的流量,但客户端侧的流量未被正确加密(或客户端Envoy未发起mTLS握手),导致服务端Envoy找不到匹配的FilterChain,触发filter_chain_not_found错误。


排查方向与解决方案

1. 校验客户端DestinationRule配置有效性

确保DestinationRule正确关联服务端服务,且配置了ISTIO_MUTUAL模式:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: server-c-socket-server
  namespace: server-c-socket-server # 需与服务端namespace一致
spec:
  host: server-c-socket-server-service.server-c-socket-server.svc.cluster.local
  subsets:
  - name: v1
    labels:
      app: server-c-socket-server # 需与服务端Pod的label完全匹配
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL
  • 验证客户端Sidecar是否加载该配置:
    istioctl pc destination-rules <客户端Pod名称> -n <客户端namespace>
    

2. 确认PeerAuthentication作用范围与优先级

确保服务端namespace的PeerAuthentication为STRICT模式,且无全局配置冲突:

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: server-c-socket-server
spec:
  mtls:
    mode: STRICT
  • 验证服务端Sidecar的生效配置:
    istioctl pc peer-authz <服务端Pod名称> -n <服务端namespace>
    

3. 修正VirtualService的TCP路由配置

由于是TCP服务,需配置tcp.route而非HTTP路由:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: server-c-socket-server
  namespace: server-c-socket-server
spec:
  hosts:
  - server-c-socket-server-service.server-c-socket-server.svc.cluster.local
  tcp:
  - match:
    - port: 50000 # 与服务端Service的端口一致
    route:
    - destination:
        host: server-c-socket-server-service.server-c-socket-server.svc.cluster.local
        port:
          number: 50000
        subset: v1 # 与DestinationRule中定义的subset一致

4. 检查Envoy Sidecar监听配置

  • 服务端Sidecar:确认50000端口监听已启用TLS校验

    istioctl pc listeners <服务端Pod名称> -n <服务端namespace>
    

    输出需包含TLS Inspector过滤器,且FilterChain的transport_socket为tls模式。

  • 客户端Sidecar:确认 outbound 到服务端50000端口的流量已配置ISTIO_MUTUAL加密

    istioctl pc listeners <客户端Pod名称> -n <客户端namespace>
    

5. 排查EnvoyFilter冲突

若之前自定义了EnvoyFilter,可能破坏了默认的FilterChain规则。暂时移除所有自定义EnvoyFilter,测试是否恢复正常,再逐步排查冲突点。


内容的提问来源于stack exchange,提问作者gerrit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:30:48