mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-06 08:30:15 +01:00
Major rework of link detection code. We now use DHCP as part of the link detection which proves to be much more robust, and also supports Open System authentication for wireless networks. We no longer use external DHCP client programs. Instead, we use our own DHCP client, based on substantially reworked bits of 'dhcpcd' which was written by: Yoichi Hariguchi <yoichi@fore.com> Sergei Viznyuk <sv@phystech.com> http://www.phystech.com/download/ It resides in the "dhcpcd" directory and was refactored into a general purpose DHCP client library by me. Also misc fixes (CPPFLAGS->AM_CPPFLAGS, move some stuff around), move src/backends/NetworkManagerSystem.h -> src/NetworkManagerSystem.h git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@314 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
276 lines
11 KiB
Text
276 lines
11 KiB
Text
0. Introduction
|
|
|
|
This is an RFC2131,RFC2132, and RFC1541 compliant DHCP client daemon.
|
|
RFC1541 was obsoleted by RFC2131, but there are still some RFC1541 compliant
|
|
DHCP servers. dhcpcd gets an IP address and other information from a
|
|
corresponding DHCP server, configures the network interface
|
|
automatically, and tries to renew the lease time according to RFC2131
|
|
or RFC1541 depending on the command line option.
|
|
|
|
dhcpcd-1.3 has been reported to compile
|
|
on Intel,PPC, and Alpha-based Linux platforms
|
|
providing glibc-2.0.5 or later has been
|
|
installed. Please refer to the Notes below for details.
|
|
|
|
dhcpcd-1.3 has been reported as compatible with DHCP servers
|
|
used by the following network service providers:
|
|
|
|
1. Time Warner RoadRunner http://www.rr.com/
|
|
2. MediaOne (now AT&T Broadband) http://www.attbroadband.com/
|
|
3. Comcast.Net, formerly @Home Networks http://www.comcast.net/
|
|
4. France Telecom ADSL http://www.wanadoo.fr/
|
|
5. USWest.net DSL (now Qwest) http://www.uswest.com/
|
|
6. France CyberCable http://www.cybercable.fr/
|
|
7. BellSouth ADSL http://www.bellsouth.net/
|
|
8. BCtel Multimedia Gateway ADSL http://www.bctel.net/
|
|
9. Cogeco Cable Canada http://www.cogeco.ca/
|
|
10.Sympatico High Speed Edition ADSL http://www.hse.sympatico.ca/
|
|
11.Adelphia PowerLink http://powerlink.adelphia.net/
|
|
12.Videotron, Canada http://www.videotron.ca/
|
|
13.Access Cable, Nova Scotia, Canada http://www.accesscable.net/
|
|
14.A2000 Cable, Netherlands http://www.a2000.nl/
|
|
15.Tele-Communications, Inc http://www.tci.com/
|
|
16.Telenet, Belgium http://www.telenet.be/
|
|
17.Telekabel Wien, Austria http://www.telekabel.at/
|
|
18.RMCnet, France http://www.rmcnet.fr/
|
|
19.Retecal, Spain http://www.retecal.es/
|
|
20.TVD, Belgium http://www.tvd.net/
|
|
21.Optimum Online, NY http://www.optimumonline.com/
|
|
22.Knology Comm. http://www.knology.com/
|
|
23.Highpernet, Switzeland. http://www.highpernet.ch/
|
|
24.TeledisNet, Belgium. http://www.teledisnet.be/
|
|
25.Southwestern Bell DSL. http://www.swbell.net/
|
|
26.Brutele, Belgium. http://www.brutele.be/
|
|
27.Telus, Canada. http://www.telusplanet.net/
|
|
28.Chello, Netherlands. http://www.chello.nl/
|
|
29.RCN. http://www.rcn.com/
|
|
30.Pandora, Belgium. http://www.pandora.be/
|
|
31.Armstrong's Cable Services, PA. http://www.zbzoom.net/
|
|
32.21st Century, Chicago. http://www.21stcentury.net/
|
|
33.Supercable, Spain. http://www.supercable.es/
|
|
34.Primacom, Germany. http://www.primacom.net/
|
|
35.Click! Network, Tacoma, WA. http://www.click-network.com/
|
|
36.Telocity, Cupertino, CA. http://www.telocity.com/
|
|
37.Charter Communications. http://www.chartercom.com/
|
|
38.Tebenet, Netherlands. http://www.tebenet.nl/
|
|
39.ZoomTown, Cincinnati, OH. http://www.zoomtown.com/
|
|
40.Telecom New Zealand Jetstream ADSL. http://www.telecom.co.nz/
|
|
41.Belgacom Turboline ADSL. http://www.turboline.be/
|
|
42.ISP Channel. http://www.ispchannel.com/
|
|
43.Telia.Com Sweden. http://www.telia.com/
|
|
44.Netcabo Portugal. http://www.netcabo.pt/
|
|
45.CyberCity xDSL, Denmark. http://www.cybercity.dk/
|
|
46.Tokyo Metallic Comm. http://www.metallic.co.jp/
|
|
47.Telenor, Norway. http://www.telenor.no/
|
|
48.Telstra, Austria. http://www.telstra.com/
|
|
49.Look Wireless, Montreal. http://www.look.ca/
|
|
50.Virtua, Brazil. http://www.virtua.com.br/
|
|
51.Verizon DSL. http://www.verizon.com/dsl/
|
|
52.Sonera, Netherlands. http://www.soneraplaza.nl/
|
|
53.NTL, UK. http://www.ntl.co.uk/cablemodems/
|
|
54.Telewest, UK. http://www.telewest.co.uk/
|
|
55.VTR, Chile. http://www.vtr.net/
|
|
56.Millennium Digital Media. http://www.mdm.net/
|
|
57.Madritel, Spain. http://www.madritel.es/
|
|
58.Cistron Telecom, Netherlands. http://www.cistron.nl/
|
|
59.Cox Express, Las Vegas. http://www.cox.com/
|
|
60.Cablecom GMBH, Switzerland. http://www.hispeed.ch/
|
|
61.Elektro Ablasser Hausmannstaetten, Austria. http://www.catv4u.at/
|
|
62.Kiva Networking, Indiana. http://www.kiva.net/
|
|
63.Blueyonder, UK. http://www.blueyonder.co.uk/
|
|
64.Salzburg-Online, Austria. http://www.salzburg-online.at/
|
|
65.Cablenet, Colombia. http://www.cable.net.co/
|
|
66.i-Cable, Hong Kong. http://www.i-cable.com/
|
|
67.Shaw High Speed. http://www.shaw.ca/
|
|
68.Rogers Communications. http://www.rogers.com/
|
|
69.Chello, France. http://www.chello.fr/
|
|
70.Acesserapido, Brazil. http://www.acesserapido.com.br/
|
|
71.Wirefire. http://www.wirefire.com/
|
|
72.Ajato, Brazil. http://www.ajato.com.br/
|
|
73.TDC/TeleDanmark, Denmark. http://www.teledanmark.dk/
|
|
74.Telstra Bigpond Broadband ADSL, Australia. http://www.bigpond.com.au/
|
|
75.Eastern Connecticut Cable. http://www.myeastern.com/
|
|
76.ADSL Brazil Telecom. http://www.internetturbo.com.br/
|
|
77.InsightBB.com. http://www.insightbb.com/
|
|
78.S?derhamn Teknikpark AB, Sweden. http://www.teknikpark.se/
|
|
79.Tele 2, Sweden. http://www.tele2.se/
|
|
|
|
if you have been successfully using dhcpcd-1.3
|
|
on your network please report the fact along
|
|
with network provider's name/URL/whatever and dhcpcd version
|
|
to the author <sv@phystech.com>.
|
|
|
|
dhcpcd-1.3 primary web site is
|
|
http://www.phystech.com/download/
|
|
ftp://ftp.phystech.com/pub/
|
|
|
|
1. Install
|
|
|
|
Make sure your kernel is compiled with support for SOCK_PACKET
|
|
(CONFIG_PACKET option). Cd to source distribution directory. Do
|
|
./configure --prefix=/
|
|
Please note the GNU default installation --prefix=/usr/local
|
|
is not what most users want for dhcpcd installation.
|
|
Edit Makefile to customize compile time options.
|
|
Do 'make' followed by 'make install'.
|
|
To enable dhcpcd error logging add the following line to your
|
|
/etc/syslog.conf file:
|
|
local0.* /var/log/dhcpcd.log
|
|
and then refresh syslogd daemon:
|
|
kill -1 `cat /var/run/syslogd.pid`
|
|
|
|
Note 1.
|
|
to compile dhcpcd-1.3.X you have to install glibc-2.0.5 or later.
|
|
dhcpcd-1.3.X might not compile under libc.5.
|
|
If you don't have glibc installed you can use the precompiled
|
|
binary included with the distribution.
|
|
If you are trying to compile dhcpcd yourself and getting error
|
|
"cannot find net/ethernet.h file", you don't have glibc
|
|
installed.
|
|
|
|
Note 2.
|
|
some releases of GNU C compiler, notably
|
|
gcc-2.8.1 are buggy. The same goes for egcs as of 05/10/99.
|
|
If you have compiled dhcpcd with gcc-2.8.1 or egcs you may
|
|
get the following errors in dhcpcd.log file:
|
|
May 4 12:43:03 dhcpcd[423]: corrupted UDP msg with uh_ulen=319 in_cksum=-2 discarded
|
|
and dhcpcd won't work. The workaround is to compile dhcpcd without
|
|
-O2 in Makefile.
|
|
|
|
Note 3.
|
|
if you are trying to run dhcpcd and are getting the following error in
|
|
the log file:
|
|
dhcpcd[xx]: dhcpStart: socket(): Invalid argument
|
|
it means you kernel is compiled without support for SOCK_PACKET
|
|
(CONFIG_PACKET option).
|
|
|
|
Note 4.
|
|
if your dhcpcd binary compiles fine and runs OK with "--help" flag
|
|
only and otherwise immediately coredumps with "Segmentation Fault"
|
|
error then delete /etc/dhcpc/dhcpcd-<interface>.cache file and
|
|
try running dhcpcd again. There is a chance your dhcpcd cache file
|
|
is from old version of dhcpcd.
|
|
|
|
Note 5.
|
|
If you replace your network card or upgrade to a different version of
|
|
dhcpcd you might not be able to obtain the same old IP address from
|
|
DHCP server. This is because the DHCP server identifies clients by
|
|
ClientID DHCP option which by default is MAC address of the network
|
|
card. The work around is to use -I ClientID option with some
|
|
unique "ClientID" string.
|
|
Also, upgrading to a different version of dhcpcd invalidates *.cache
|
|
file where dhcpcd stores IP address which it tries to renew on restart.
|
|
|
|
2. How to Use It
|
|
|
|
Invoke the client by typing 'dhcpcd'. Note you should NOT
|
|
explicitly put it in the background with the '&' character -
|
|
background processing is automatic unless 'dhcpcd' was
|
|
compiled with -DDEBUG flag. Dhcpcd will fork into background
|
|
as soon as it configures the interface. By default, dhcpcd will
|
|
attach to 'eth0' unless you explicitly give an interface name on the
|
|
command line.
|
|
The example below demonstrates dhcpcd usage in a case where
|
|
linux box serves as a router/firewall for the local network 192.168.12.0.
|
|
|
|
if dhcpcd eth1; then
|
|
inetd
|
|
/usr/sbin/sendmail -bd
|
|
httpd
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
modprobe ip_tables
|
|
modprobe iptable_nat
|
|
modprobe iptable_filter
|
|
modprobe ipt_MASQUERADE
|
|
modprobe ip_nat_ftp
|
|
modprobe ip_conntrack_ftp
|
|
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
else
|
|
echo "**** Unable to configure eth0"
|
|
fi
|
|
|
|
The bootup process will wait until 'dhcpcd' configures
|
|
interface or until dhcpcd times out before proceeding further.
|
|
|
|
Any time dhcpcd configures or shuts down interface it will try to
|
|
execute <ConfigDir>/dhcpcd.exe script with appropriate
|
|
parameters passed. The exact pathname of the executable script can be
|
|
changed with "-c ExecFilePath" dhcpcd option. The <ConfigDir>
|
|
directory can be specified with "-L <ConfigDir>" option, otherwise
|
|
it defaults to /etc/dhcpc/. The dhcpcd.exe script invokation is:
|
|
<ConfigDir>/dhcpcd.exe <HostInfoFilePath> <up|down|new> [-d]
|
|
where <HostInfoFilePath> is actually <ConfigDir>/dhcpcd-<interface>.info
|
|
file; optional parameter [-d] is a debug flag passed if dhcpcd has
|
|
been invoked with -d flag. The second parameter to dhcpcd.exe script is
|
|
"up" if the interface has been configured with the same IP
|
|
address as before reboot, "down" if the interface has been shut
|
|
down, "new" if the interface has been configured with new IP address.
|
|
|
|
3. Supported DHCP Options
|
|
|
|
The current version of dhcpcd supports the following DHCP options:
|
|
|
|
o lease time
|
|
o renewal (T1) time
|
|
o rebind (T2) time
|
|
o netmask
|
|
o broadcast address
|
|
o router
|
|
o dns
|
|
o host name
|
|
o domain name
|
|
o nis domain name
|
|
o nis servers
|
|
o ntp servers
|
|
o static routes
|
|
|
|
5. Cache File
|
|
|
|
dhcpcd saves the assigned IP address into the file
|
|
<ConfigDir>/dhcpcd-<interface>.cache (the word <interface> is actually
|
|
replaced with the interface name like eth0, etc. to which dhcpcd is
|
|
attached) so that it can try to use that IP address when it is invoked
|
|
next time. Remove the file <ConfigDir>/dhcpcd-<interface>.cache before
|
|
you invoke dhcpcd unless you like using the previously assigned IP
|
|
address.
|
|
|
|
6. Information File
|
|
|
|
dhcpcd writes the configuration information into
|
|
<ConfigDir>/dhcpcd-<interface>.info file. The word <interface> is actually
|
|
replaced with the interface name like eth0, etc. to which dhcpcd is
|
|
attached. That file may be included into a Bourne or Korn shell script
|
|
to set an environment variables like e.g. HOSTNAME, DOMAIN, NETMASK, etc.
|
|
The supplied sample <ConfigDir>/dhcpcd.exe script demonstrates usage
|
|
of <ConfigDir>/dhcpcd-<interface>.info file.
|
|
|
|
7. Other Information
|
|
|
|
dhcpcd sends DHCP_RELEASE message to the DHCP server, deletes the
|
|
<ConfigDir>/dhcpcd-<interface>.cache file and brings the attached
|
|
network interface down when it gets SIGHUP signal. It will
|
|
not send DHCP_RELEASE message and will not delete
|
|
<ConfigDir>/dhcpcd-<interface>.cache file in a case it gets
|
|
SIGTERM as normally happens upon reboot.
|
|
|
|
dhcpcd may be used to obtain multiple IP addresses for the same
|
|
dummy interface providing one invokes dhcpcd with
|
|
-I ClientID -L ConfigDir -T -c ExecFilePath
|
|
options where ClientID and ConfigDir are unique to each of the requested
|
|
IP addresses. The same way it can be used to obtain IP addresses
|
|
for virtual interfaces, e.g. eth0:1
|
|
|
|
dhcpcd currently supports only Ethernet link protocol.
|
|
|
|
8. In case dhcpcd does not work:
|
|
Run 'dhcpcd -d' and mail me the relevant messages
|
|
from /var/log/dhcpcd.log file. Also run
|
|
tcpdump -evvn -i eth0
|
|
and mail me the results of that.
|
|
If the things are too bad for you,
|
|
uncomment -DDEBUG flag in Makefile
|
|
and recompile 'dhcpcd'. Run 'dhcpcd -d'
|
|
and mail me what you see.
|
|
|
|
Sergei Viznyuk <sv@phystech.com>
|
|
|