From dd3053e6f45ac1f149869b7ded3f539d6c046114 Mon Sep 17 00:00:00 2001 From: Pavel Zhukov Date: Thu, 21 Feb 2019 10:25:53 +0100 Subject: [PATCH 06/21] Various man-page-only fixes Cc: pzhukov@redhat.com --- client/dhclient-script.8 | 22 +++++++++++++++++++++- client/dhclient.conf.5 | 14 +++++++++++++- common/dhcp-options.5 | 15 +++++++++++++++ server/dhcpd.conf.5 | 14 +++++++++----- 4 files changed, 58 insertions(+), 7 deletions(-) diff --git a/client/dhclient-script.8 b/client/dhclient-script.8 index 3553afd..0db5516 100644 --- a/client/dhclient-script.8 +++ b/client/dhclient-script.8 @@ -43,7 +43,7 @@ customizations are needed, they should be possible using the enter and exit hooks provided (see HOOKS for details). These hooks will allow the user to override the default behaviour of the client in creating a .B /etc/resolv.conf -file. +file, and to handle DHCP options not handled by default. .PP No standard client script exists for some operating systems, even though the actual client may work, so a pioneering user may well need to create @@ -87,6 +87,26 @@ present. The .B ETCDIR/dhclient-exit-hooks script can modify the valid of exit_status to change the exit status of dhclient-script. +.PP +Immediately after dhclient brings an interface UP with a new IP address, +subnet mask, and routes, in the REBOOT/BOUND states, it will check for the +existence of an executable +.B ETCDIR/dhclient-up-hooks +script, and source it if found. This script can handle DHCP options in +the environment that are not handled by default. A per-interface. +.B ETCDIR/dhclient-${IF}-up-hooks +script will override the generic script and be sourced when interface +$IF has been brought up. +.PP +Immediately before dhclient brings an interface DOWN, removing its IP +address, subnet mask, and routes, in the STOP/RELEASE states, it will +check for the existence of an executable +.B ETCDIR/dhclient-down-hooks +script, and source it if found. This script can handle DHCP options in +the environment that are not handled by default. A per-interface +.B ETCDIR/dhclient-${IF}-down-hooks +script will override the generic script and be sourced when interface +$IF is about to be brought down. .SH OPERATION When dhclient needs to invoke the client configuration script, it defines a set of variables in the environment, and then invokes diff --git a/client/dhclient.conf.5 b/client/dhclient.conf.5 index fa3b908..566a881 100644 --- a/client/dhclient.conf.5 +++ b/client/dhclient.conf.5 @@ -228,7 +228,8 @@ responding to the client send the client its values for the specified options. Only the option names should be specified in the request statement - not option parameters. By default, the DHCPv4 client requests the subnet-mask, broadcast-address, time-offset, routers, -domain-name, domain-name-servers and host-name options while the DHCPv6 +domain-search, domain-name, domain-name-servers, host-name, nis-domain, +nis-servers, ntp-servers and interface-mtu options while the DHCPv6 client requests the dhcp6 name-servers and domain-search options. Note that if you enter a \'request\' statement, you over-ride these defaults and these options will not be requested. @@ -735,6 +736,17 @@ broadcast packets transmitted by DHCP clients, but is only useful if you know the DHCP service(s) anycast MAC address prior to configuring your client. The \fIlink-type\fR and \fImac-address\fR parameters are configured in a similar manner to the \fBhardware\fR statement. +.PP + \fBbootp-broadcast-always;\fR +.PP +The +.B bootp-broadcast-always +statement instructs dhclient to always set the bootp broadcast flag in +request packets, so that servers will always broadcast replies. +This is equivalent to supplying the dhclient -B argument, and has +the same effect as specifying 'always-broadcast' in the server's dhcpd.conf. +This option is provided as an extension to enable dhclient to work +on IBM s390 Linux guests. .PP .SH SAMPLE The following configuration file was used on a laptop running NetBSD diff --git a/common/dhcp-options.5 b/common/dhcp-options.5 index 33d4804..d9e1197 100644 --- a/common/dhcp-options.5 +++ b/common/dhcp-options.5 @@ -1068,6 +1068,21 @@ classless IP routing - it does not include a subnet mask. Since classless IP routing is now the most widely deployed routing standard, this option is virtually useless, and is not implemented by any of the popular DHCP clients, for example the Microsoft DHCP client. +.PP +NOTE to Fedora dhclient users: +.br +dhclient-script interprets trailing 0 octets of the target as indicating +the subnet class of the route, so for the following static-routes value: +.br + option static-routes 172.0.0.0 172.16.2.254, +.br + 192.168.0.0 192.168.2.254; +.br +dhclient-script will create routes: +.br + 172/8 via 172.16.2.254 dev $interface +.br + 192.168/16 via 192.168.2.254 dev $interface .RE .PP .nf diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5 index 17330d4..89b5540 100644 --- a/server/dhcpd.conf.5 +++ b/server/dhcpd.conf.5 @@ -527,6 +527,9 @@ pool { }; .fi .PP +Dynamic BOOTP leases are not compatible with failover, and, as such, +you need to disallow BOOTP in pools that you are using failover for. +.PP The server currently does very little sanity checking, so if you configure it wrong, it will just fail in odd ways. I would recommend therefore that you either do failover or don't do failover, but don't @@ -541,9 +544,9 @@ primary server might look like this: failover peer "foo" { primary; address anthrax.rc.example.com; - port 519; + port 647; peer address trantor.rc.example.com; - peer port 520; + peer port 847; max-response-delay 60; max-unacked-updates 10; mclt 3600; @@ -1323,7 +1326,7 @@ the zone containing PTR records - for ISC BIND, something like this: .PP .nf key DHCP_UPDATER { - algorithm HMAC-MD5.SIG-ALG.REG.INT; + algorithm hmac-md5; secret pRP5FapFoJ95JEL06sv4PQ==; }; @@ -1346,7 +1349,7 @@ dhcpd.conf file: .PP .nf key DHCP_UPDATER { - algorithm HMAC-MD5.SIG-ALG.REG.INT; + algorithm hmac-md5; secret pRP5FapFoJ95JEL06sv4PQ==; }; @@ -2912,7 +2915,8 @@ statement The \fInext-server\fR statement is used to specify the host address of the server from which the initial boot file (specified in the \fIfilename\fR statement) is to be loaded. \fIServer-name\fR should -be a numeric IP address or a domain name. +be a numeric IP address or a domain name. If no \fInext-server\fR statement +applies to a given client, the address 0.0.0.0 is used. .RE .PP The -- 2.14.5