72 FreeBSD连载:设置和使用DHCP( 三 )


缺省情况下,不存在start_if.fxp0等start_if设置网络脚本,但是这些脚本在rc.network已经做好了设置,针对每个网络界面启动,而不需要在rc.conf中做特别设定 。对于dhclient,可以创建一个简单的启动脚本start_if.fxp0为:
#! /bin/sh/usr/local/sbin/dhclient fxp0这样,dhclient就和系统启动文件结合起来了,在系统启动的时候会自动设置好TCP/IP,此后再启动相关的网络服务 。此时需要注意的是删除原来可能在rc.local或者在/usr/local/etc/rc.d目录中的dhclient启动命令,以避免冲突 。
在FreeBSD系统上不推荐使用动态IP地址,因为FreeBSD能提供大量有用的网络服务,都会与IP地址或域名有关,不适合使用动态IP地址 。如果必须要作为DHCP客户以保持IP地址的统一管理,建议使用dhcpd针对硬件地址的设置方式,在DHCP服务器上为FreeBSD系统设定一个固定IP地址 。
设置DHCP中转
当网络中存在多个子网的时候,由于客户计算机只能通过广播发送DHCP请求,这些请求一般不能跨越路由器 。为了在DHCP服务器存在的子网之外的DHCP客户分配IP地址,可以设置路由器转发DHCP请求,即转发相应的UDP端口67和68的广播数据包 。但这样设置就增加了网络广播,不利于减少网络流量 。
此外,还有另外一种方法来使得DHCP客户计算机能使用子网之外的DHCP服务器来分配IP地址 。这就是使用DHCP中转计算机来转发DHCP的请求 。DHCP中转计算机能听取DHCP广播,由于它了解DHCP服务器的IP地址,因此能通过正常的IP数据包将原广播包转发到服务器中,然后再将服务器的回应信息回复客户机 。这样DHCP客户机就以为本子网中也存在一个DHCP服务器 。
在ISC-DHCP软件中,提供的中转程序为dhcrelay,这是一个简单的程序,不需要额外的设置 。启动dhcrelay的标准方式为使用命令行指定将DHCP服务请求中转到的目的DHCP服务器,由于DHCP中允许多个DHCP服务器同时为客户提供地址,而不会产生冲突,就可以使用多个DHCP服务器进行中转 。
# dhcrelay dhcpsrv1 dhcpsrv2如果这台中转服务器为多网络界面计算机,那么dhcrelay将侦听所有网络界面的DHCP请求,有时不希望dhcrelay中转某些界面上的请求,就可以设置dhcrelay侦听的网络界面,这需要指定-i参数 。
# dhcrelay -i xl0 dhcpsrv1提供备份的DHCP设置
在一个具备多个子网的大型网络中,提供冗余是一个非常重要的问题 。由于DHCP协议中DHCP服务器负责分配IP地址,一旦DHCP服务器出现故障,那么所有的客户就无法正确获得IP地址,从而不能访问网络 。
但可以同时设置多个DHCP服务器来提供一个冗余能力 。然而DHCP服务器本身是不提供备份能力的,不能互为备份 。他们占用的IP地址资源也不能重叠,以免发生客户机IP地址冲突的现象 。提供容错能力是通过分割可用的IP地址到不同的DHCP服务器上,通过多个DHCP服务器同时为一个网络服务,从而使得一个服务器发生故障还能正常执行操作 。通常为了进一步增强可靠性,还可以将不同的DHCP服务器放置在不同子网中,互相使用中转提供服务 。
例如在两个子网上各自有一个DHCP服务器,标准的做法可以不使用DHCP中转,各个子网上的服务器为各个子网服务就行了 。然而为了达到容错的目的,可以互相为另一个子网提供服务,通过设置中转或路由器转发广播以达到互为服务的目的 。
例如位于192.168.3.0网络上的srv1的配置可能为:
subnet 192.168.3.0 netmask 255.255.255.0 {range 192.168.3.10 192.168.3.199;}subnet 192.168.4.0 netmask 255.255.255.0 {range 192.168.4.200 192.168.4.220;}位于192.168.4.0网络上的srv2的配置可能为:
subnet 192.168.4.0 netmask 255.255.255.0 {range 192.168.4.10 192.168.4.199;}subnet 192.168.3.0 netmask 255.255.255.0 {range 192.168.3.200 192.168.3.220;}注意,上述设置都是设置样例,标准情况下还需分别指定各个option,用于设置IP地址及其相关设置 。

推荐阅读