summaryrefslogtreecommitdiffhomepage
path: root/README
blob: f81d260f33ce11ecd9a320d0c04d78907aa4f8ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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 advertisments)
   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
leasefile		string								DHCP/v6 lease/hostfile
leasetrigger	string								Lease trigger script


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
ignore			bool		0						ignore this interface
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
dns				list		<local address>			DNS servers to announce
													accepts IPv4 and IPv6
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

ula_compat		bool		0						Announce ULA in compat mode
ra_default		integer		0						Override default route
				0: default, 1: ignore no public address, 2: ignore all
ra_management	integer		1						RA management mode
				0: no M-Flag but A-Flag, 1: both M and A, 2: M but not A
ra_offlink		bool		0						Announce prefixes off-link
ra_preference	string		medium					Route(r) preference
				[medium|high|low]
ndproxy_routing	bool		0						Learn routes from NDP
ndproxy_slave	bool		0						NDProxy external slave
ndproxy_static	list								Static NDProxy prefixes


Sections of type lease (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
hostname		string								Hostname