{"record":{"id":"cda2c1c1e3018d06","repo":"cloudflare/cloudflared","slug":"invalid-edge-bind-address-s-v","errorCode":null,"errorMessage":"invalid edge-bind-address %s: %v","messagePattern":"invalid edge-bind-address (.+?): (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cloudflared/tunnel/configuration.go","lineNumber":183,"sourceCode":"\t\t\tedgeTLSConfig.NextProtos = tlsSettings.NextProtos\n\t\t}\n\t\tedgeTLSConfigs[p] = edgeTLSConfig\n\t}\n\n\tgracePeriod, err := gracePeriod(c)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tedgeIPVersion, err := parseConfigIPVersion(c.String(flags.EdgeIpVersion))\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tedgeBindAddr, err := parseConfigBindAddress(c.String(flags.EdgeBindAddress))\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif err := testIPBindable(edgeBindAddr); err != nil {\n\t\treturn nil, nil, fmt.Errorf(\"invalid edge-bind-address %s: %v\", edgeBindAddr, err)\n\t}\n\tedgeIPVersion, err = adjustIPVersionByBindAddress(edgeIPVersion, edgeBindAddr)\n\tif err != nil {\n\t\t// This is not a fatal error, we just overrode edgeIPVersion\n\t\tlog.Warn().Str(\"edgeIPVersion\", edgeIPVersion.String()).Err(err).Msg(\"Overriding edge-ip-version\")\n\t}\n\n\tregion := c.String(flags.Region)\n\tendpoint := namedTunnel.Credentials.Endpoint\n\tvar resolvedRegion string\n\t// set resolvedRegion to either the region passed as argument\n\t// or to the endpoint in the credentials.\n\t// Region and endpoint are interchangeable\n\tif region != \"\" && endpoint != \"\" {\n\t\treturn nil, nil, fmt.Errorf(\"region provided with a token that has an endpoint\")\n\t} else if region != \"\" {\n\t\tresolvedRegion = region\n\t} else if endpoint != \"\" {","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/cmd/cloudflared/tunnel/configuration.go#L165-L201","documentation":"The edge-bind-address flag was parsed successfully but the address cannot actually be bound (testIPBindable opens a listener to verify). The library throws this so tunnel startup fails fast instead of failing later at connection time.","triggerScenarios":"Setting `--edge-bind-address` to an IP not present on any local interface, an address in use without SO_REUSE options, or a privileged/port-conflicted address, then running `cloudflared tunnel run`.","commonSituations":"Copying a config from another host whose interface IP differs; running in containers/Kubernetes where the pod has no route to the specified IP; specifying an IPv6 address on an IPv4-only host.","solutions":["Remove the `edge-bind-address` setting to let the OS choose the appropriate local address.","Set it to an IP that exists on the host (`ip addr` / `ifconfig`) and is bindable.","In containers, prefer 0.0.0.0/:: or the pod IP; verify with `ip addr` inside the container."],"exampleFix":"// before (config.yml)\nedge-bind-address: 10.0.0.99\n// after\n# edge-bind-address removed; OS chooses the local address","handlingStrategy":"validation","validationCode":"// shell: ensure the bind address exists on this host\nip=\"10.0.0.5\"\nip -o addr show | grep -qw \"$ip\" || { echo \"$ip not on any interface\"; exit 1; }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only set edge-bind-address when you know the exact local interface IP.","Omit the setting in containers unless the pod IP is known at start time.","Test config changes with `cloudflared tunnel --config ... run` in a staging host first."],"tags":["network","configuration","bind-address"],"backgroundTag":"invalid-config-value","analyzedSha":"2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f","analyzedAt":"2026-09-06T04:14:33.757Z","contentChangedAt":"2026-09-06T04:14:33.757Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}