nginx / nginx/agent

ipv6 reachability recovery

Open
#1,898 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Go
Stars
371
Forks
107
Avg merge
1d 16h
Merged PRs (30d)
37

Description

Bug Overview

Description
NGINX Agent (otel-nginx-agent) attempts to connect to the N1 console over IPv6 even in environments where that IPv6 route isn't usable, and there's currently no way to prevent this without disabling IPv6 support entirely on the host's networking stack.

Environment
• Agent version: v3.11.3.

Steps to Reproduce

  1. Run nginx-agent on a host with IPv6 enabled where the resolved IPv6 address for agent.connect.nginx.com isn't reachable..
  2. Observe the agent attempting to dial the IPv6 address instead of (or before) falling back to IPv4..

Error Log
2026-08-26T14:23:02.849Z warn grpc@v1.83.0/clientconn.go:1532 [core] [Channel #12 SubChannel #17] grpc: addrConn.createTransport failed to connect to {Addr: "[2600:1f16:19c8:d402:848f:459f:ea85:45a2]:443", ServerName: "agent.connect.nginx.com:443", }. Err: connection error: desc = "transport: Error while dialing: dial tcp [2600:1f16:19c8:d402:848f:459f:ea85:45a2]:443: connect: cannot assign requested address" {"resource": {"service.instance.id": "491f6ef8-8625-460a-8f83-93794f61072c", "service.name": "otel-nginx-agent", "service.version": "v3.11.3"}}

Expected Behavior
Agent should either prefer IPv4 when IPv6 isn't viable, or provide a configuration option to disable IPv6 connections for the gRPC client without requiring IPv6 to be disabled at the OS/networking level.

Actual Behavior
Agent keeps attempting IPv6 connections to the console, causing connection errors, and the only known workaround is disabling IPv6 on the entire host.

Request
Add a config option (e.g. a prefer-ipv4 / disable-ipv6 gRPC dial setting) so users can control this at the agent level.

Expected Behavior

If ipv6 is configured or otherwise available on the host system and full ipv6 reachability exists to the N1C, things should work correctly, as ipv4 connections should be attempted to reach the N1C.

Steps to Reproduce the Bug
  1. Deploy a container with ipv6 enabled, such as private-registry.nginx.com/nginx-plus/agentv3:r37.0-debian
  2. The container host environment should have ipv6, but no ipv6 reachability to agent.connect.nginx.com exists
  3. Agent will start but will repeatedly log warn messages such as:
2026-08-26T14:23:02.849Z warn grpc@v1.83.0/clientconn.go:1532 [core] [Channel #12 SubChannel #17] grpc: addrConn.createTransport failed to connect to {Addr: "[2600:1f16:19c8:d402:848f:459f:ea85:45a2]:443", ServerName: "agent.connect.nginx.com:443", }. Err: connection error: desc = "transport: Error while dialing: dial tcp [2600:1f16:19c8:d402:848f:459f:ea85:45a2]:443: connect: cannot assign requested address" {"resource": {"service.instance.id": "491f6ef8-8625-460a-8f83-93794f61072c", "service.name": "otel-nginx-agent", "service.version": "v3.11.3"}}
Environment Details
  • Target deployment platform: Docker
  • Target OS: Debian (private-registry.nginx.com/nginx-plus/agentv3:r37.0-debian)
  • Version of this project or specific commit: 3.11.3
Additional Context

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the gRPC client connection setup and configuration handling responsible for dialing agent.connect.nginx.com. Reproduce the behavior in the stated Docker Debian environment, then verify that IPv4 fallback or an agent-level IPv6 control prevents repeated unreachable IPv6 attempts without disabling IPv6 on the host.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, grpc
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.