29.5 ÍøÂç×Ô¶¯ÅäÖà (DHCP)

Written by Greg Sutter.

29.5.1 ʲôÊÇ DHCP£¿

¡¡¡¡DHCP£¬ ¶¯Ì¬Ö÷»úÅäÖÃЭÒ飬 ÊÇÒ»ÖÖÈÃϵͳµÃÒÔÁ¬½Óµ½ÍøÂçÉÏ£¬ ²¢»ñÈ¡ËùÐèÒªµÄÅäÖòÎÊýÊֶΡ£ FreeBSD ʹÓÃÀ´×Ô OpenBSD 3.7 µÄ OpenBSD dhclient¡£ ÕâÀïÌṩµÄËùÓйØÓÚ dhclient µÄÐÅÏ¢£¬ ¶¼ÊÇÒÔ ISC »ò OpenBSD DHCP ¿Í»§¶Ë³ÌÐòΪ׼µÄ¡£ DHCP ·þÎñÆ÷ÊÇ ISC Èí¼þ°üµÄÒ»²¿·Ö¡£

29.5.2 ÕâÒ»½Ú¶¼½éÉÜÄÄЩÄÚÈÝ

¡¡¡¡ÕâÒ»½ÚÃèÊöÁË ISC ºÍ DHCP ϵͳÖеĿͻ§¶Ë£¬ ÒÔ¼°ºÍ ISC DHCP ϵͳÖеķþÎñÆ÷¶ËµÄ×é¼þ¡£ ¿Í»§¶Ë³ÌÐò£¬ dhclient£¬ ÊÇËæ FreeBSD ×÷ΪËüµÄÒ»²¿·ÖÌṩµÄ£» ¶ø·þÎñÆ÷²¿·Ö£¬ Ôò¿ÉÒÔͨ¹ý net/isc-dhcp31-server port µÃµ½¡£ dhclient(8)¡¢ dhcp-options(5)¡¢ ÒÔ¼° dhclient.conf(5) Áª»úÊֲᣬ ¼ÓÉÏÏÂÃæËù½éÉܵIJο¼ÎÄÏ×£¬ ¶¼ÊǷdz£ÓÐÓõÄ×ÊÔ´¡£

29.5.3 ËüÈçºÎ¹¤×÷

¡¡¡¡µ± DHCP ¿Í»§³ÌÐò£¬ dhclient ÔÚ¿Í»§»úÉÏÔËÐÐʱ£¬ Ëü»á¿ªÊ¼¹ã²¥ÇëÇóÅäÖÃÐÅÏ¢µÄÏûÏ¢¡£ ĬÈÏÇé¿öÏ£¬ ÕâЩÇëÇóÊÇÔÚ UDP ¶Ë¿Ú 68 ÉÏ¡£ ·þÎñÆ÷ͨ¹ý UDP 67 ¸ø³öÏìÓ¦£¬ Ïò¿Í»§»úÌṩһ¸ö IP µØÖ·£¬ ÒÔ¼°ÆäËûÓйصÄÅäÖòÎÊý£¬ ÀýÈç×ÓÍøÑÚÂë¡¢ ·ÓÉÆ÷£¬ ÒÔ¼° DNS ·þÎñÆ÷¡£ ËùÓÐÕâЩÐÅÏ¢¶¼»áÒÔ DHCP ¡°lease¡± µÄÐÎʽ¸ø³ö£¬ ²¢ÇÒÖ»ÔÚÒ»¶ÎÌØ¶¨µÄʱ¼äÄÚÓÐЧ (ÕâÊÇÓÉ DHCP ·þÎñÆ÷µÄά»¤ÕßÅäÖõÄ)¡£ ÕâÑù£¬ ÄÇЩÒѾ­¶Ï¿ªÍøÂçµÄ¿Í»§»úʹÓÃµÄ³Â¾ÉµÄ IP µØÖ·¾ÍÄܱ»×Ô¶¯µØ»ØÊÕÁË¡£

¡¡¡¡DHCP ¿Í»§³ÌÐò¿ÉÒÔ´Ó·þÎñÆ÷¶Ë»ñÈ¡´óÁ¿µÄÐÅÏ¢¡£ ¹ØÓÚÄÜ»ñµÃµÄÐÅÏ¢µÄÏêϸÁÐ±í£¬ Çë²Î¿¼ dhcp-options(5)¡£

29.5.4 FreeBSD ¼¯³É

¡¡¡¡FreeBSD ÍêÈ«µØ¼¯³ÉÁË OpenBSD µÄ DHCP ¿Í»§¶Ë£¬ dhclient¡£ DHCP ¿Í»§¶ËÖ§³ÖÔÚ°²×°³ÌÐòºÍ»ù±¾ÏµÍ³ÖоùÓÐÌṩ£¬ ÕâʹµÃÄú²»ÔÙÐèҪȥÁ˽âÄÇЩÒѾ­ÔËÐÐÁË DHCP ·þÎñÆ÷µÄÍøÂçµÄ¾ßÌåÅäÖòÎÊý¡£

¡¡¡¡sysinstall Äܹ»Ö§³Ö DHCP¡£ ÔÚ sysinstall ÖÐÅäÖÃÍøÂç½Ó¿Úʱ£¬ ËüѯÎʵĵڶþ¸öÎÊÌâ±ãÊÇ£º ¡°Do you want to try DHCP configuration of the interface? (ÄúÊÇ·ñÏ£ÍûÔڴ˽ӿÚÉϳ¢ÊÔ DHCP ÅäÖÃ?)¡±¡£ Èç¹û×ö¿Ï¶¨µÄ»Ø´ð£¬ Ôò½«ÔËÐÐ dhclient£¬ Ò»µ©³É¹¦£¬ Ôò½«×Ô¶¯µØÌîÐ´ÍøÂçÅäÖÃÐÅÏ¢¡£

¡¡¡¡ÒªÔÚϵͳÆô¶¯Ê±Ê¹Óà DHCP£¬ Äú±ØÐë×öÁ½¼þÊ£º

¡¡¡¡DHCP ·þÎñÆ÷£¬ dhcpd£¬ ÊÇ×÷Ϊ net/isc-dhcp31-server port µÄÒ»²¿·ÖÌṩµÄ¡£ Õâ¸ö port °üÀ¨ÁË ISC DHCP ·þÎñÆ÷¼°ÆäÎĵµ¡£

29.5.5 Îļþ

29.5.6 ½ø½×¶ÁÎï

¡¡¡¡DHCP ЭÒéµÄÍêÕûÃèÊöÊÇ RFC 2131¡£ ¹ØÓÚËüµÄÆäËûÐÅÏ¢×ÊÔ´µÄÕ¾µã http://www.dhcp.org/ Ò²ÌṩÁËÏ꾡µÄ×ÊÁÏ¡£

29.5.7 °²×°ºÍÅäÖà DHCP ·þÎñÆ÷

29.5.7.1 ÕâÒ»Õ°üº¬ÄÄЩÄÚÈÝ

¡¡¡¡ÕâÒ»ÕÂÌṩÁ˹ØÓÚÈçºÎÔÚ FreeBSD ϵͳÉÏʹÓà ISC (Internet ϵͳЭ»á) µÄ DHCP ʵÏÖÌ×¼þÀ´¼ÜÉè DHCP ·þÎñÆ÷µÄÐÅÏ¢¡£

¡¡¡¡DHCP Ì×¼þÖеķþÎñÆ÷²¿·Ö²¢Ã»ÓÐ×÷Ϊ FreeBSD µÄÒ»²¿·ÖÀ´Ìṩ£¬ Òò´ËÄúÐèÒª°²×° net/isc-dhcp31-server port ²ÅÄÜÌṩÕâ¸ö·þÎñ¡£ Çë²Î¼û µÚ 4 Õ ÒÔÁË½â¹ØÓÚÈçºÎʹÓà Ports Collection µÄ½øÒ»²½ÏêÇé¡£

29.5.7.2 °²×° DHCP ·þÎñÆ÷

¡¡¡¡ÎªÁËÔÚÄúµÄ FreeBSD ϵͳÉϽøÐÐÅäÖÃÒÔ±ã×÷Ϊ DHCP ·þÎñÆ÷À´Ê¹Ó㬠ÐèÒª°Ñ bpf(4) É豸±àÒë½øÄںˡ£ ÒªÍê³ÉÕâÏ×÷£¬ ÐèÒª½« device bpf ¼ÓÈëµ½ÄúµÄÄÚºËÅäÖÃÎļþÖУ¬ ²¢ÖØÐÂÁª±àÄںˡ£ ÒªµÃµ½¹ØÓÚÈçºÎÁª±àÄں˵ĽøÒ»²½ÐÅÏ¢£¬ Çë²Î¼û µÚ 8 Õ¡£

¡¡¡¡bpf É豸ÊÇ FreeBSD Ëù¸½´øµÄ GENERIC ÄÚºËÖÐÒѾ­ÁªÈëµÄ×é¼þ£¬ Òò´ËÄú²¢²»ÐèҪΪÁËÈà DHCP Õý³£¹¤×÷¶øÌØ±ðµØ¶¨ÖÆÄںˡ£

×¢Òâ: Èç¹ûÄúÓнÏÇ¿µÄ°²È«Òâʶ£¬ Ó¦¸Ã×¢Òâ bpf ͬʱҲÊÇÈÃÌý°ü³ÌÐòÄܹ»ÕýÈ·¹¤×÷µÄÉ豸 (¾¡¹ÜÕâÀà³ÌÐòÈÔÈ»ÐèÒªÒÔÌØÈ¨Óû§Éí·ÝÔËÐÐ)¡£ bpf ÊÇ Ê¹Óà DHCP Ëù±ØÐèµÄ£¬ µ«Èç¹ûÄú¶Ô°²È«·Ç³£Ãô¸Ð£¬ Äú¿ÉÄܻ᲻ϣÍû½« bpf ·Å½øÄںˣ¬ Ö±µ½ÄúÕæµÄÈÏΪ DHCP ÊDZØÐèµÄΪֹ¡£

¡¡¡¡½ÓÏÂÀ´Òª×öµÄÊDZ༭ʾ·¶µÄ dhcpd.conf£¬ ËüÓÉ net/isc-dhcp31-server port °²×°¡£ ĬÈÏÇé¿öÏ£¬ ËüµÄÃû×ÖÓ¦¸ÃÊÇ /usr/local/etc/dhcpd.conf.sample£¬ ÔÚ¿ªÊ¼ÐÞ¸Ä֮ǰ£¬ ÄúÐèÒª°ÑËü¸´ÖÆÎª /usr/local/etc/dhcpd.conf¡£

29.5.7.3 ÅäÖà DHCP ·þÎñÆ÷

¡¡¡¡dhcpd.conf °üº¬ÁËһϵÁйØÓÚ×ÓÍøºÍÖ÷»úµÄ¶¨Ò壬 ÏÂÃæµÄÀý×Ó¿ÉÒÔ°ïÖúÄúÀí½âËü£º

option domain-name "example.com";(1)
option domain-name-servers 192.168.4.100;(2)
option subnet-mask 255.255.255.0;(3)

default-lease-time 3600;(4)
max-lease-time 86400;(5)
ddns-update-style none;(6)

subnet 192.168.4.0 netmask 255.255.255.0 {
  range 192.168.4.129 192.168.4.254;(7)
  option routers 192.168.4.1;(8)
}

host mailhost {
  hardware ethernet 02:03:04:05:06:07;(9)
  fixed-address mailhost.example.com;(10)
}
(1)
Õâ¸öÑ¡ÏîÖ¸¶¨ÁËÌṩ¸ø¿Í»§»ú×÷ΪĬÈÏËÑË÷ÓòµÄÓòÃû¡£ Çë²Î¿¼ resolv.conf(5) ÒÔÁË½â¹ØÓÚÕâÒ»¸ÅÄîµÄÏêÇé¡£
(2)
Õâ¸öÑ¡ÏîÓÃÓÚÖ¸¶¨Ò»×é¿Í»§»úʹÓÃµÄ DNS ·þÎñÆ÷£¬ ËüÃÇÖ®¼äÒÔ¶ººÅ·Ö¸ô¡£
(3)
Ìṩ¸ø¿Í»§»úµÄ×ÓÍøÑÚÂë¡£
(4)
¿Í»§»ú¿ÉÒÔÇëÇó×âÔ¼µÄÓÐЧÆÚ£¬ ¶øÈç¹ûûÓУ¬ Ôò·þÎñÆ÷½«Ö¸¶¨Ò»¸ö×âÔ¼ÓÐЧÆÚ£¬ Ò²¾ÍÊÇÕâ¸öÖµ (µ¥Î»ÊÇÃë)¡£
(5)
ÕâÊÇ·þÎñÆ÷ÔÊÐí×â³öµØÖ·µÄ×î´óʱ³¤¡£ Èç¹û¿Í»§»úÇëÇóÁ˸ü³¤µÄ×âÆÚ£¬ ÔòËü½«µÃµ½Ò»¸öµØÖ·£¬ µ«Æä×âÆÚ½öÏÞÓÚ max-lease-time Ãë¡£
(6)
Õâ¸öÑ¡ÏîÓÃÓÚÖ¸¶¨ DHCP ·þÎñÆ÷ÔÚÒ»¸öµØÖ·±»½ÓÊÜ»òÊÍ·ÅʱÊÇ·ñÓ¦¶ÔÓ¦³¢ÊÔ¸üРDNS¡£ ÔÚ ISC ʵÏÖÖУ¬ ÕâһѡÏîÊÇ ±ØÐëÖ¸¶¨µÄ¡£
(7)
Ö¸¶¨µØÖ·³ØÖпÉÒÔÓÃÀ´·ÖÅ䏸¿Í»§»úµÄ IP µØÖ··¶Î§¡£ ÔÚÕâ¸ö·¶Î§Ö®¼ä£¬ ÒÔ¼°Æä±ß½çµÄ IP µØÖ·½«·ÖÅ䏸¿Í»§»ú¡£
(8)
¶¨Òå¿Í»§»úµÄĬÈÏÍø¹Ø¡£
(9)
Ö÷»úµÄÓ²¼þ MAC µØÖ· (ÕâÑù DHCP ·þÎñÆ÷¾ÍÄܹ»ÔÚ½Óµ½ÇëÇóʱ֪µÀÇëÇóµÄÖ÷»úÉí·Ý)¡£
(10)
Ö¸¶¨×ÜÊǵõ½Í¬Ò» IP µØÖ·µÄÖ÷»ú¡£ Çë×¢ÒâÔÚ´Ë´¦Ê¹ÓÃÖ÷»úÃûÊǶԵģ¬ ÒòΪ DHCP ·þÎñÆ÷»áÔÚ·µ»Ø×â½èµØÖ·ÐÅϢ֮ǰ×ÔÐнâÎöÖ÷»úÃû¡£

¡¡¡¡ÔÚÅäÖÆºÃ dhcpd.conf Ö®ºó£¬ Ó¦ÔÚ /etc/rc.conf ÖÐÆôÓà DHCP ·þÎñÆ÷£¬ Ò²¾ÍÊÇÔö¼Ó£º

dhcpd_enable="YES"
dhcpd_ifaces="dc0"

¡¡¡¡´Ë´¦µÄ dc0 ½Ó¿ÚÃûÓ¦¸ÄΪ DHCP ·þÎñÆ÷ÐèÒª¼àÌý DHCP ¿Í»§¶ËÇëÇóµÄ½Ó¿Ú (Èç¹ûÓжà¸ö£¬ ÔòÓÿոñ·Ö¿ª)¡£

¡¡¡¡½ÓÏÂÀ´£¬ ¿ÉÒÔÓÃÏÂÃæµÄÃüÁîÀ´Æô¶¯·þÎñ£º

# /usr/local/etc/rc.d/isc-dhcpd start

¡¡¡¡Èç¹ûδÀ´ÄúÐèÒªÐ޸ķþÎñÆ÷µÄÅäÖ㬠ÇëÎñ±ØÀμǷ¢ËÍ SIGHUP ÐźŸø dhcpd ²¢ ²»»á µ¼ÖÂÅäÖÃÎļþµÄÖØÐ¼ÓÔØ£¬ ¶øÕâÔÚÆäËû·þÎñ³ÌÐòÖÐÔòÊÇ±È½ÏÆÕ±éµÄÔ¼¶¨¡£ ÄúÐèÒª·¢ËÍ SIGTERM ÐźÅÀ´Í£Ö¹½ø³Ì£¬ È»ºóʹÓÃÉÏÃæµÄÃüÁîÀ´ÖØÐÂÆô¶¯Ëü¡£

29.5.7.4 Îļþ

  • /usr/local/sbin/dhcpd

    dhcpd ÊǾ²Ì¬Á¬½ÓµÄ£¬ ²¢°²×°µ½ /usr/local/sbin ÖС£ Ëæ port °²×°µÄ dhcpd(8) Áª»úÊÖ²áÌṩÁ˹ØÓÚ dhcpd ¸üΪÏ꾡µÄÐÅÏ¢¡£

  • /usr/local/etc/dhcpd.conf

    dhcpd ÐèÒªÅäÖÃÎļþ£¬ ¼´ /usr/local/etc/dhcpd.conf ²ÅÄܹ»Ïò¿Í»§»úÌṩ·þÎñ¡£ Õâ¸öÎļþÐèÒª°üÀ¨Ó¦Ìṩ¸ø¿Í»§»úµÄËùÓÐÐÅÏ¢£¬ ÒÔ¼°¹ØÓÚ·þÎñÆ÷ÔËÐÐµÄÆäËûÐÅÏ¢¡£ ´ËÅäÖÃÎļþµÄÏêϸÃèÊö¿ÉÒÔÔÚËæ port °²×°µÄ dhcpd.conf(5) Áª»úÊÖ²áÉÏÕÒµ½¡£

  • /var/db/dhcpd.leases

    DHCP ·þÎñÆ÷»áά»¤Ò»¸öËüÇ©·¢µÄ×âÓõØÖ·Êý¾Ý¿â£¬ ²¢±£´æÔÚÕâ¸öÎļþÖУ¬ Õâ¸öÎļþÊÇÒÔÈÕÖ¾µÄÐÎʽ±£´æµÄ¡£ Ëæ port °²×°µÄ dhcpd.leases(5) Áª»úÊÖ²áÌṩÁ˸üÏêϸµÄÃèÊö¡£

  • /usr/local/sbin/dhcrelay

    dhcrelay ÔÚ¸üΪ¸´ÔӵĻ·¾³ÖУ¬ ¿ÉÒÔÓÃÀ´Ö§³ÖʹÓà DHCP ·þÎñÆ÷ת·¢ÇëÇó¸øÁíÒ»¸ö¶ÀÁ¢ÍøÂçÉ쵀 DHCP ·þÎñÆ÷¡£ Èç¹ûÄúÐèÒªÕâ¸ö¹¦ÄÜ£¬ ÐèÒª°²×° net/isc-dhcp31-relay port¡£ dhcrelay(8) Áª»úÊÖ²áÌṩÁ˸üΪÏ꾡µÄ½éÉÜ¡£

±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.