{"record":{"id":"6e48abaa40d5cb77","repo":"cloudflare/cloudflared","slug":"invalid-value-for-edge-bind-address-s","errorCode":null,"errorMessage":"invalid value for edge-bind-address: %s","messagePattern":"invalid value for edge-bind-address: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cloudflared/tunnel/configuration.go","lineNumber":318,"sourceCode":"\t\tv = allregions.IPv4Only\n\tcase \"6\":\n\t\tv = allregions.IPv6Only\n\tcase \"auto\":\n\t\tv = allregions.Auto\n\tdefault: // unspecified or invalid\n\t\terr = fmt.Errorf(\"invalid value for edge-ip-version: %s\", version)\n\t}\n\treturn\n}\n\nfunc parseConfigBindAddress(ipstr string) (net.IP, error) {\n\t// Unspecified - it's fine\n\tif ipstr == \"\" {\n\t\treturn nil, nil\n\t}\n\tip := net.ParseIP(ipstr)\n\tif ip == nil {\n\t\treturn nil, fmt.Errorf(\"invalid value for edge-bind-address: %s\", ipstr)\n\t}\n\treturn ip, nil\n}\n\nfunc testIPBindable(ip net.IP) error {\n\t// \"Unspecified\" = let OS choose, so always bindable\n\tif ip == nil {\n\t\treturn nil\n\t}\n\n\taddr := &net.UDPAddr{IP: ip, Port: 0}\n\tlistener, err := net.ListenUDP(\"udp\", addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_ = listener.Close()\n\treturn nil\n}","sourceCodeStart":300,"sourceCodeEnd":336,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/cmd/cloudflared/tunnel/configuration.go#L300-L336","documentation":"Configuration validation error in parseConfigBuildAddress: the value given for edge-bind-address (flag or config file) is non-empty but net.ParseIP cannot parse it, so cloudflared cannot determine the local address to bind edge connections to and preparation of the tunnel config fails.","triggerScenarios":"Passing `--edge-bind-address example.com`, `10.0.0.0/24`, `localhost`, or a mistyped IP that net.ParseIP cannot parse, via flag or config.","commonSituations":"Using hostnames instead of literal IPs (DNS resolution is intentionally not attempted); copy-pasting a CIDR block from interface listings; trailing whitespace or quotes in YAML values.","solutions":["Replace the value with a literal IP address such as `0.0.0.0`, `::`, or the host's interface IP.","Resolve the hostname manually (`dig +short host`) and use the resulting IP if a hostname was intended.","Remove edge-bind-address to let the OS select the address."],"exampleFix":"// before\nedge-bind-address: myhost.example.com\n// after\nedge-bind-address: 192.0.2.10","handlingStrategy":"validation","validationCode":"// shell: ensure value parses as an IP literal\n[[ \"$EDGE_BIND_ADDR\" =~ ^[0-9.]+$ || \"$EDGE_BIND_ADDR\" == *:* ]] || unset EDGE_BIND_ADDR\npython3 -c \"import ipaddress,sys; ipaddress.ip_address('$EDGE_BIND_ADDR')\" || { echo 'not an IP'; exit 1; }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Never use hostnames or CIDR blocks for edge-bind-address.","Trim whitespace/quotes from YAML values.","Resolve hostnames to IPs at provisioning time if needed."],"tags":["configuration","network","ip-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-14T05:17:10.506Z"}