\documentclass[letterpaper]{article}
\nonstopmode
\akai
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\usepackage{t1enc}
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\title{DHCP mini-HOWTO (DHCPd/DHCPcd)}
\author{�@�̡GVladimir Vuksan, {\ttfamily vuksan@veus.hr}
Ķ�̡G ���j���A {\ttfamily dawei@sinica.edu.tw}}
\date{����/�o�����Gv4.2, 11 June 1999}
\abstract{�o�����D�n�b�ѵ��U��A�p���A�� Linux �����]�w�� DHCP ���A���� DHCP �Τ�ݡA�@�ǰ򥻪����D�C}


\begin{document}
\maketitle
\tableofcontents





\section{����}

       




\subsection{�K�d�n��}

�o����󪺤��e������������v�n�D�C�ޥγo����󪺷����N�Ҥl�N�H�Ψ�L�����e
�ɡA�U��n�ۤv�Ӿ᭷�I�C�ѩ�o�O�@���s�X�������A�ҥH�i��|���ǿ��~�H�Τ�
���T���a��A�]���A���M�i���A���t�γy���M�`�C���M�A�a�����ӥi��o�͡A����
�O�Фp�߬��W�A�X�F�Ƨڤ@�����t����d���C

�P�ɡA�]�ЧA�ʰO�b�ߡA�o�����Ҵ��Ѫ����e�� {\ttfamily ���O} ��������T�C�o��
��󪺤��e�A���\�h���O���]�X�Ӫ��A�ݰ_�Ӧn����B�@�A�������i�H�C�ޥήɡA�U��
�n�ۤv�Ӿ᭷�I�C






\subsection{�p����o�o����󪺳̷s����}

�o����󪺳̷s�����|�w���a�i�K�b {\itshape comp.os.linux.answers\/} ���s�D�׾¤W�C
���]�|�Q��m�b�U���x�s�o����T���ΦW FTP ���x�W�A�Ҧp�G

{\ttfamily \onlynameurl{ftp://metalab.unc.edu/pub/Linux/docs/HOWTO}}

���~�A�A�q�`�i�H�b Linux ���p���������W���o�����A�аѦҺ��}�G

{\ttfamily \onlynameurl{http://metalab.unc.edu/LDP/}}





�o����󪺤��媩½Ķ�A�аѦҺ��}�G





\onlynameurl{http://www.linux.org.tw/CLDP/mini/DHCP.html}





�ڦb�������¤�½Ķ�v���Z�O�n�N�����½Ķ���ۤv����y��������H�C����O�A�����N
��½Ķ�������쵲��}���ѵ��ڡC






\subsection{�^�X}

�Z�O��o�����ҧ@������^�X���D�`�w��C�S���z���I�X�M�ѻP�A�o�����N���|
�e�{�b���H�����e�C�ҥH�A�бN�z����ĳ�N����N�M���бH�� 
{\ttfamily vuksan@veus.hr}�C






\subsection{���m��}

�o�����̪�O�ק�� Paul Makeev �Ҽ��g�������ӨӪ��C

��L��o����󦳹L���m���B�͡A�C�|�p�U�G
\begin{itemize}
\item Heiko Schlittermann
\item Jonathan Smith
\item Dan Khabaza
\item Hal Sadofsky
\item Henrik Stoerner
\item Paul Rossington
\end{itemize}







\subsection{���v�n��}

�o������ 1998 �}�l�����v�ݩ� Vladimir Vuksan �Ҧ��A�ýЫ��ӥH�U�W�w�Ӭy�q�G

 
\begin{itemize}
\item  Linux HOWTO ��󪺥����γ����A�i�H�ϥΥ��󪫲z�ιq�l���C��Φ��ӽƻs
�P�y�q�A�u�n�o�Ӫ��v�n���Q�O�d�b�C���������C�ӷ~�欰���A�y�q�O�Q���\�ӥB���w
�諸�F���O�A���󪺬y�q�欰�A�@�̳��Ʊ��Q�i���C
\item �Ҧ�½Ķ�N�l�ͪ��u�@�N�ΦX�֥��� Linux HOWTO ��󪺻E���u�@�A��������
��o�Ӫ��v�n�����O�@�C�]�N�O���A�A���i�H�q HOWTO �l�ͥX�@�����A�M���o��
�l�ͤ�󪺬y�q�j�[�W��L�������C���D�b�@�ǯS�w�����p�U�A�~�|���ճo�ǭ���
����F���p�� Linux HOWTO ����դH�A�L���a�}�p�U�G
\item  �p�G�A������ðݡA���p�� Linux HOWTO ����դH
\end{itemize}

{\ttfamily \onlynameurl{linux-howto@metalab.unc.edu}}








\section{DHCP �q�T��w}



DHCP �N�O���ʺA�D���]�w��w��(Dynamic Host Configuration Protocol)��²�g�CDHCP ��
�D�n�γ~�O�G�z�L���A������U�ӱ��ަU�ӥD���]���椤���Τ�ݡ^�W���i�ʤ֪�����
�s�u�ѼơCDHCP ��w�V��ۮe BOOTP �o�ӳq�T��w�C��i�@�B����T�аѦ� RFC 2131 
���зǡ] RFC 1531 �O�¼зǡ^�H�Ψ䥦������ơC�]�аѦҸӤ�󥽧��A�ѦҸ�ƨӷ�
�������^�C�A�]�i�H�Ѿ\�G
\onlynameurl{DHCP FAQ}
(http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html)�C



�o�����N�|���U�컡�� DHCP ���A���ݪ����ʱ��{����(daemon)�M�Τ�ݪ��ʱ��{���C�h
�ƤH�b�u�@���W�|�ݭn�Ψ��ݪ��ʱ��{���A�H�K�q���ݪ����A���W���o�����]�w��T�C��
�t�κ޲z���h�|�ϥΦ��A���ݪ��ʱ��{���A�H�K���G�����]�w��T���Τ�ݨӨ��ΡA�ҥH�Ai
�p�G�A�u�O�Ӥ@�몺�ϥΪ̡A����A�N�|�ݭn�Τ�ݪ��ʱ��{���C




\section{�]�w�Τ��}


\subsection{�U���Τ�ݪ��ʱ��{��}



{\bfseries �֤� 2.0.x }





���קA�ϥΪ��O���@�� Linux ���o�檩���A�A�����ݤU���Τ�ݪ��ʱ��{���C�A�һݭn
�U�����{���M��٬� dhcpcd �A�ثe�������s���O 0.70�C�A�i�b
\onlynameurl{���B} �\Ū��o�ӮM�󪺤��e�����C
(ftp://metalab.unc.edu/pub/Linux/system/network/daemons/dhcpcd-0.70.lsm)





{\bfseries �֤� 2.2.x }





�ѩ�b�֤� 2.1.x �M 2.2.x �� ipv4 �������{���M�󴿳Q�ק�L�]�Ҧp�A���|�b�\�h
���]�w�w�]�ȡ^dhcpcd �L�k���`�B�@�C���D�A�ϥΪ��O RedHat 6.x�]���ثe���ѤF 
dhcpcd 1.3.x �M 2.2.x ���֤ߡ^�_�h�A�N�����U���t�@�Ӫ����� dhcpcd�]�Y 1.3.x�^
�ӨϥΡA�o�O Sergei Viznyuk {\ttfamily sergei@phystech.com} ���F�קK�W�z���D��
�ק諸�����C�A�i�H�b�H�U�X�Ӧa����o�G





\begin{itemize}
\item \onlynameurl{ftp://phystech.dyn.ml.org/pub/}
\item \onlynameurl{http://www.cps.msu.edu/\~{}dunham/out/dhcpcd-1.3.6.tar.gz}
\end{itemize}






���U�өҰ����������O�H�����򥻪���h�C




\subsection{�w�˦b Slackware ���W}



�A�i�H�q���� Metalab ������g��(mirror�^���x�ΥH�U�X�Ӧa��A�U���̷s�� DHCPcd 
�{���M��G

\begin{itemize}
\item \onlynameurl{}
\item \onlynameurl{}
\item \onlynameurl{}
�]�D���x�b�饻�^
\end{itemize}






�U���̷s������ dhcpcd.tar.gz �̷s����

\begin{itemize}
\item �N dhcpcd.tar.gz �Ѷ}



{\ttfamily tar -zxvf dhcpcd-0.70.tar.gz}



\item �����ܮM��Ѷ}�᪺�l�ؿ��̡A�ýsĶ dhcpcd �{�� 

{\ttfamily cd dhcpcd-0.70}

{\ttfamily make}



\item �w�ˮM�� (�A�����H root ����������H�U���R�O)

{\ttfamily make install}



\end{itemize}


�o�өR�O�|�إ� /etc/dhcpc �o�Ӥl�ؿ��ADHCPcd �M��|�� DHCP ����T�x�s�b�ӳB�A
�åB�N dhcpcd �{���ɽƻs�� /usr/sbin �o�Ӥl�ؿ��̡C

������b�}���ɡA�t�γ]�w��ȴ����A�ϥ� DHCP ���\��A�а��p�U���]�w�G

{\ttfamily cd /etc/rc.d}

{\ttfamily mv rc.inet1 rc.inet1.OLD}



�W�����ʧ@�|�N�¦���������ȳ]�w���R�O�Z��(script�^����� rc.inet1.OLD�C���U�ӡA
�A�����إ߷s�� rc.inet1 �R�O�Z�C�U�����{���X�]�t�F���ݪ��]�w���e�G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
#!/bin/sh
#
# rc.inet1      �o�� shell ���R�O�Z�|�b�}���ɳB�z INET �t�Ϊ��򥻳]�w�C      

HOSTNAME=`cat /etc/HOSTNAME` # �o�өR�O�γ\���O���ݪ��A���O���٬O
                             # �N���O�d�F�U�ӡC

# �����W loopback�]¶�^�^�˸m�C
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

# �Y�A���A�Ӻ������s�u�A�h�ϥΤU�����R�O�ӳ]�w eth0 �ɭ��C
# �Y�A�u�� loopback �� SLIP ���s�u�A�h���n�b�o���ɮ׸̨ϥΤU�����R�O�C 

/usr/sbin/dhcpcd
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


�s�ɮפ���бN�q�����s�}���C





���A�����H�W���ʧ@��A�и��� \ref{nameserver} {(�̫᪺�B�J)}




\subsection{�w�˦b RedHat 5.x �M RedHat 6.x ���W}



DHCPcd ���]�w�b RedHat 5.0 �P�H�W���������ܮe���C�A�ҭn�@���Ʊ��A�N�O�Ұ�
������x��(Control Panel)�A�п�J





{\ttfamily control-panel}





\begin{itemize}
\item  ��� Network Configuration ���Ϲ�
\item  �H�ƹ����� Interfaces ���
\item  �H�ƹ����� Add ���s
\item  ��� Ethernet ����
\item  �b Edit Ethernet/Bus Interface ��ܮؤ��Ŀ� {\bfseries "Activate interface at boot time"}
���إH�ο�� {\bfseries DHCP} ���� {\bfseries Interface configuration protocol} ���ت�
��J�C
\end{itemize}






���A�����H�W���ʧ@��A�и��� \ref{nameserver} {(�̫᪺�B�J)}






\subsection{�b RedHat 4.x �P Caldera OpenLinux 1.1 �W���]�w}



DHCPcd �b�зǪ� RedHat �������O�H RPM ���]�ˤ覡�ӵo�檺�A�A�i�H�b��ҵo�檺 
CD-ROM �W�� RPMS �ؿ�����쥦�A�Ψ�U�������}�U���G





\onlynameurl{}





�M��w�˥��A�p�U�ҥܡG

{\ttfamily rpm -i dhcpcd-0.6-2.i386.rpm}





�Ϊ̡A�A�i�H���� Slackware ���`�Ҵy�z����k�A�sĶ�@���ݩ�A�ۤv�������C





{\ttfamily �P�� nothing nothing@cc.gatech.edu ���ѥH�U����T����}

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
�ڧ��R�A�� ip ��}�κ���W�١A�q�ɮ� /etc/resolv.conf �������C���O�A�گd�U�F
search �M nameserver ���]�w��]�]���Y�ǭ�]�ڪ� dhcpcd ���A�����|�����ɮ� 
/etc/dhcpc/resol.conf�A�ҥH�ڥ����ϥ��R�A�� /etc/resolv.conf�^�C

�b�ɮ� /etc/sysconfig/network �̡A�ڲ����F HOSTNAME �P GATEWAY ���]�w��C���O�A
�ګO�d�F�䥦���]�w��]NETWORKING�NDOMAINNAME�NGATEWAYDEV�^�C

�b�ɮ� /etc/sysconfig/network-scripts/ifcfg-eth0 �̡A�ڲ����F IPADDR�NNETMASK�N
NETWORK�N�M BROADCAST ���]�w��C���O�A�ګO�d�F DEVICE �M ONBOOT ���]�w��A�ñN
BOOTPROTO ���]�w��A�ק令 BOOTPROTO=dhcp�C

�̫��x�s�ɮסA�ñN�q�����s�}���C
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


���A�����H�W���ʧ@��A�и��� \ref{nameserver} {(�̫᪺�B�J)}




\subsection{�w�˦b Debian ���W}



�A�i�H�b�U�������}���H deb �覡�]�˪� DHCPcd �{���M��G





{\ttfamily \onlynameurl{}}

�Ϊ̡A�A�i�H���� Slackware ���`�Ҵy�z����k�Ӧw�ˡC

�n�w�˳o�� deb �]�˪��{���M��A�п�J�G

{\ttfamily dpkg -i /where/ever/your/debian/packages/are/dhcpd*deb}





�A�X�G���������� DHCPcd �]�w�A�]���G
{\ttfamily From: Heiko Schlittermann (heiko@os.inf.tu-dresden.de)}





�o�� dhcpcd ���{���M��p�P�䥦�� debian �M��@�ˡA�|�N�ҰʩR�O�Z�w�˦b
/etc/init.d/$<$package\_name$>$ ���W�A���B�� /etc/init.d/dhcpcd�A�ñN
���쵲��U�� /etc/rc?.d/ �ؿ����C





�b /etc/rc?.d/ �ؿ����Ҧs�񪺦U���ɮסA�O�}���ɩҰ��檺�R�O�Z�C







�p�G�A�b�w�˫ᤣ�Q���s�}���A�A���ӦҼ{�ϥΤH�u�Ұʡ��ʱ��{����(daemon) ���覡�G



{\ttfamily /etc/init.d/dhcpcd start}

���A�����H�W���ʧ@��A�и��� \ref{nameserver} {(�̫᪺�B�J)}




\subsection{�b LinuxPPC �P MkLinux �W���]�w}



�U���o�`�O R. Shapiro ���g���C





�� Yoichi Hariguchi �ҵo�i������ 0.65 �M 0.7 �� dhcpcd �{�����ӥi�H�b�ϥή֤�
2.1.24 �� LinuxPPC �P MkLinux �W���`����A���O�A�A�����`�N�H�U�X�ӭn�I�G





* �p�G�A�Q�n�λݭn�A�z�L��l�{���X�ӫإߥi���檺�ɮסA�Ъ`�N�Appc linux �W��
�sĶ���|�N 'char' ���w�� 'unsigned char'�A���O�AHariguchi ����l�{���X�T�N
'char' ���w�� 'signed char'�C�ҥH�A�n�z�L��l�{���X�Ӳ��Ͱ����ɡA�A�����s��
Makefile�A�� CFLAGS ���]�t "-fsigned-char" �o�ӿﶵ�C





* �ثe linuxppc {[}�N�O�ҿת� linux-pmac] ���O�W��í�w�������O 2.1.24�A�ݭn����
�i��U�������}���o dhcpcd ���ץ��X�G
\onlynameurl{2.1 �����ץ��X}
(http://www.cro.net/~vuksan/dhcppatch)�C
mklinux ���O�W�ҵo�檺 DR2.1 �M DR3.0 �o��Ӫ����A�ĥΪ��O 2.0 ���֤� (2.0.33)
�A�ҥH�A�����ϥγo�ӭץ��X�A���O�A�Y�Ϧw�ˤF�o�ӭץ��X�]�S������ˮ`�C�Ъ`�N
�Alinuxppc �w�˥��Ф��W dhcpcd �{���� rpm �]�˸̡A�ä��]�t�o�� 2.1 �ץ��X�A�]��
�A���b linuxppc ���O�W�L�k���`�B�@�A�ϭˬO�A�i�H�b mklinux ���O�W���`����C







* ���ڭ̨ϥ� linuxppc ���O�� 2.1.24 �֤߮ɡA�b dhcpcd �{���Ұʤ���A�A�|�ݨ�
�@��²�u�����Ѿ�ĵ�i�T���C�A�i�H�������C





* Hariguchi �� dhcpcd �{���|��@�Ǯɶ��A�j���O 30 ���A�ӧ������즸�s�����A���M
�]�w���Ѫ��ʧ@�C���ڭ̨ϥΪ��O linuxppc ���O�� 2.1.24 �֤߮ɡA�W�z��ĵ�i�T���A
�u�O�b�����A���Ѥw�g�]�w�����F�C





������s���� linuxppc �֤ߦӨ��A�� Hariguchi �ҵo�i�� dhcpcd �{�����L�k�ϥ�
�G���ɧA {\bfseries ����} ��� Sergei Viznyuk �ҵo�i�������]�ثe���o�檩���� 1.3.9
�^�C�·Ъ��O Viznyuk �� dhcpcd �{���O�H glibc 2 ���禡�w�ӵo�i���A�M�� linuxppc 
2.1.1xx �o���ϥγo�Ө禡�w�C���G�A�sĶ�{���ݭn�Ψ�@�ǧޥ� - �������Ӹ`�лP��
�p���C�@���{���sĶ�n����A���N����b���s�����֤ߤW���`�B�@�F�]�b linuxppc ��
2.1.24 ������ MkLinux �����������W�٬O����^�C





�{�b�ڭ̨ӰQ�� Viznyuk �ҵo�i�� dhcpcd �{���A�ڤ�W���@�� Viznyuk ���� dhcpcd
�]v1.3.7�^�����ɡA�i�H�b�̪�o�檺 linuxppc �֤ߡG2.1.102�N103�N115�N�M 119�A�W
����A�åB�w�g�������աC�A���ӥi�H�z�L��l�{���X�Ӳ��Ͱ����ɡA���O�A�ڤ����D���
���Ӹ`�CViznyuk ���� dhcpcd �L�k�b 2.1.24 ���֤ߤW�B�@�A�M�ӭ׸ɹL�� Hariguchi 
���� dhcpcd �{���o�i�H���`�ϥΡC�n�sĶ Hariguchi ���� dhcpcd �{���N�e���h�F�C





�K�n��z�p�U�G





\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
MkLinux�G  Hariguchi�G �i�ΡF Viznyuk�G ���i��
2.1.24�G   Hariguchi�G �p�G�ץ��L�A�i�H���`�ϥΡ]���Ͱ����ɫܮe���^�F Viznyuk�G ���i��
2.1.102+�G Hariguchi�G ���i�ΡF Viznyuk�G �i�Ρ]���Ͱ����ɻݭn�ޥ��^ 
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�Ъ`�N�AViznyuk ���� dhcpcd �|���ƪ����g�� /etc/resolv.conf �̡]�g�J���e�|��
�ƥ��¦����ɮס^�A�]���A�����A�ۤv�q /etc/dhcpc �ƻs���쵲��������T�C�P�ɤ]��
�`�N���q�`�|������ɩ�� /sbin �ؿ����Ӥ��O��� /usr/sbin �̡A�ҥH�����R�O�C��
���P Hariguchi ���������|���@�I���P�C�Y�A�ϥ� ifup �ӱҰ� dhcpcd �A�h ifup �o��
�R�O�Z�]�������@�Ǥp���ץ��C





�Y�A�Q�n���o�� linuxppc �ϥΪ��w���sĶ�n�� dhcpcd �{���A�бH�H��





\onlynameurl{reshapiro@mediaone.net}�C

�ڤ]���ѤF�G���X�� RPMs �]���ɡG





\onlynameurl{}

�Ф��n�ϥθӥؿ����U�� dhcpcd-1.3.8-2.ppc.rpm �ɮסA���w�g������@�F�C�i�a����
���O dhcpcd-0.70-0.ppc.rpm�]�� linuxppc 2.1.24 �ϥΪ��^�H�� dhcpcd-1.3.8-3.ppc.rpm 
�]�� linuxppc 2.1.102 �M�H�W�������ϥΪ��^�C���� 1.3.9 �� rpm �]���ɪ��������
�|���ѥX�ӡC�P�ɧ��٨̷Ӫ��� 0.65 �M 0.70�]�� Hariguchi �ҵo�i�^���覡�睊�� 1.3.9 
�]�� Viznyuk �ҵo�i�^ ���F�@�ǭק�]�N�O ���[�W -c ���R�O�C�ﶵ�^�C�]�Ъ`�N�A��
�Ǫ� Viznyuk dhcpcd �ä��]�t�o�˪����e�C�^






\subsection{���O�������]Token Ring�^����}



�Y�A���զb���O�����������W���� dhcpcd �{���A�N�L�k���`�B�@�C�H�U�O
Henrik Stoerner {\ttfamily (henrik\_stoerner@olicom.dk)} ���ѵ��ڪ��ѨM��סC





���D�X�b dhcpcd �u�{�ѡ��A�Ӻ������] Ethernet�^�d�C�Y���o�{�졧�O�����������d
�A�h���|�ڵ������󪺨Ʊ��A�åB���i�����ɭ����O�A�Ӻ������C





�ѨM��״N�O�ϥΤ@��²�檺�ץ��X���ܧ� dhcpcd ����l�{���X�C�ڤw�g�N���ץ��X
��b�@�Ӥp���������W�A�ô��� RedHat �� RPM �]���ɩM�@�ӹw���sĶ�n���G���ɡG
\onlynameurl{}





�o�ӭץ��X�w�g�e��F dhcpcd �����@�̤�W�F�A�]���A�����Ʊ�Q���ӵo�檺 dhcpcd 
�����ұĥΡC




\subsection{�̫�A�Ч����H�U���ʧ@\label{nameserver}}



�b�A���������s�}������A�A���ӳ]�w�������ɭ��C�п�J�G

{\ttfamily ifconfig}

�A���ӷ|�ݨ�p�U�����e

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0

eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
          inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254.0
          ^^^^^^^^^^^^^^^^^^^^^^^
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
          TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
          Interrupt:10 Base address:0x300 
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�p�G�A�A�b inet addr ����ݨ�@�ǥ��`���Ʀr�A�o���ܧA�w�g�]�w�n�F�C�p�G�A�A�ݨ�
���O 0.0.0.0 �]���n����A���u�O dhcpcd �b���o IP ��}�e�Ȯɪ��]�w�ȡC�p�G�A�L�F
�X��������A�A���M�ݨ� 0.0.0.0 �A�аѦ� \ref{troubleshooting} {(�����ư�)}
�CDHCPcd �O�@�ӡ��ʱ��{����(daemon)�A�ҥH�u�n�A�������٬��ۡA���N�|����O������
�����A�C���C�T�p�ɷ|�P DHCP ���A���A�p���@���A������� IP ��}�������C���|�N��
�����T���O���b syslog �ɮפ��]�b Slackware �W�A�� /var/adm/syslog�F�b RedHat/OpenLinux
�W�A�� /var/log/syslog�^�C





�̫�n���@��ơC�A�������w�W�٦��A���C����Ӥ覡�i�H�����o�ӨB�J�A�A�i�H�n�D����
�A�Ȩ����ӡA�i���W�٦��A���� IP ��}�A�M��A�N����}��J /etc/resolv.conf �ɤ�
�A�Ϊ̡A�A�]�i�H�� DHCPcd �q DHCP ���A�����o��ơA�M��b /etc/dhcpc �ؿ��U����
�ɮ� resolv.conf�C�ڨM�w�ϥ� DHCPcd �Ӳ����ɮ� resolv.conf �����e�A��k�p�U�G





�ƥ��ª� /etc/resolv.conf �ɮ�

{\ttfamily mv /etc/resolv.conf /etc/resolv.conf.OLD}

�p�G�ؿ� /etc/dhcpc ���s�b�A�A�i�H�ۦ沣�ͦ��ؿ�

{\ttfamily mkdir /etc/dhcpc}

�M�ԱN /etc/resolv.conf �H���Ÿ��쵲���� /etc/dhcpc/resolv.conf

{\ttfamily ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf}



 �p�G�o�Ӥ覡�L�k���`�B�@�A�й��ըϥΤU������k
�]�U���o�ӭץ���k�O nothing@cc.gatech.edu �ҫ�ĳ���A�䤺�e�ק�� Henrik Stoerner
�Ҵ��Ѫ��ץ���k�^

 

\label{error3}

���٥�������U���o�ӨB�J�A�u�]���ڪ� dhcpcd ���|�����ɮ� /etc/dhcpc/resolv.conf
�C�ڦb /etc/sysconfig/network-scripts/ifup �ɮפ��A���F�H�U���ק�]���M�諸���O
�ܦn�A���O���w�g�i�H���ڸѨM�o�Ӱ��D�F�^�G







\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Using DHCP for ${DEVICE}... "
    /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        ^^^^
        echo "failed."
        exit 1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


�ڧ⥦�ק令�G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Using DHCP for ${DEVICE}... "
    /sbin/dhcpcd
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        ^^^^^^
       echo "failed."
       exit 1
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






{\bfseries �`�N} ! (bang) �o�ӲŸ�
{\ttfamily if [ ! -f /var/run/dhcp-wait-\$$\{$DEVICE$\}$.pid ];}









�`��j�\�i���A�i�H���U�Өɨ����G�F :-)�C


\subsection{�䥦�`�N�ƶ�}



�H�U���B�J���O���沈�n�A���O��Y�ǤH�Ө��A�i��N���o�W�γ��C

{\bfseries a) }�p�G�A�A�u�O�����~�|�������s�u���ݨD�A�A�i�H�ϥΩR�O�C���覡�ӱҰ�
dhcpcd�]�n�����o�ӨB�J�A�A�����֦� root �������^�G



{\ttfamily /usr/sbin/dhcpcd}

���A�Q�n���������A�п�J

{\ttfamily /usr/sbin/dhcpcd -k}






\subsection{�����ư�\label{troubleshooting}}



�p�G�A�A���ӤF�W�z���B�J�A�o���M�L�k�s�������A�ܥi��O�]���G





{\bfseries I. �A�������d�]�w�����T�C }



�b�}�����L�{���A�A�����N�|�����A�������d�A�åB���ӷ|��ܤU���X�檺�T�����e�G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}


�p�G�A�A�� Linux �t�Τ��|�X�{�W���o�ӰT���A�o���ܡA�A�������d�i��L�k�Q���ѡC��
�ϡA�A�ϥΪ��O�@�몺�A�Ӻ����d�]NE2000 �ۮe�^�A�A���ӷ|����@�� DOS �u��Ϥ��A�A
�i�H�Υ��ӳ]�w�����d�C���ճ]�w�U�� IRQs �ȡA�@���� Linux �i�H���Ѩ�A�������d�]
IRQ ���ȳ]�w�q�`�� 9,10,12�^�C





{\bfseries II. �ҨϥΪ� DHCP ���A���䴩 RFC 1541 �з�/�ڪ� DHCP ���A���O  Windows NT}



���հ��� dhcpcd �A�п�J

{\ttfamily dhcpcd -r}

�ϥ� ifconfig ���ˬd�ݬݡA�O�_�A�������ɭ��w�g�]�w�n�F�]�̪�A�Ҭݨ쪺�O 
Inet.addr=0.0.0.0�A�A�o���ݴX�����]�w�ɶ��^�C



�p�G�o�Ӥ�k�i�H�ѨM�A�����D�A�h�A���Ӧb�������}���R�O�Z���[�W "-r" �ﶵ�AĴ�p
�N {\ttfamily /sbin/dhcpcd} �ק令 {\ttfamily /sbin/dhcpcd -r �C}





�H RedHat ���ҡA�A�����s�� /etc/sysconfig/network-scripts/ifup �o�өR�O�Z�A��
�N���ק令�G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
        IFNAME=$[ {DEVICE} \
        "/sbin/dhcpcd -r -c /etc/"- etc etc.    
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






{\bfseries III. �b�}�������|���Ϳ��~�T�� "Using DHCP for eth0 ... failed"�A���O�A�t��
�o�ॿ�`�B�@�C}





�A�ܥi��ϥΪ��O RedHat ���t�ΡA�ӥB�A�A�å��J�Ӧa���ӻ����ާ@ :-)�C�A�b if �ԭz
����|�F ! (bang) �o�ӲŸ��C���� \ref{error3} {(���B)} �A�˵��p��ӭץ�
���C





{\bfseries IV. �ڪ������d�B�@�F�X��������A�K�S�������F�C}





�i��O gated�]���h�D�ʱ��{����(gateway daemon)�^ �Ҧ^������T�A�˶äF Linux 
�D�������ѡA�~�|�y���o�˪����D�C�ˬd�O�_ gated ���b���椤�G





{\ttfamily ps -auxww $|$ grep gate}





�p�G�u���O�o�ˡA�A�i�H�ϥ� RedHat �� RPM �޲z�{���N�������A�άO��ʱN���q 
/etc/rc.d/ �������C





{\bfseries V.�b�}���ɥi�H���Ѩ�ڪ��A�Ӻ����d�A���O�A�b�ڪ��T���O�����A���M�|�X�{ "NO
DHCPOFFER" ���T���C�P�ɡA�o�Ӫ��p�]�|�o�ͦb�ڪ� PCMCIA �A�Ӻ����d�W�C}





�A�����T�w�A�����d�ϥΪ��O 10BaseT �s����]�N���q�ܽu�����y)�C�A�̦n�ˬd�@�U�A
�}���ɺ����d���]�w�A�쩳�O�ϥΨ��ӳs����C�Ҧp�G

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
                            ^^^^^^^^^^^^
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�ڴ�ť�L�ϥν��W���q�����H���A�L�̨ϥ� PCMCIA �u��]�S�O�O ifport�^�N�s����]
�w�� 10Base2 (���ӦP�b�u������(thinnet)�^�A�]�|���o�˪����D�C�p�G�A���Q���s�]�w
�����d�M���}���C�A�����T�w�A�ϥΪ��O 10BaseT ���s�u�C





{\bfseries VI. �S�����A���^���� DHCP �Τ�ݪ��s���n�D�]�� Peter Amstutz ���ѡ^}





�b�Y�Ǩt�ΤW�A�A���s���n�D�������]�t�A�������D���W�١C�H dhcpcd ���ҡA�A�i�H����
'dhcpcd -h foohost'�C�γ\�A�A�i�H�ϥΧA�b�����W���b��W�١A�Ӱ����ӥD���W�١C





{\bfseries VII. �ڤw�g���өҦ����B�J�����F�]�w�A���O�A�ڪ��������M�L�k�s�u�C}





���l�u�ƾھ����]cable modem�^�q�`�|�O���A�����d���A�Ӻ�����}�A�ҥH�A�Y�A�n�s��
�s���q���Χ󴫺����d�A�A�����H�Y�ؤ�k�ӡ��оɡ��A�� cable modem �{�o�s���q��/����
�d�C�q�`�A�i�H������ cable modem �A�q���}����A�ϥ� cable modem�A�άO�H�q�ܽШD
�޳N���䴩�A�i�����A���q���w�g�󴫤F�����d�C 





�A��������W�h�]ipfwadm ���W�h�^�����\��s�� 67/68�] DHCP �ϥΨӴ��G�]�w��T�^
���y�q�C�ХJ���ˬd�A��������W�h�C





{\bfseries VIII. �ڨϥΪ��O MediaOne Express �Ҵ��Ѫ��A�ȡA���O�ڤ��M�L�k�s�u�C} 





��]�i��O MediaOne �b DHCP �����[�F�����ӥX�{���T���C�@��۫H�A�p���o�w���A
�O�Ӱ��D�A���O�A�o�L�k�ϥΥ��A�A�i�H�³o�譱���ˬd�C�p�G�A�]���^���ϥΪ��O 
Windows NT�A���ɡA�p�G�A�ϥΡ��ƥ��˵������]Event Viewer�^�A�A�N�|�ݨ�p�U��
ĵ�ܰT���C





DHCP ������@�ӥ��������׬� 005 �� 067 �ﶵ�C��l���ﶵ��Ʀp�U�ҥܡC

{\ttfamily 0000: 62 61 73 69 63            basic}



�p�G�A�J��o�˪����D�A�Ш� \onlynameurl{} �U���ץ�
���G���X�Ψ��o��l�X�C


















\section{�]�w DHCP ���A��}


\subsection{UNIX �W�� DHCP ���A��}

�b�U�� UNIX �ۮe���@�~�t�ΤW�A���\�h�ӷ~�ΧK�O�� DHCP ���A���{���i�ΡC�䤤�A
���ۦW���K�O���A���{���O Paul Vixie/ISC ���� DHCPd�C�ثe�̷s�������O 2.0�]
��ĳ�j�a�ϥΡ^�A�� 3.0 �����b�� beta ���q�����աC�A�i�H��U�������}���o�G

\onlynameurl{}





�b RedHat�]���� 5.2�^�o�� Linux �M�󤤥]�t�F�� DHCP ���A���G���X�� RPM �]�ˡC
�� RPM �]�˪��ɦW�� dhcp-2.0b1pl6-2.platform.rpm�C�w�ˮɥu�n��J





{\ttfamily rpm -i dhcp-2.0b1pl6-2.i386.rpm}





�Y�A�ϥΤW�����B�J�A�h�A�i�H���L�U�����w�˻����C





�b�A�U������A�A�����N���Ѷ}�C�M��i�J�Ѷ}���ؿ��A��J�G

{\ttfamily ./configure}

�n���n�w�˫e���]�w�u�@�A�i��n���I�ɶ��C���H���J�G

{\ttfamily make}

�H��

{\ttfamily make install}








\subsection{�]�w�����պA�C}



�������w�ˤ���A�п�J ifconfig -a�A�A�N�ݨ�p�U���T���G





\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
eth0      Link encap:10Mbps Ethernet  HWaddr 00:C0:4F:D3:C4:62
          inet addr:183.217.19.43  Bcast:183.217.19.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2875542 errors:0 dropped:0 overruns:0
          TX packets:218647 errors:0 dropped:0 overruns:0
          Interrupt:11 Base address:0x210
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�p�G����� MULTICAST ���T���A�A���ӭ��s�]�w�A���֤ߡA�[�J��h�}�Ǽ���
�]multicast�^���䴩�C���j�h�ƪ��t�ΦӨ��A�A�X�G�������p�����C





�U�ӨB�J�O�A�[�J 255.255.255.255 �����ѡC�H�U�������ޭz�� DHCPd �{����
��Ū���ɮס��]README�^�G





�����F�� dhcpd ������T�a�A�ȹL���D�窺 DHCP �Τ�ݡ]�Ҧp�AWindows 95�^�Adhcpd 
��������e�ʥ]�� 255.255.255.255 �� IP ��}�W�C�������O�ALinux �|�N 255.255.255.255
�������a�l�������s����}�]���B�� 192.5.5.223�^�C�o�N�H�� DHCP �q�T��w�A�M�ӳ\�h
DHCP �Τ�ݨä����v�T�A���ǡ]�Ҧp�A�Ҧ� Microsoft DHCP �Τ�ݡ^�o�|�C���������D
���Τ�ݡA�N�|�ݤ���Ӧۦ��A���� DHCPOFFER �T���C��





��J�G

{\ttfamily route add -host 255.255.255.255 dev eth0}

�p�G�A�ݨ�p�U���T��

{\ttfamily "255.255.255.255: Unknown host"}

�A���ӱN�U������T�[�J�� /etc/hosts �ɮפ��G
/etc/hosts file:

{\ttfamily 255.255.255.255 all-ones}

�M��A��J�G

{\ttfamily route add -host all-ones dev eth0}

��

{\ttfamily route add 255.255.255.0 dev eth0}

eth0 ���ӬO�A�ثe�ϥκ����d���˸m�W�١C�p�G���O�A�A�o�t�X��ڱ��p�����T���ק�C








\subsection{DHCPd ���ﶵ�]�w}



�{�b�A�A�����]�w DHCPd�C�����A�A�������ͩνs�� /etc/dhcpd.conf�C





�q�`�A�ҭn�����O�A�H���a���� IP ��}�C�����A�A�������ӤU�����覡�ӳ]�w�G





\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.org";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
   range 192.168.1.150 192.168.1.200;
}
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�]�w�����G���ADHCP ���A���|���ѥΤ�ݡA�ϥνd�� 192.168.1.10-192.168.1.100 ��
192.168.1.150-192.168.1.200 �� IP ��}�C�p�G�A�Τ�ݨS���S�O���w IP ��}������
�ɶ��A�h���X�ɶ��w�w�� 600 ���A�n���M�A�̤j�]���\�^�����X�ɶ��� 7200 ���C�P��
���A���]�|���q�����Τ�ݡA�n�D���ϥ� 255.255.255.0 �����l�����B�n�A192.168.1.255
�����s����}�A192.168.1.254 ��������/�h�D���A�åH 192.168.1.2 ���� DNS ���A���C





�A�]�i�H�̾ڥΤ�ݪ��A�Ӻ�����}�A�ӫ����S�w�� IP ��}���Τ�ݡA�Ҧp

\par
\addvspace{\medskipamount}
\nopagebreak\hrule
\begin{verbatim}
host haagen {
   hardware ethernet 08:00:2b:4c:59:23;
   fixed-address 192.168.1.222;
}
\end{verbatim} 
\nopagebreak\hrule 
\addvspace{\medskipamount}






�o�ӳ]�w�N�|���� IP ��} 192.168.1.222 ���A�Ӻ�����}��  08:00:2b:4c:59:23 ��
�Τ�ݡC





�����W IP ��}�����w�A�i�H�ĲV�X���y��AĴ�p�A�A�i�H���Y�ǹq���֦����R�A����
IP ��}�]�Ҧp�A���A���^�A�����䥦���Τ�ݨ��o���ʺA����IP ��}�]�Ҧp�A�ϥν�
�W���q���A���ʪ��ϥΪ̡^�C�٦��䥦���ﶵ�AĴ�p�A�� wins ���A������}�N�ɶ����A
�������A�p�G�A�ݭn�i�@�B�A�Ѫ��ܡA�i�H�аѾ\ dhcpd.conf ���������C








\subsection{�Ұʦ��A��}



�b�Ұʦ��A�����e�A�u�n���@��Ʊ��N��F�C�q�` DHCP ���w�˹L�{���ä��|�����ɮ�
dhcp.leases�C���A�� DHCPd �|�ϥγo���ɮר��x�s�ثe�����θ�T�C���ɮױĥΤ@��
��r���榡���x�s��ơA�ҥH�b DHCPd �ާ@�����A�i�H�����˵��������e�C�{�b�ڭ�
�Ӳ����ɮ� dhcp.leases�A�Цb�R�O�C�W��J�G

{\ttfamily touch /etc/dhcp.leases}

�o�Ӱʧ@�N�|���ͤ@�Ӫťժ��ɮס]�ɮת��j�p = 0�^�C�A���ݭn����ɮװ����󪺭ק�
�ҥH�����ӬO�ťժ��C�Y�A�ݨ�@�ӿ��~���T�������ɮ׬O�ťժ��A�A�i�H���z�|���åB
���~��H�U���B�J�C



�{�b�A�A�i�H�ҥ� DHCP ���A���F�C�u�n��J�]�αN�U�����ԭz�[��}���]�w�ɤ��^

{\ttfamily /usr/sbin/dhcpd}

�p�G�A�A�Q�n�T�w�B�@�O�_�@�����`�A�A���ӥ��}�Ұ����Ҧ��A�ç���A����졧���e��
�]foreground�^�Ӱ���C�����A�A�i�H��J

{\ttfamily /usr/sbin/dhcpd -d -f}

�M��A�}�ҧA����@�ӥΤ�ݾ����A�ù�ݦ��A���ݡ��ާ@����x���]console�^���ù��A
�A�N�|�ݨ�@�ǰ����T���Q��ܥX�ӡC





\end{document}
