¡¡¡¡DHCP£¬ ¶¯Ì¬Ö÷»úÅäÖÃÐÒ飬 ÊÇÒ»ÖÖÈÃϵͳµÃÒÔÁ¬½Óµ½ÍøÂçÉÏ£¬ ²¢»ñÈ¡ËùÐèÒªµÄÅäÖòÎÊýÊֶΡ£ FreeBSD ʹÓÃÀ´×Ô OpenBSD 3.7 µÄ OpenBSD dhclient¡£ ÕâÀïÌṩµÄËùÓйØÓÚ dhclient µÄÐÅÏ¢£¬ ¶¼ÊÇÒÔ ISC »ò OpenBSD DHCP ¿Í»§¶Ë³ÌÐòΪ׼µÄ¡£ DHCP ·þÎñÆ÷ÊÇ ISC Èí¼þ°üµÄÒ»²¿·Ö¡£
¡¡¡¡ÕâÒ»½ÚÃèÊöÁË ISC ºÍ DHCP ϵͳÖеĿͻ§¶Ë£¬ ÒÔ¼°ºÍ ISC DHCP ϵͳÖеķþÎñÆ÷¶ËµÄ×é¼þ¡£ ¿Í»§¶Ë³ÌÐò£¬ dhclient£¬ ÊÇËæ FreeBSD ×÷ΪËüµÄÒ»²¿·ÖÌṩµÄ£» ¶ø·þÎñÆ÷²¿·Ö£¬ Ôò¿ÉÒÔͨ¹ý net/isc-dhcp31-server port µÃµ½¡£ dhclient(8)¡¢ dhcp-options(5)¡¢ ÒÔ¼° dhclient.conf(5) Áª»úÊֲᣬ ¼ÓÉÏÏÂÃæËù½éÉܵIJο¼ÎÄÏ×£¬ ¶¼ÊǷdz£ÓÐÓõÄ×ÊÔ´¡£
¡¡¡¡µ± DHCP ¿Í»§³ÌÐò£¬ dhclient ÔÚ¿Í»§»úÉÏÔËÐÐʱ£¬ Ëü»á¿ªÊ¼¹ã²¥ÇëÇóÅäÖÃÐÅÏ¢µÄÏûÏ¢¡£ ĬÈÏÇé¿öÏ£¬ ÕâЩÇëÇóÊÇÔÚ UDP ¶Ë¿Ú 68 ÉÏ¡£ ·þÎñÆ÷ͨ¹ý UDP 67 ¸ø³öÏìÓ¦£¬ Ïò¿Í»§»úÌṩһ¸ö IP µØÖ·£¬ ÒÔ¼°ÆäËûÓйصÄÅäÖòÎÊý£¬ ÀýÈç×ÓÍøÑÚÂë¡¢ ·ÓÉÆ÷£¬ ÒÔ¼° DNS ·þÎñÆ÷¡£ ËùÓÐÕâЩÐÅÏ¢¶¼»áÒÔ DHCP ¡°lease¡± µÄÐÎʽ¸ø³ö£¬ ²¢ÇÒÖ»ÔÚÒ»¶ÎÌØ¶¨µÄʱ¼äÄÚÓÐЧ (ÕâÊÇÓÉ DHCP ·þÎñÆ÷µÄά»¤ÕßÅäÖõÄ)¡£ ÕâÑù£¬ ÄÇЩÒѾ¶Ï¿ªÍøÂçµÄ¿Í»§»úʹÓÃµÄ³Â¾ÉµÄ IP µØÖ·¾ÍÄܱ»×Ô¶¯µØ»ØÊÕÁË¡£
¡¡¡¡DHCP ¿Í»§³ÌÐò¿ÉÒÔ´Ó·þÎñÆ÷¶Ë»ñÈ¡´óÁ¿µÄÐÅÏ¢¡£ ¹ØÓÚÄÜ»ñµÃµÄÐÅÏ¢µÄÏêϸÁÐ±í£¬ Çë²Î¿¼ dhcp-options(5)¡£
¡¡¡¡FreeBSD ÍêÈ«µØ¼¯³ÉÁË OpenBSD µÄ DHCP ¿Í»§¶Ë£¬ dhclient¡£ DHCP ¿Í»§¶ËÖ§³ÖÔÚ°²×°³ÌÐòºÍ»ù±¾ÏµÍ³ÖоùÓÐÌṩ£¬ ÕâʹµÃÄú²»ÔÙÐèҪȥÁ˽âÄÇЩÒѾÔËÐÐÁË DHCP ·þÎñÆ÷µÄÍøÂçµÄ¾ßÌåÅäÖòÎÊý¡£
¡¡¡¡sysinstall Äܹ»Ö§³Ö DHCP¡£ ÔÚ sysinstall ÖÐÅäÖÃÍøÂç½Ó¿Úʱ£¬ ËüѯÎʵĵڶþ¸öÎÊÌâ±ãÊÇ£º ¡°Do you want to try DHCP configuration of the interface? (ÄúÊÇ·ñÏ£ÍûÔڴ˽ӿÚÉϳ¢ÊÔ DHCP ÅäÖÃ?)¡±¡£ Èç¹û×ö¿Ï¶¨µÄ»Ø´ð£¬ Ôò½«ÔËÐÐ dhclient£¬ Ò»µ©³É¹¦£¬ Ôò½«×Ô¶¯µØÌîÐ´ÍøÂçÅäÖÃÐÅÏ¢¡£
¡¡¡¡ÒªÔÚϵͳÆô¶¯Ê±Ê¹Óà DHCP£¬ Äú±ØÐë×öÁ½¼þÊ£º
ÄúµÄÄÚºËÖУ¬ ±ØÐë°üº¬ bpf É豸¡£ Èç¹ûÐèÒªÕâÑù×ö£¬ ÐèÒª½« device bpf Ìí¼Óµ½Äں˵ıàÒëÅäÖÃÎļþÖУ¬ ²¢ÖØÐ±àÒëÄںˡ£ ÒªÁË½â¹ØÓÚ±àÒëÄں˵ĽøÒ»²½ÐÅÏ¢£¬ Çë²Î¼û µÚ 8 Õ¡£
bpf É豸ÒѾÊÇ FreeBSD ·¢ÐаæÖÐĬÈ쵀 GENERIC Äں˵ÄÒ»²¿·ÖÁË£¬ Òò´ËÈç¹ûÄúûÓжÔÄں˽øÐж¨ÖÆ£¬ Ôò²»Óô´½¨Ò»·ÝеÄÄÚºËÅäÖÃÎļþ£¬ DHCP ¾ÍÄܹ¤×÷ÁË¡£
×¢Òâ: ¶ÔÓÚÄÇЩ°²È«ÒâʶºÜÇ¿µÄÈËÀ´Ëµ£¬ ÄúÓ¦¸ÃÖªµÀ bpf Ò²ÊǰüÕìÌý¹¤¾ßÄܹ»ÕýÈ·¹¤×÷µÄÌõ¼þÖ®Ò» (µ±È»£¬ ËüÃÇ»¹ÐèÒªÒÔ root Éí·ÝÔËÐвÅÐÐ)¡£ bpf ÊÇ Ê¹Óà DHCP Ëù±ØÐëµÄ£¬ µ«Èç¹ûÄú¶Ô°²È«·Ç³£Ãô¸Ð£¬ ÔòºÜ¿ÉÄÜ»áÓÐÀíÓɲ»°Ñ bpf ¼ÓÈëµ½ÄúµÄÄÚºËÅäÖÃÖУ¬ Ö±µ½ÄúÕæµÄÐèҪʹÓà DHCP Ϊֹ¡£
±à¼ÄúµÄ /etc/rc.conf ²¢¼ÓÈëÏÂÃæµÄÉèÖãº
ifconfig_fxp0="DHCP"
×¢Òâ: Îñ±Ø½« fxp0 Ìæ»»ÎªÄúÏ£Íû×Ô¶¯ÅäÖõÄÍøÂç½Ó¿ÚµÄÃû×Ö£¬ Äú¿ÉÒÔÔÚ µÚ 11.8 ½Ú ÕÒµ½¸ü½øÒ»²½µÄ½éÉÜ¡£
Èç¹ûÄúÏ£ÍûʹÓÃÁíһλÖÃµÄ dhclient£¬ »òÕßÐèÒª¸ø dhclient ´«µÝÆäËû²ÎÊý£¬ »¹¿ÉÒÔÌí¼ÓÏÂÃæµÄÅäÖà (¸ù¾ÝÐèÒª½øÐÐÐÞ¸Ä)£º
dhclient_program="/sbin/dhclient" dhclient_flags=""
¡¡¡¡DHCP ·þÎñÆ÷£¬ dhcpd£¬ ÊÇ×÷Ϊ net/isc-dhcp31-server port µÄÒ»²¿·ÖÌṩµÄ¡£ Õâ¸ö port °üÀ¨ÁË ISC DHCP ·þÎñÆ÷¼°ÆäÎĵµ¡£
/etc/dhclient.conf
dhclient ÐèÒªÒ»¸öÅäÖÃÎļþ£¬ /etc/dhclient.conf¡£ Ò»°ã˵À´£¬ Õâ¸öÎļþÖÐÖ»°üÀ¨×¢ÊÍ£¬ ¶øÄ¬ÈÏÖµ»ù±¾É϶¼ÊǺÏÀíµÄ¡£ Õâ¸öÅäÖÃÎļþÔÚ dhclient.conf(5) Áª»úÊÖ²áÖнøÐÐÁ˽øÒ»²½µÄ²ûÊö¡£
/sbin/dhclient
dhclient ÊÇÒ»¸ö¾²Ì¬Á¬±àµÄ£¬ Ëü±»°²×°µ½ /sbin ÖС£ dhclient(8) Áª»úÊÖ²á¸ø³öÁ˹ØÓÚ dhclient µÄ½øÒ»²½Ï¸½Ú¡£
/sbin/dhclient-script
dhclient-script ÊÇÒ»¸ö FreeBSD רÓÃµÄ DHCP ¿Í»§¶ËÅäÖýű¾¡£ ÔÚ dhclient-script(8) ÖжÔËü½øÐÐÁËÃèÊö£¬ µ«Ò»°ãÀ´Ëµ£¬ Óû§²»ÐèÒª¶ÔÆä½øÐÐÈκÎÐ޸ģ¬ ¾ÍÄܹ»ÈÃÒ»ÇÐÕý³£ÔËתÁË¡£
/var/db/dhclient.leases
DHCP ¿Í»§³ÌÐò»áά»¤Ò»¸öÊý¾Ý¿âÀ´±£´æÓÐЧµÄ lease£¬ ËüÃDZ»ÒÔÈÕÖ¾µÄÐÎʽ±£´æµ½Õâ¸öÎļþÖС£ dhclient.leases(5) ¸ø³öÁ˸üΪϸÖµĽéÉÜ¡£
¡¡¡¡DHCP ÐÒéµÄÍêÕûÃèÊöÊÇ RFC 2131¡£ ¹ØÓÚËüµÄÆäËûÐÅÏ¢×ÊÔ´µÄÕ¾µã http://www.dhcp.org/ Ò²ÌṩÁËÏ꾡µÄ×ÊÁÏ¡£
¡¡¡¡ÕâÒ»ÕÂÌṩÁ˹ØÓÚÈçºÎÔÚ FreeBSD ϵͳÉÏʹÓà ISC (Internet ϵͳлá) µÄ DHCP ʵÏÖÌ×¼þÀ´¼ÜÉè DHCP ·þÎñÆ÷µÄÐÅÏ¢¡£
¡¡¡¡DHCP Ì×¼þÖеķþÎñÆ÷²¿·Ö²¢Ã»ÓÐ×÷Ϊ FreeBSD µÄÒ»²¿·ÖÀ´Ìṩ£¬ Òò´ËÄúÐèÒª°²×° net/isc-dhcp31-server port ²ÅÄÜÌṩÕâ¸ö·þÎñ¡£ Çë²Î¼û µÚ 4 Õ ÒÔÁË½â¹ØÓÚÈçºÎʹÓà Ports Collection µÄ½øÒ»²½ÏêÇé¡£
¡¡¡¡ÎªÁËÔÚÄúµÄ 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¡£
¡¡¡¡dhcpd.conf °üº¬ÁËһϵÁйØÓÚ×ÓÍøºÍÖ÷»úµÄ¶¨Ò壬 ÏÂÃæµÄÀý×Ó¿ÉÒÔ°ïÖúÄúÀí½âËü£º
option domain-name "example.com";option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
} host mailhost { hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}
¡¡¡¡ÔÚÅäÖÆºÃ 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 ÐźÅÀ´Í£Ö¹½ø³Ì£¬ È»ºóʹÓÃÉÏÃæµÄÃüÁîÀ´ÖØÐÂÆô¶¯Ëü¡£
/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>.