source: networking/connect/dhcpcd.xml@ cc61006

12.0 12.1 kea ken/TL2024 ken/tuningfonts lazarus lxqt plabs/newcss python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since cc61006 was f0ef84e, checked in by Bruce Dubbs <bdubbs@…>, 15 months ago

Fix dhcpcd URL

  • Property mode set to 100644
File size: 15.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY dhcpcd-download-http "https://github.com/NetworkConfiguration/dhcpcd/releases/download/v&dhcpcd-version;/dhcpcd-&dhcpcd-version;.tar.xz">
8 <!ENTITY dhcpcd-download-ftp " ">
9 <!ENTITY dhcpcd-md5sum "002d3c7bfa057248f23b2b2f33f02f5a">
10 <!ENTITY dhcpcd-size "260 KB">
11 <!ENTITY dhcpcd-buildsize "3.6 MB (with tests)">
12 <!ENTITY dhcpcd-time "less than 0.1 SBU (with tests)">
13]>
14
15<sect1 id="dhcpcd" xreflabel="dhcpcd-&dhcpcd-version;">
16 <?dbhtml filename="dhcpcd.html"?>
17
18
19 <title>dhcpcd-&dhcpcd-version;</title>
20
21 <indexterm zone="dhcpcd">
22 <primary sortas="a-dhcpcd">dhcpcd</primary>
23 </indexterm>
24
25 <sect2 role="package">
26 <title>Introduction to dhcpcd</title>
27
28 <para>
29 <application>dhcpcd</application> is an implementation of the
30 DHCP client specified in RFC2131. A DHCP client is useful for connecting
31 your computer to a network which uses DHCP to assign network
32 addresses. dhcpcd strives to be a fully featured, yet very lightweight
33 DHCP client.
34 </para>
35
36 &lfs113_checked;
37
38 <bridgehead renderas="sect3">Package Information</bridgehead>
39 <itemizedlist spacing="compact">
40 <listitem>
41 <para>
42 Download (HTTP): <ulink url="&dhcpcd-download-http;"/>
43 </para>
44 </listitem>
45 <listitem>
46 <para>
47 Download (FTP): <ulink url="&dhcpcd-download-ftp;"/>
48 </para>
49 </listitem>
50 <listitem>
51 <para>
52 Download MD5 sum: &dhcpcd-md5sum;
53 </para>
54 </listitem>
55 <listitem>
56 <para>
57 Download size: &dhcpcd-size;
58 </para>
59 </listitem>
60 <listitem>
61 <para>
62 Estimated disk space required: &dhcpcd-buildsize;
63 </para>
64 </listitem>
65 <listitem>
66 <para>
67 Estimated build time: &dhcpcd-time;
68 </para>
69 </listitem>
70 </itemizedlist>
71
72 <bridgehead renderas="sect3">dhcpcd Dependencies</bridgehead>
73
74 <bridgehead renderas="sect4">Optional</bridgehead>
75 <para role="optional">
76 <xref linkend="llvm"/> (with Clang),
77 <xref linkend="ntp"/>,
78 <ulink url="https://chrony.tuxfamily.org/">chronyd</ulink>, and
79 <ulink url="https://github.com/thkukuk/ypbind-mt/">ypbind</ulink>
80 </para>
81
82 <para condition="html" role="usernotes">User Notes:
83 <ulink url="&blfs-wiki;/dhcpcd"/></para>
84
85 </sect2>
86
87 <sect2 id='dhcpcd-privsep'>
88 <title>Privilege separation</title>
89
90 <para>
91 Recent releases of <application>dhcpcd</application> optionally support
92 privilege separation. As the practical security benefits of this are
93 unclear for a program like <application>dhcpcd</application> and the
94 setup is more complicated, the book currently defaults to disable it.
95 </para>
96 <para>
97 If you however would like to use privilege separation, additional
98 installation steps are necessary to set up the proper environment. Issue
99 the following commands as the
100 <systemitem class="username">root</systemitem> user:
101 </para>
102
103<screen role="root"><userinput>install -v -m700 -d /var/lib/dhcpcd &amp;&amp;
104
105groupadd -g 52 dhcpcd &amp;&amp;
106useradd -c 'dhcpcd PrivSep' \
107 -d /var/lib/dhcpcd \
108 -g dhcpcd \
109 -s /bin/false \
110 -u 52 dhcpcd &amp;&amp;
111chown -v dhcpcd:dhcpcd /var/lib/dhcpcd </userinput></screen>
112
113 </sect2>
114
115 <sect2 role="installation">
116 <title>Installation of dhcpcd</title>
117<!-- Now in the code
118 <para>Fix a runtime error caused by a change in glibc-2.36:</para>
119
120<screen><userinput>sed '/Deny everything else/i SECCOMP_ALLOW(__NR_getrandom),' \
121 -i src/privsep-linux.c</userinput></screen>
122-->
123 <para>
124 Build <application>dhcpcd</application> without privilege separation
125 by running the following command:
126 </para>
127
128<screen><userinput>./configure --prefix=/usr \
129 --sysconfdir=/etc \
130 --libexecdir=/usr/lib/dhcpcd \
131 --dbdir=/var/lib/dhcpcd \
132 --runstatedir=/run \
133 --disable-privsep &amp;&amp;
134make</userinput></screen>
135
136 <para>
137 Build <application>dhcpcd</application> with privilege separation
138 by running the following commands:
139 </para>
140
141<screen role="nodump"><userinput>./configure --prefix=/usr \
142 --sysconfdir=/etc \
143 --libexecdir=/usr/lib/dhcpcd \
144 --dbdir=/var/lib/dhcpcd \
145 --runstatedir=/run \
146 --privsepuser=dhcpcd &amp;&amp;
147make</userinput></screen>
148
149 <para>
150 To test the results, issue: <command>make test</command>.
151 </para>
152
153 <para>
154 Now, as the <systemitem class="username">root</systemitem> user:
155 </para>
156
157<screen role='root'><userinput>make install</userinput></screen>
158
159<!--
160 <para>
161 By default, a plain text lease info file isn't created but the
162 <application>dhcpcd</application> provides a hook which can be used for
163 creating such a file. Install the hook by running the following commands
164 as the <systemitem class="username">root</systemitem> user:
165 </para>
166
167<screen role='root'><userinput>sed -i "s;/var/lib;/run;g" dhcpcd-hooks/50-dhcpcd-compat &amp;&amp;
168install -v -m 644 dhcpcd-hooks/50-dhcpcd-compat /lib/dhcpcd/dhcpcd-hooks/</userinput></screen>
169-->
170
171 </sect2>
172
173 <sect2 role="commands">
174 <title>Command Explanations</title>
175
176 <para>
177 <parameter>--libexecdir=/usr/lib/dhcpcd</parameter>: Set a more proper
178 location for dhcpcd internal libraries.
179 </para>
180
181 <para>
182 <parameter>--dbdir=/var/lib/dhcpcd</parameter>: The default
183 <filename class="directory">/var/db</filename> is not FHS-compliant
184 </para>
185
186 <para>
187 <parameter>--runstatedir=/run</parameter>: The default
188 <filename class="directory">/var/run</filename> is a symbolic
189 link to <filename class="directory">/run</filename>.
190 </para>
191
192 <para>
193 <option>--with-hook=...</option>: You can optionally install more hooks,
194 for example to install some configuration files such as
195 <filename>ntp.conf</filename>. The set of hooks is in the
196 <filename class="directory">dhcpcd-hooks</filename> directory in the
197 build tree.
198 </para>
199
200 <para>
201 <parameter>--disable-privsep</parameter>: Do not use privilege separation,
202 which is the default.
203 </para>
204
205 <para>
206 <parameter>--privsepuser=dhcpcd</parameter>: Use this unprivileged user
207 in a privilege separation setup.
208 </para>
209
210 <para>
211 <option>--with-hook=...</option>: You can optionally install more hooks,
212 for example to install some configuration files such as
213 <filename>ntp.conf</filename>. The set of hooks is in the
214 <filename class="directory">dhcpcd-hooks</filename> directory in the
215 build tree.
216 </para>
217 </sect2>
218
219 <sect2 role="configuration">
220 <title>Configuring dhcpcd</title>
221
222 <sect3 id="dhcpcd-config">
223 <title>Config Files</title>
224
225 <para>
226 <filename>/etc/dhcpcd.conf</filename>
227 </para>
228
229 <indexterm zone="dhcpcd dhcpcd-config">
230 <primary sortas="e-etc-dhcpcd-dhcpcd-conf">/etc/dhcpcd/dhcpcd.conf</primary>
231 </indexterm>
232
233 </sect3>
234
235 <sect3 id="dhcpcd-init" revision="sysv">
236 <title>General Configuration Information</title>
237
238 <para>
239 To configure <command>dhcpcd</command>, you need to first install
240 the network service script,
241 <filename>/usr/lib/services/dhcpcd</filename>
242 included in the <xref linkend="bootscripts"/> package
243 (as user <systemitem class="username">root</systemitem>):
244 </para>
245
246 <indexterm zone="dhcpcd dhcpcd-init">
247 <primary sortas="f-dhcpcd">dhcpcd (service script)</primary>
248 </indexterm>
249
250<screen role='root'><userinput>make install-service-dhcpcd</userinput></screen>
251
252 <note>
253 <para id="dhcpcd-config3">
254 The default for <command>dhcpcd</command> is to set the hostname
255 and mtu. It also overwrites <filename>/etc/resolv.conf </filename>
256 and <filename>/etc/ntp.conf</filename>. These
257 modifications to system files are done by hooks which are stored in
258 <filename class="directory">/usr/lib/dhcpcd/dhcpcd-hooks</filename>.
259 Set up <command>dhcpcd</command> by removing or adding hooks from/to
260 that directory. The execution of hooks can be disabled by using
261 the <option>--nohook</option> (<option>-C</option>) command line
262 option or by the <option>nohook</option> option in the
263 <filename>/etc/dhcpcd.conf</filename> file.
264 </para>
265 </note>
266
267 <para id="dhcpcd-config2">
268 Finally, as the <systemitem class="username">root</systemitem> user
269 create the <filename>/etc/sysconfig/ifconfig.eth0</filename>
270 configuration file using the following commands. Adjust appropriately
271 for additional interfaces:
272 </para>
273
274 <indexterm zone="dhcpcd dhcpcd-config2">
275 <primary sortas="e-etc-sysconfig-dhcpcd">/etc/sysconfig/ifconfig.eth0 (dhcpcd)</primary>
276 </indexterm>
277
278<screen role='root'><userinput>cat &gt; /etc/sysconfig/ifconfig.eth0 &lt;&lt; "EOF"
279<literal>ONBOOT="yes"
280IFACE="eth0"
281SERVICE="dhcpcd"
282DHCP_START="-b -q -h ''<replaceable>&lt;insert appropriate start options here&gt;</replaceable>"
283DHCP_STOP="-k <replaceable>&lt;insert additional stop options here&gt;</replaceable>"</literal>
284EOF</userinput></screen>
285
286 <para>
287 For more information on the appropriate <envar>DHCP_START</envar> and
288 <envar>DHCP_STOP</envar> values, examine the man page for
289 <command>dhcpcd</command>.
290 </para>
291
292 <indexterm zone="dhcpcd dhcpcd-config3">
293 <primary sortas="e-etc-resolv.conf">/etc/resolv.conf</primary>
294 </indexterm>
295 </sect3>
296
297 <sect3 id="dhcpcd-init2" revision="sysv">
298 <title>Configuration Information: fixed ip</title>
299
300 <para id="dhcpcd-config4">
301 Although not usual, it is possible that you need
302 to configure <application>dhcpcd</application> to use a fixed ip. Here,
303 we give an example. As the
304 <systemitem class="username">root</systemitem> user create the
305 <filename>/etc/sysconfig/ifconfig.eth0</filename> configuration file
306 using the following commands. Adjust appropriately for additional
307 interfaces and for the actual ip and router you need:
308 </para>
309
310 <indexterm zone="dhcpcd dhcpcd-config4">
311 <primary sortas="e-etc-sysconfig-dhcpcd">/etc/sysconfig/ifconfig.eth0 (dhcpcd)</primary>
312 </indexterm>
313
314<screen role='nodump'><userinput>cat &gt; /etc/sysconfig/ifconfig.eth0 &lt;&lt; "EOF"
315<literal>ONBOOT="yes"
316IFACE="eth0"
317SERVICE="dhcpcd"
318DHCP_START="-b -q -S ip_address=192.168.0.10/24 -S routers=192.168.0.1"
319DHCP_STOP="-k"</literal>
320EOF</userinput></screen>
321
322 <para>
323 You can either use DNS servers in
324 <filename>/etc/resolv.conf</filename> from another system, your
325 preferred servers, or just the example
326 <filename>/etc/resolv.conf.head</filename> file below as is:
327 </para>
328
329<screen role='nodump'><userinput>cat &gt; /etc/resolv.conf.head &lt;&lt; "EOF"
330<literal># OpenDNS servers
331nameserver 208.67.222.222
332nameserver 208.67.220.220</literal>
333EOF</userinput></screen>
334
335 </sect3>
336
337 <sect3 id="dhcpcd-init3" revision="systemd">
338 <title>General Configuration Information</title>
339
340 <para>
341 If you want to configure network interfaces at boot using
342 <command>dhcpcd</command>, you need to install the
343 systemd unit included in <xref linkend="systemd-units"/>
344 package by running the following command as the
345 <systemitem class="username">root</systemitem> user:
346 </para>
347
348<screen role="root"><userinput>make install-dhcpcd</userinput></screen>
349
350 <indexterm zone="dhcpcd dhcpcd-init3">
351 <primary sortas="f-dhcpcd">dhcpcd</primary>
352 </indexterm>
353
354 <note>
355 <para id="dhcpcd-config5">
356 The default behavior of <command>dhcpcd</command> is to set the
357 hostname and the mtu. It also overwrites <filename>/etc/resolv.conf
358 </filename> and <filename>/etc/ntp.conf</filename>. These
359 modifications to system configuration files are done by hooks which
360 are stored in <filename class="directory">
361 /lib/dhcpcd/dhcpcd-hooks</filename>. Set up <command>dhcpcd</command>
362 by removing or adding hooks from/to that directory. The execution
363 of hooks can be disabled by using the <option>--nohook</option>
364 (<option>-C</option>) command line option or by the
365 <option>nohook</option> option in the <filename>/etc/dhcpcd.conf
366 </filename> file.
367 </para>
368 </note>
369
370 <indexterm zone="dhcpcd dhcpcd-config5">
371 <primary sortas="e-etc-resolv.conf">/etc/resolv.conf</primary>
372 </indexterm>
373
374 <note>
375 <para>
376 Make sure that you disable the <command>systemd-networkd</command>
377 service or configure it not to manage the interfaces you want to
378 manage with <application>dhcpcd</application>.
379 </para>
380 </note>
381
382 <para>
383 At this point you can test if <command>dhcpcd</command> is
384 behaving as expected by running the following command as the
385 <systemitem class="username">root</systemitem> user:
386 </para>
387
388<screen role="root"><userinput>systemctl start dhcpcd@<replaceable>eth0</replaceable></userinput></screen>
389
390 <para>
391 To start <command>dhcpcd</command> on a specific interface
392 at boot, enable the previously installed systemd unit by
393 running the following command as the
394 <systemitem class="username">root</systemitem> user:
395 </para>
396
397<screen role="root"><userinput>systemctl enable dhcpcd@<replaceable>eth0</replaceable></userinput></screen>
398
399 <para>
400 Replace <replaceable>eth0</replaceable> with the actual interface name.
401 </para>
402
403 </sect3>
404
405 </sect2>
406
407 <sect2 role="content">
408 <title>Contents</title>
409
410 <segmentedlist>
411 <segtitle>Installed Program</segtitle>
412 <segtitle>Installed Library</segtitle>
413 <segtitle>Installed Directory</segtitle>
414
415 <seglistitem>
416 <seg>dhcpcd</seg>
417 <seg>/usr/lib/dhcpcd/dev/udev.so</seg>
418 <seg>/{usr,var}/lib/dhcpcd and /usr/share/dhcpcd</seg>
419 </seglistitem>
420 </segmentedlist>
421
422 <variablelist>
423 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
424 <?dbfo list-presentation="list"?>
425 <?dbhtml list-presentation="table"?>
426
427 <varlistentry id="dhcpcd-prog">
428 <term><command>dhcpcd</command></term>
429 <listitem>
430 <para>
431 is an implementation of the DHCP client specified in RFC2131
432 </para>
433 <indexterm zone="dhcpcd dhcpcd-prog">
434 <primary sortas="b-dhcpcd">dhcpcd</primary>
435 </indexterm>
436 </listitem>
437 </varlistentry>
438
439 <varlistentry id="dhcpcd-udev">
440 <term><filename class="libraryfile">udev.so</filename></term>
441 <listitem>
442 <para>
443 adds udev support for interface arrival and departure; this is
444 because udev likes to rename the interface, which it can't do if
445 dhcpcd grabs it first
446 </para>
447 <indexterm zone="dhcpcd dhcpcd-udev">
448 <primary sortas="c-dhcpcd-udev">udev.so</primary>
449 </indexterm>
450 </listitem>
451 </varlistentry>
452
453 </variablelist>
454
455 </sect2>
456
457</sect1>
Note: See TracBrowser for help on using the repository browser.