{"record":{"id":"510378588ab5f987","repo":"AdguardTeam/AdGuardHome","slug":"range-start-v-is-outside-network-v","errorCode":null,"errorMessage":"range start %v is outside network %v","messagePattern":"range start (.+?) is outside network (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/dhcpd/config.go","lineNumber":228,"sourceCode":"\n\tc.ipRange, err = newIPRange(rangeStart.AsSlice(), rangeEnd.AsSlice())\n\tif err != nil {\n\t\t// Don't wrap the error since it's informative enough as is and there is\n\t\t// an annotation deferred already.\n\t\treturn err\n\t}\n\n\tif c.ipRange.contains(gatewayIP.AsSlice()) {\n\t\treturn fmt.Errorf(\n\t\t\t\"gateway ip %v in the ip range: %v-%v\",\n\t\t\tgatewayIP,\n\t\t\tc.RangeStart,\n\t\t\tc.RangeEnd,\n\t\t)\n\t}\n\n\tif !c.subnet.Contains(rangeStart) {\n\t\treturn fmt.Errorf(\n\t\t\t\"range start %v is outside network %v\",\n\t\t\tc.RangeStart,\n\t\t\tc.subnet,\n\t\t)\n\t}\n\n\tif !c.subnet.Contains(rangeEnd) {\n\t\treturn fmt.Errorf(\n\t\t\t\"range end %v is outside network %v\",\n\t\t\tc.RangeEnd,\n\t\t\tc.subnet,\n\t\t)\n\t}\n\n\treturn nil\n}\n\n// V6ServerConf - server configuration","sourceCodeStart":210,"sourceCodeEnd":246,"githubUrl":"https://github.com/AdguardTeam/AdGuardHome/blob/b41aefbe51c8dde65e2c50f093996afa0502edf9/internal/dhcpd/config.go#L210-L246","documentation":"Validation found that range_start is not contained within the configured subnet (CIDR). DHCPv4 requires the dynamic pool to be inside the interface's network.","triggerScenarios":"Setting range_start outside subnet_mask/interface subnet, e.g. subnet 192.168.0.0/24 with range_start 192.168.1.10, then calling Create.","commonSituations":"Subnet mask changed on the interface but DHCP range not updated; typos in the third octet; mixing /24 and /16 conventions.","solutions":["Set range_start to an address inside the interface subnet","Verify subnet_mask matches the actual network","Re-apply config"],"exampleFix":"# before\nsubnet_mask: 255.255.255.0\nrange_start: 192.168.2.10\n# after\nsubnet_mask: 255.255.255.0\nrange_start: 192.168.0.10","handlingStrategy":"validation","validationCode":"if !subnet.Contains(rangeStart) { return fmt.Errorf(\"range_start %v outside subnet\", rangeStart) }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Derive defaults for range from the interface subnet programmatically","Re-check ranges after subnet mask changes"],"tags":["dhcp","subnet","range","validation"],"backgroundTag":"dhcp-range-outside-subnet","analyzedSha":"b41aefbe51c8dde65e2c50f093996afa0502edf9","analyzedAt":"2026-08-27T04:57:55.097Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}