Hi Jesper, This is solved in 2.6.1 with "stash-agent-option": true See here: https://kea.readthedocs.io/en/kea-2.6.1/arm/dhcp4-srv.html#stash-agent-options for further information.
Thank you, Darren Ankney On Sat, Nov 2, 2024 at 3:15 AM Jesper Nørgaard <jes...@trommefisk.dk> wrote: > > 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 > > > -- > ISC funds the development of this software with paid support subscriptions. > Contact us at https://www.isc.org/contact/ for more information. > > To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users. > > Kea-users mailing list > Kea-users@lists.isc.org > https://lists.isc.org/mailman/listinfo/kea-users -- ISC funds the development of this software with paid support subscriptions. Contact us at https://www.isc.org/contact/ for more information. To unsubscribe visit https://lists.isc.org/mailman/listinfo/kea-users. Kea-users mailing list Kea-users@lists.isc.org https://lists.isc.org/mailman/listinfo/kea-users