[Kea-users] Cable modem setup, failed to select subnet

Jesper Nørgaard jesper at trommefisk.dk
Sat Nov 2 07:14:42 UTC 2024


All,

I am setting up a new KEA DHCP solution for an ISP. When clients are doing a DISCOVER they source from the CMTS which acts as a relay. They then get the correct IP address. But when the client comes back half time with a unicast, the DHCP server does not know in which subnet the client belongs and does a NAK, meaning the client looses the IP until the client does a new DISCOVER:

tid=0x322cdf6c: failed to select a subnet for incoming packet, src 100.71.0.208, type DHCPREQUEST

Shouldn’t the DHCP server be able to match the clients IP with a subnet, ignoring the client class?



Config:

{
"Dhcp4": {
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "/tmp/kea4-ctrl-socket"
    },
    "hooks-libraries": [
        {
            "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_flex_id.so",
            "parameters": {
                "identifier-expression": "option[82].option[2].hex",
                "replace-client-id": true
            }
        },
        {
            "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so",
       "parameters": {
                "store-extended-info": true
            }
        },
        {
            "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_cb_cmds.so"
        },
 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_host_cmds.so"
 },
 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_host_cache.so"
 },
 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_pgsql_cb.so"
 },
 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_subnet_cmds.so"
 },
 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_class_cmds.so"
 },
 {
            "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so"
        },

 {
     "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_legal_log.so",
     "parameters": {
                    "path": "/var/log/kea",
                    "base-name": "kea-forensic4",
      "time-unit": "second",
      "count": 3600
            }
 }
    ],
    "lease-database": {
        "type": "postgresql",
        "port": 5432,
        "max-reconnect-tries": 3,
        "reconnect-wait-time": 50
    },

    "hosts-database": {
        "type": "postgresql",
        "port": 5432,
        "max-reconnect-tries": 3,
        "reconnect-wait-time": 50
     },

     "config-control": {
        "config-databases": [
        {
            "type": "postgresql",
         
            "port": 5432
        }
        ],
        "config-fetch-wait-time": 20
    },
    "expired-leases-processing": {
        "reclaim-timer-wait-time": 10,
        "flush-reclaimed-timer-wait-time": 25,
        "hold-reclaimed-time": 3600,
        "max-reclaim-leases": 100,
        "max-reclaim-time": 250,
        "unwarned-reclaim-cycles": 5
    },

    "interfaces-config": {
        "interfaces": ["ens35"],
        "dhcp-socket-type": "udp"
    },

    //"host-reservation-identifiers": ["client-id", "hw-address", "circuit-id", "flex-id", "duid"],
    "host-reservation-identifiers": ["flex-id"],
    "match-client-id": true,

    "renew-timer": 900,
    "rebind-timer": 1800,
    "valid-lifetime": 3600,


// Logging configuration starts here. Kea uses different loggers to log various
// activities. For details (e.g. names of loggers), see Chapter 18.
        "loggers": [
            {
                "name": "kea-dhcp4",
                "output_options": [
                    {
                        "output": "/var/log/kea/kea-dhcp4.log"
                    }
                ],
                "severity": "INFO",
                "debuglevel": 99
            },
            {
                "name": "kea-dhcp4.leases",
                "output_options": [
                    {
                        "output": "/var/log/kea/kea-dhcp4-leases.log"
                    }
                ],
                "severity": "INFO",
                "debuglevel": 0
            },
            {
                "name": "kea-dhcp4.alloc-engine",
                "output_options": [
                    {
                        "output": "/var/log/kea/kea-dhcp4-alloc-engine.log"
                    }
                ],
                "severity": "INFO",
                "debuglevel": 99
            },
            {
                "name": "kea-dhcp4.ddns",
                "output_options": [
                    {
                        "output": "/var/log/kea/kea-dhcp4-ddns.log"
                    }
                ],
                "severity": "INFO",
                "debuglevel": 0
            }
        ]
    }

}




"shared-networks":[{
	"interface":"ens35",
	"name":"CMTS-A",
	"option-data":[],
	"relay":{"ip-addresses":["100.70.224.1","188.228.85.1"]},
	"subnet4":[{"4o6-interface":"",
		"4o6-interface-id":"",
		"4o6-subnet":"",
		"client-class":"Option82Subscribers",
		"id":1,
		"option-data":[{
		"always-send":false,
	"code":3,"csv-format":true,
"data":"100.70.224.1",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
		"pools":[{
		"option-data":[],
	"pool":"100.70.224.2-100.70.255.254"}],
		"relay":{"ip-addresses":[]},
	"reservations":[],
"subnet":"100.70.224.0/19"},
{"4o6-interface":"",
	"4o6-interface-id":"",
	"4o6-subnet":"",
	"client-class":"Option82Subscribers",
	"id":2,
	"option-data":[{
	"always-send":false,
"code":3,
"csv-format":true,
"data":"188.228.85.1",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
	"pools":[],
	"relay":{
	"ip-addresses":[]},
"reservations":[],
"subnet":"188.228.85.0/26"}]},
	{"interface":"ens35",
		"name":"CMTS-B",
		"option-data":[],
		"relay":{"ip-addresses":["100.71.0.1","188.228.85.65"]},
		"subnet4":[{
			"4o6-interface":"",
			"4o6-interface-id":"",
			"4o6-subnet":"",
			"client-class":"Option82Subscribers",
			"id":3,
			"option-data":[{
			"always-send":false,
		"code":3,
	"csv-format":true,
"data":"100.71.0.1",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
			"pools":[{
			"option-data":[],
		"pool":"100.71.0.2-100.71.31.254"}],
			"relay":{
			"ip-addresses":[]},
		"reservations":[],
	"subnet":"100.71.0.0/19"},
	{"4o6-interface":"",
		"4o6-interface-id":"",
		"4o6-subnet":"",
		"client-class":"Option82Subscribers",
		"id":4,
		"option-data":[{
		"always-send":false,
	"code":3,
"csv-format":true,
"data":"188.228.85.65",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
		"pools":[],
		"relay":{"ip-addresses":[]},
	"reservations":[],
"subnet":"188.228.85.64/26"}]},
		{"interface":"ens35",
			"name":"CMTS-C",
			"option-data":[],
			"relay":{
			"ip-addresses":["100.71.32.1","188.228.85.129"]},
			"subnet4":[{
				"4o6-interface":"",
				"4o6-interface-id":"",
				"4o6-subnet":"",
				"client-class":"Option82Subscribers",
				"id":5,"option-data":[{
				"always-send":false,
			"code":3,
		"csv-format":true,
	"data":"100.71.32.1",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
	"pools":[{
	"option-data":[],
"pool":"100.71.32.2-100.71.63.254"}],
	"relay":{
	"ip-addresses":[]},
"reservations":[],
"subnet":"100.71.32.0/19"},
{"4o6-interface":"",
	"4o6-interface-id":"",
	"4o6-subnet":"",
	"client-class":"Option82Subscribers",
	"id":6,
	"option-data":[{
	"always-send":false,
"code":3,
"csv-format":true,
"data":"188.228.85.129",
"name":"routers",
"never-send":false,
"space":"dhcp4"}],
	"pools":[],
	"relay":{
	"ip-addresses":[]},
"reservations":[],
"subnet":"188.228.85.128/26"}]}],
"stash-agent-options":false,
"statistic-default-sample-age":0,
"statistic-default-sample-count":20,
"store-extended-info":false,
"subnet4":[],
"t1-percent":0.5,
"t2-percent":0.875,
"valid-lifetime":3600},

"daemonId":3,
"daemonName":"dhcp4",
"editable":true,
"options":{
	"options":[{"code":6,
		"fields":[{
		"fieldType":"ipv4-address",
	"values":["81.167.36.5"]},
	{"fieldType":"ipv4-address",
	"values":["81.167.36.12"]}],
	"options":null,
"universe":4},
{"code":15,
	"fields":[{
	"fieldType":"string",
"values":[""]}],
"options":null,
"universe":4}],


————————————————
Jesper Nørgaard




More information about the Kea-users mailing list