Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
docs:techref:odhcpd [2021/05/01 23:44] – update vgaeteradocs:techref:odhcpd [2024/04/09 03:19] (current) – [Table] systemcrash
Line 1: Line 1:
 ====== odhcpd ====== ====== odhcpd ======
-Embedded DHCP/DHCPv6/RA Server Relay.+See also: [[https://github.com/openwrt/odhcpd/blob/master/README|odhcpd upstream documentation]] 
 + 
 +odhcpd is an embedded DHCP/DHCPv6/RA server NDP relay.
  
 ===== Abstract ===== ===== Abstract =====
 odhcpd is a daemon for serving and relaying IP management protocols to configure clients and downstream routers. odhcpd is a daemon for serving and relaying IP management protocols to configure clients and downstream routers.
-It tries to follow the RFC 6204 requirements for IPv6 home routers.+It tries to follow the [[https://datatracker.ietf.org/doc/html/rfc6204|RFC 6204]] requirements for IPv6 home routers.
  
-odhcpd provides server services for DHCP, RA, stateless and stateful DHCPv6 and +odhcpd provides server services for DHCP, RA, stateless SLAAC and stateful DHCPv6prefix delegation and can be used to relay RA, DHCPv6 and NDP between routed (non-bridged) interfaces in case no delegated prefixes are available.
-prefix delegation and can be used to relay RA, DHCPv6 and NDP between routed +
-(non-bridged) interfaces in case no delegated prefixes are available.+
  
 ===== Features ===== ===== Features =====
Line 47: Line 47:
 Configuration for the odhcp daemon. Configuration for the odhcp daemon.
  
-^ Name ^ Type ^ Default ^ Description ^ +^ Name              ^ Type     ^ Default  ^ Description                                                                                     
-| ''legacy''''boolean'' | ''0'' | Enable DHCPv4 if the 'dhcp' section constains a ''start'' option, but no ''dhcpv4'' option set. | +| ''legacy''        | boolean  | ''0''    | Enable DHCPv4 if the 'dhcp' section contains a ''start'' option, but no ''dhcpv4'' option set.  
-| ''leasefile'' | ''string'' | | Location of the lease/hostfile for DHCPv4 and DHCPv6. | +| ''maindhcp''      | boolean  | ''0''    | Use odhcpd as the main DHCPv4 service.                                                          | 
-| ''leasetrigger''''string'' | | Location of the lease trigger script. |+| ''leasefile''     | string            | Location of the lease/hostfile for DHCPv4 and DHCPv6.                                           
 +| ''leasetrigger''  | string            | Location of the lease trigger script.                                                           | 
 +| ''loglevel''      | integer  | ''6''    | Syslog level priority (0-7). 0=emer, 1=alert, 2=crit, 3=err, 4=warn, 5=notice, 6=info, 7=debug  |
  
 ==== dhcp section ==== ==== dhcp section ====
Line 56: Line 58:
  
 <sortable> <sortable>
-^ Name ^ Type ^ Required ^ Default ^ Description ^ +^ Name                     ^ Type     ^ Required  ^ Default                      ^ Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-| ''interface'' | string | | ''<name of UCI section>'' | Logical OpenWrt interface. | +| ''interface''            | string             | ''<name of UCI section>''    | Logical OpenWrt interface.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
-| ''ifname'' | string | | ''<resolved from logical>'' | Physical network interface. | +| ''ifname''               | string             | ''<resolved from logical>''  | Physical network interface.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-| ''networkid'' | string | | ''<same as ifname>'' | Alias of ''ifname'' for compatibility. | +| ''networkid''            | string             | ''<same as ifname>''         | Alias of ''ifname'' for compatibility.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
-| ''ignore'' | boolean | | ''0''do not serve this interface unless overridden by ''ra'', ''ndp'', ''dhcpv4'' or ''dhcpv6'' options. | +| ''ignore''               | boolean            | ''0''                        Do not serve this interface unless overridden by ''ra'', ''ndp'', ''dhcpv4'' or ''dhcpv6'' options.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
-| ''master'' | boolean | | ''0''is a master interface for relaying | +| ''master''               | boolean            | ''0''                        Is a master interface for relaying.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
-| ''ra'' | string | | ''disabled'' | Router Advert service. Set to ''disabled'', ''server'', ''relay'' or ''hybrid''. | +| ''ra''                   | string             | ''disabled''                 | Router Advert service. Set to ''disabled'', ''server'', ''relay'' or ''hybrid''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
-| ''dhcpv6'' | string | | ''disabled'' | DHCPv6 service. Set to ''disabled'', ''server'', ''relay'' or ''hybrid''. | +| ''dhcpv6''               | string             | ''disabled''                 | DHCPv6 service. Set to ''disabled'', ''server'', ''relay'' or ''hybrid''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
-| ''dhcpv4'' | string | | ''disabled'' | DHCPv4 service. Set to ''disabled'' or ''server''. | +| ''dhcpv4''               | string             | ''disabled''                 | DHCPv4 service. Set to ''disabled'' or ''server''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
-| ''ndp'' | string | | ''disabled'' | Neighbor Discovery Proxy. Set to ''disabled'', ''relay'' or ''hybrid''. | +| ''ndp''                  | string             | ''disabled''                 | Neighbor Discovery Proxy. Set to ''disabled'', ''relay'' or ''hybrid''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
-| ''dynamicdhcp'' | boolean | | ''1'' | Leases for DHCPv4 and DHCPv6 are created dynamically. | +| ''dynamicdhcp''          | boolean            | ''1''                        | Leases for DHCPv4 and DHCPv6 are created dynamically.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 
-| ''dns'' | list | | ''<local address>'' | DNS servers to announce on the network. IPv4 and IPv6 addresses are accepted. | +| ''dhcpv4_forcereconf''   | boolean  |           | ''0''                        | Force reconfiguration by sending force renew message even if the client did not include the force renew nonce capability option ([[https://datatracker.ietf.org/doc/html/rfc6704|RFC 6704]]).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 
-| ''domain'' | list | | ''<local search domain>'' | Search domains to announce on the network. | +| ''dhcpv6_assignall''     | boolean  |           | ''1''                        | Assign all viable DHCPv6 addresses in statefull mode. If disabled only the DHCPv6 address having the longest preferred lifetime is assigned.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | 
-| ''leasetime'' | string | | ''12h'' | DHCPv4 address leasetime | +| ''dhcpv6_hostidlength''  | integer  |           | ''12''                       | Host ID length of dynamically created leases, allowed values: 12 - 64 (bits).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 
-| ''start'' | integer | | ''100'' | Starting address of the DHCPv4 pool. | +| ''dhcpv6_na''            | boolean  |           | ''1''                        | DHCPv6 stateful addressing hands out IA_NA - Internet Address - Network Address.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 
-| ''limit'' | integer | | ''150'' | Number of addresses in the DHCPv4 pool. | +| ''dhcpv6_pd''            | boolean  |           | ''1''                        | DHCPv6 stateful addressing hands out IA_PD - Internet Address - Prefix Delegation.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 
-| ''ra_default'' | integer | | ''0'' | Override default routeSet to ''0'' (default), ''1'' (ignore, no public address) or ''2'' (ignore all). | +| ''router''               | list               | ''<local address>''          | Routers to announce accepts IPv4 only.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
-| ''ra_management''integer | | ''1'' | RA management mode. See the "RA Management Modes" table below. | +| ''dns''                  | list               | ''<local address>''          | DNS servers to announce on the network. IPv4 and IPv6 addresses are accepted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 
-| ''ra_offlink'' | boolean | | ''0'' | Announce prefixes off-link | +| ''dns_service''          | boolean  |           | ''1''                        | Announce the address of interface as DNS service if the list of DNS is empty.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
-| ''ra_preference'' | string | | ''medium'' | Route preference ''medium'', ''high'' or ''low''+| ''domain''               | list               | ''<local search domain>''    | Search domains to announce on the network.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
-| ''ra_maxinterval'' | integer | | ''600'' | Maximum time allowed between sending unsolicited Router Advertisements (RA). | +| ''leasetime''            | string             | ''12h''                      | DHCPv4 address leasetime                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
-| ''ra_mininterval'' | integer | | ''200'' | Minimum time allowed between sending unsolicited Router Advertisements (RA). | +| ''start''                | integer            | ''100''                      | Starting address of the DHCPv4 pool.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
-| ''ra_lifetime'' | integer | | ''1800'' | Router Lifetime published in Router Advertisement (RA) messages. | +| ''limit''                | integer            | ''150''                      | Number of addresses in the DHCPv4 pool.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 
-| ''ra_useleasetime'' | boolean | | ''0'' | If set, the configured DHCPv4 ''leasetime'' is also used as limit and preferred lifetime of the IPv6 prefix. | +| ''preferred_lifetime''   | string             | ''12h''                      | Value for the preferred lifetime for a prefix.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
-| ''ra_reachabletime'' | integer | | ''0'' | Reachable Time in milliseconds to be published in Router Advertisement (RA) messages'. | +| ''ra_default''           | integer            | ''0''                        | Override default routeSet to ''0'' (default), ''1'' (ignore, no public address) or ''2'' (ignore all).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
-| ''ra_retranstime'' | integer | | ''0'' | Retransmit Time in milliseconds to be published in Router Advertisment (RA) messages. | +| ''ra_flags''             list               | ''other-config''             List of RA flags to be advertised in RA messages:\\ ''managed-config'' - get address information from DHCPv6 server. If this flag is set, ''%%other-config%%'' flag is redundant.\\ ''other-config'' - get other configuration from DHCPv6 server (such as DNS servers). See [[https://datatracker.ietf.org/doc/html/rfc4861#section-4.2|here]] for details.\\ ''home-agent'' - see [[https://datatracker.ietf.org/doc/html/rfc3775#section-7.1|here]] for details.\\ ''none''.\\ OpenWrt since version 21.02 configures ''managed-config'' and ''other-config'' [[https://github.com/openwrt/openwrt/blob/openwrt-21.02/package/network/services/odhcpd/files/odhcpd.defaults#L49-L50|by default]]. 
-| ''ra_hoplimit'' | integer | | ''0'' | The maximum hops to be published in Router Advertisement (RA) messages. | +| ''ra_slaac''             | boolean  |           | ''1''                        | Announce SLAAC for a prefix (that is, set the A flag in RA messages)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 
-| ''ra_mtu'' | integer | | ''0'' | The MTU to be published in Router Advertisement (RA) messages. | +| ''ra_management''        | integer  | no        | ''1''                        | :!: This option is [[commit>?p=project/odhcpd.git;a=commit;h=e73bf11dee1073aaaddc0dc67ca8c7d75ae3c6ad|deprecated]]. Use ''ra_flags'' and ''ra_slaac'' options instead. \\ RA management mode: no M-Flag but A-Flag (''0''), both M and A flags (''1''), M flag but not A flag (''2''                                                                                                                                                                                                                                                                                                                                                                                                                
-| ''ra_dns'' | boolean | | ''1'' | Announce DNS configuration in RA messages (RFC8106). | +| ''ra_offlink''           | boolean            | ''0''                        | Announce prefixes off-link.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
-| ''ndproxy_routing'' | boolean | | ''1'' | Learn routes from ND.+| ''ra_preference''        | string             | ''medium''                   | Route preference ''medium'', ''high'' or ''low''.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
-| ''ndproxy_slave'' | boolean | | ''0'' | NDProxy external slave. | +| ''ra_maxinterval''       | integer            | ''600''                      | Maximum time allowed between sending unsolicited Router Advertisements (RA).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
-| ''ndproxy_static'' | list | | | Static NDProxy prefixes. |+| ''ra_mininterval''       | integer            | ''200''                      | Minimum time allowed between sending unsolicited Router Advertisements (RA).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
 +| ''ra_lifetime''          | integer            | ''1800''                     | Router Lifetime published in Router Advertisement (RA) messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
 +| ''ra_useleasetime''      | boolean            | ''0''                        | If set, the configured DHCPv4 ''leasetime'' is used both as limit for the preferred and valid lifetime of an IPv6 prefix.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
 +| ''ra_reachabletime''     | integer            | ''0''                        | Reachable Time in milliseconds to be published in Router Advertisement (RA) messages'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 +| ''ra_retranstime''       | integer            | ''0''                        | Retransmit Time in milliseconds to be published in Router Advertisment (RA) messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
 +| ''ra_hoplimit''          | integer            | ''0''                        | The maximum hops to be published in Router Advertisement (RA) messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 +| ''ra_mtu''               | integer            | ''0''                        | The MTU to be published in Router Advertisement (RA) messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 +| ''ra_dns''               | boolean            | ''1''                        | Announce DNS configuration in RA messages ([[https://datatracker.ietf.org/doc/html/rfc8106|RFC 8106]]).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 +| ''ndproxy_routing''      | boolean            | ''1''                        | Learn routes from NDP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 +| ''ndproxy_slave''        | boolean            | ''0''                        | NDProxy external slave.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 +| ''ndproxy_static''       | list                                            | Static NDProxy prefixes.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 
 +| ''prefix_filter''        | string             | ''::/0''                     | Only advertise on-link prefixes within the provided IPv6 prefix. Others are filtered out.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 
 +| ''ntp''                  | list                                            | DHCPv6 stateful option 56 to Announce NTP servers                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
 </sortable> </sortable>
- 
-=== RA management modes === 
-^ Mode ^ M Flag ^ A Flag ^ Description ^ 
-| ''0'' | No | Yes | Only stateless (SLAAC) configuration enabled. | 
-| ''1'' | Yes | Yes | Both stateless (SLAAC) and stateful (DHCPv6) configurations are enabled. | 
-| ''2'' | Yes | No | Only statefull (DHCPv6) configuration is enabled. | 
  
 ==== host section ==== ==== host section ====
Line 100: Line 108:
  
 ^ Name ^ Type ^ Required ^ Default ^ Description ^ ^ Name ^ Type ^ Required ^ Default ^ Description ^
-| ''ip'' | string | Yes None | IP-Address to lease | +| ''ip'' | string | yes //(none)// | IP address to lease | 
-| ''mac'' | string | Optional None | MAC-address | +| ''mac'' | string | no //(none)// | MAC address | 
-| ''duid'' | string | No None | DUID in base16 | +| ''duid'' | string | no //(none)// | DUID in base16 | 
-| ''hostid'' | string | No None | IPv6 host identifier | +| ''hostid'' | string | no //(none)// | IPv6 host identifier | 
-| ''name'' | string | No None | Hostname |+| ''name'' | string | no //(none)// | Hostname | 
 +| ''leasetime'' | string | no | //(none)// | DHCPv4/v6 leasetime | 
 + 
 +Example ''hostid='105ee0badc0de''' => IPv6 '::1:5ee:bad:c0de'
  
 ===== ubus API ===== ===== ubus API =====
Line 129: Line 140:
 make package make package
 </code> </code>
- 
-===== Documentation ===== 
- * [[https://git.openwrt.org/?p=project/odhcpd.git;f=README;hb=openwrt-19.07|README @ 19.07]] 
- * [[https://github.com/openwrt/odhcpd/blob/master/README|README @ Snapshot]] 
  
  • Last modified: 2021/05/01 23:44
  • by vgaetera