科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件设置和使用DHCP-FreeBSD 技术文摘

设置和使用DHCP-FreeBSD 技术文摘

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在FreeBSD的Packages Collection中,有两个不同的DHCP客户机和服务器软件,一个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件。

来源:早雪网 2008年5月20日

关键字: 操作系统 技巧 FreeBSD

  • 评论
  • 分享微博
  • 分享邮件
    在更复杂的情况下,就要指定更多的内容,例如当系统有多个网卡时,要指定dhclient应该从哪个子网中获得IP地址设置,就需要使用设置文件dhclient.conf。一般除非有多个局域网网络界面,都应该使用空设置文件,避免产生配置错误。以下为一个简单的dhclient.conf的例子,可以用于多网络界面的情况:

# Defaults timeout 60; reboot 10; retry 60; select-timeout 5; initial-interval 2; script "/etc/dhclient-script"; interface "fxp0" {  request subnet-mask, broadcast-address, routers, domain-name-servers,          domain-name, host-name;  require domain-name-servers; }

  这个设置文件主要用于重新定义一些参数,比较容易理解,更改也比较容易。

  成功的手工执行dhclient之后,就可以考虑将其和系统启动文件相结合了。因为很多网络服务是依赖于网络配置的,应该在启动这些网络服务之前使用DHCP配置好TCP/IP。使用dhclient-script启动服务的想法虽然也能解决问题,然而这就不能使用系统的启动rc文件中的相关设置启动网络服务,而在这个dhclient-script 中重新启动,因此比较麻烦。更简便的做法是仅仅在dhclient-script中设置hostname,而让系统启动文件完成其他网络服务的启动。这样就要求将dhclient与系统rc文件结合起来。

#hostname="my.domain.name" network_interfaces="fxp0 lo0"    # List of network interfaces (lo0 isloopback). ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration. #ifconfig_fxp0="inet 192.168.3.12  netmask 255.255.255.0" defaultrouter="NO"              # Set to default gateway (or NO).
 
这样就需要更改rc.conf文件,更改一些设置语句。首先要注释hostname设置,而在dhclient.script中进行设置,也不必设置 defaultrouter,它通过DHCP协议自动设置。同时要保证network_interfaces参数中,设置了要通过dhclient来获取 IP地址的网络界面fxp0,以允许rc系统文件能启动该与该界面相关的设置文件,然而却必须注释设置该界面的参数ifconfig_fxp0,因为这个设置参数是用于设置静态IP地址的选项,因此要屏蔽它,而使用start_if.fxp0配置脚本来设置网络界面。

缺省情况下,不存在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地址及其相关设置。

  可以看出两个服务器都能对两个网络上的客户机分配IP地址,而各自又有一个主要服务的网络。每个网络上的IP 地址主要放在本地的服务器上,但也有少部分地址放在另一个子网中的服务器上(地址资源不能冲突),这样提供了一定的容错能力。

  实际的多子网网络中,并不必要每个子网都设置一个服务器,并使用另外的服务器备份,一般网络中有2-3个DH CP服务器就够用了。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章