go network_error ai_generated true

rpc error: code = Unavailable desc = connection error: dial tcp: lookup host on 127.0.0.11:53: no such host

ID: go/grpc-unavailable-connection-error

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2024-03-15First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.22 active — — —
1.23 active — — —

Root Cause

DNS resolution fails for the target gRPC server hostname, often due to misconfigured DNS or incorrect hostname in the client connection string.

generic

中文

目标gRPC服务器主机名的DNS解析失败,通常是由于DNS配置错误或客户端连接字符串中的主机名不正确。

Workarounds

  1. 90% success Use IP address instead of hostname in the gRPC target.
    conn, err := grpc.Dial("192.168.1.100:50051", grpc.WithInsecure())
  2. 85% success Configure custom DNS resolver in Go net package.
    net.DefaultResolver = &net.Resolver{PreferGo: true, Dial: func(ctx context.Context, network, address string) (net.Conn, error) { d := net.Dialer{}; return d.DialContext(ctx, "udp", "8.8.8.8:53") }}

Dead Ends

Common approaches that don't work:

  1. Retrying the same connection with backoff but not fixing DNS. 95% fail

    DNS resolution remains broken; retries never succeed.

  2. Changing port number in the dial string. 98% fail

    The issue is hostname resolution, not port; changing port doesn't help.