123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- odhcpd - Embedded DHCP/DHCPv6/RA Server & Relay
- ** Abstract **
- 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.
- odhcpd provides server services for DHCP, RA, stateless and stateful DHCPv6,
- 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 **
- 1. Router Discovery support (solicitations and advertisements) with 2 modes
- server: RD server for slave interfaces
- a) automatic detection of prefixes, delegated prefix and default routes, MTU
- b) automatic reannouncement when changes to prefixes or routes occur
- relay: RD relay between master and slave interfaces
- a) support for rewriting announced DNS-server addresses in relay mode
-
- 2. DHCPv6-support with 2 modes of operation
- server: stateless, stateful and PD-server mode
- a) stateless and stateful address assignment
- b) prefix delegation support
- c) dynamic reconfiguration in case prefixes change
- d) hostname detection and hosts-file creation
- relay: mostly standards-compliant DHCPv6-relay
- a) support for rewriting announced DNS-server addresses
-
- 3. DHCPv4-support
- server: stateless and stateful mode
- 4. Proxy for Neighbor Discovery messages (solicitations and advertisements)
- a) support for auto-learning routes to the local routing table
- b) support for marking interfaces "external" not proxying NDP for them
- and only serving NDP for DAD and for traffic to the router itself
- [Warning: you should provide additional firewall rules for security]
- ** Compiling **
- odhcpd uses cmake:
- * To prepare a Makefile use: "cmake ."
- * To build / install use: "make" / "make install" afterwards.
- * To build DEB or RPM packages use: "make package" afterwards.
- ** Configuration **
- odhcpd uses a UCI configuration file in /etc/config/dhcp for configuration
- and may also receive information from ubus
- Section of type odhcpd
- Option Type Default Description
- legacy bool 0 Enable DHCPv4 if start but
- no dhcpv4 option set
- maindhcp bool 0 Use odhcpd as the main DHCPv4
- service
- leasefile string DHCP/v6 lease/hostfile
- leasetrigger string Lease trigger script
- hostsfile string DHCP/v6 hostfile
- loglevel integer 6 Syslog level priority (0-7)
- Sections of type dhcp (configure DHCP / DHCPv6 / RA / NDP service)
- Option Type Default Description
- interface string <name of UCI section> logical OpenWrt interface
- ifname string <resolved from logical> physical network interface
- networkid string same as ifname compat. alias for ifname
- master bool 0 is a master interface
- for relaying
- ra string disabled Router Advert service
- [disabled|server|relay|hybrid]
- dhcpv6 string disabled DHCPv6 service
- [disabled|server|relay|hybrid]
- dhcpv4 string disabled DHCPv4 service
- [disabled|server]
- ndp string disabled Neighbor Discovery Proxy
- [disabled|relay|hybrid]
- dynamicdhcp bool 1 Dynamically create leases
- for DHCPv4 and DHCPv6
- dhcpv4_forcereconf bool 0 Force reconfiguration by sending
- force renew message even if the client
- did not include the force renew nonce
- capability option (RFC6704)
- dhcpv6_assignall bool 1 Assign all viable DHCPv6 addresses
- in statefull mode; if disabled
- only the DHCPv6 address having the
- longest preferred lifetime is assigned
- dhcpv6_hostidlength integer 12 Host ID length of dynamically created leases,
- allowed values: 12 - 64 (bits).
- dhcpv6_na bool 1 DHCPv6 stateful addressing hands out IA_NA -
- Internet Address - Network Address
- dhcpv6_pd bool 1 DHCPv6 stateful addressing hands out IA_PD -
- Internet Address - Prefix Delegation
- dhcpv6_pd_min_len integer - Minimum prefix length to delegate with IA_PD
- (value is adjusted if needed to be greater
- than the interface prefix length). Range [1,62]
- router list <local address> Routers to announce
- accepts IPv4 only
- dns list <local address> DNS servers to announce
- accepts IPv4 and IPv6
- dns_service bool 1 Announce the address of interface as DNS service
- if the list of dns is empty
- domain list <local search domain> Search domains to announce
- leasetime string 12h DHCPv4 address leasetime
- start integer 100 DHCPv4 pool start
- limit integer 150 DHCPv4 pool size
- preferred_lifetime string 7d Value for the preferred lifetime
- for a prefix
- ra_default integer 0 Override default route
- 0: default, 1: ignore no public address, 2: ignore all
- ra_flags list other-config List of RA flags to be
- advertised in RA messages
- [managed-config other-config home-agent none]
- ra_slaac bool 1 Announce slaac for a prefix
- ra_offlink bool 0 Announce prefixes off-link
- ra_preference string medium Route(r) preference
- [medium|high|low]
- ra_maxinterval integer 600 Maximum time allowed between
- sending unsolicited RA
- ra_mininterval integer 200 Minimum time allowed between
- sending unsolicited RA
- ra_lifetime integer 1800 Value to be placed in Router
- Lifetime field of RA
- ra_useleasetime bool 0 Use configured leasetime as
- limit for the preferred and
- valid lifetime of a prefix
- ra_reachabletime integer 0 Reachable Time in milliseconds to be
- advertised in RA messages
- ra_retranstime integer 0 Retransmit Time in milliseconds to be
- advertised in RA messages
- ra_hoplimit integer 0 Current hoplimit to be advertised
- in RA messages
- ra_mtu integer - MTU to be advertised in
- RA messages
- ra_dns bool 1 Announce DNS configuration in
- RA messages (RFC8106)
- ra_pref64 string Announce PREF64 option
- [IPv6 prefix] for NAT64 prefix (RFC8781)
- ndproxy_routing bool 1 Learn routes from NDP
- ndproxy_slave bool 0 NDProxy external slave
- prefix_filter string ::/0 Only advertise on-link prefixes within
- [IPv6 prefix] the provided IPv6 prefix; others are
- filtered out.
- ntp list <local address> NTP servers to announce
- accepts IPv4 and IPv6
- Sections of type host (static leases)
- Option Type Default Description
- ip string IP-Address to lease
- mac string MAC-address
- duid string DUID in base16
- hostid string IPv6 host identifier
- name string Hostname
- leasetime string DHCPv4/v6 leasetime
|