如何为您的LAN设置DHCP服务器

如何为您的局域网设置DHCP服务器

版本1.0
作者:Falko Timme

本教程介绍如何为本地网络设置DHCP服务器(ISC-DHCP)。 DHCP是“动态主机配置协议”的缩写,它是一种协议,用于处理没有静态IP地址的客户端PC的IP地址,子网掩码,默认路由器和其他IP参数的分配。 这样的计算机尝试在其本地网络中找到一个DHCP服务器,然后它们分配一个IP地址,网关等,以便它们可以从本地网络连接到互联网或其他计算机。

在本简短的指南中,我将演示如何在Debian Sarge(3.1)系统上设置简单的DHCP服务器(ISC-DHCP),其唯一目的是将IP地址,网关,DNS服务器等分配给客户端计算机没有静态IP地址的本地网络。 您可以在家庭网络,办公室等中使用这样的DHCP服务器,例如,如果您的路由器没有内置的DHCP服务器。 如果您设置了这样的DHCP服务器,请确保您的LAN中没有其他服务器,否则可能会导致冲突。

当然,可以想象更复杂的DHCP设置,但是这些不在本文档的范围之内。

我想先说说这不是建立这样一个系统的唯一途径。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1初步说明

这是现在的情况:

  • 我正在使用网络192.168.0.0 ,子网掩码255.255.255.0 ,广播地址192.168.0.255
  • 我到互联网的网关是192.168.0.1 ; 在网关上没有DHCP服务器
  • 我的ISP告诉我,我可以使用的DNS服务器是145.253.2.75193.174.32.18
  • 我有一个30个IP地址池( 192.168.0.200 - 192.168.0.229 ),可以动态分配给客户端PC并且尚未使用
  • 我有一个未使用的Debian Sarge服务器,主机名为server1.example.com ,IP地址为192.168.0.100 ,用作我的DHCP服务器。

2安装DHCP服务器

现在我们在我们的Debian Sarge系统上安装我们的DHCP服务器:

apt-get install dhcp3-server

你会被问到几个问题:

DHCP服务器应该监听哪些网络接口? < - eth0

请在安装完成后立即配置DHCP服务器。 < - 好的

默认情况下,版本3 DHCP服务器是非授权的

在安装结束时,您将看到如下错误:

Generating /etc/default/dhcp3-server...
Starting DHCP server: dhcpd3 failed to start - check syslog for diagnostics.
invoke-rc.d: initscript dhcp3-server, action "start" failed.

没关系,因为我们没有机会配置我们的DHCP服务器。

3配置DHCP服务器

现在我们必须配置我们的DHCP服务器。 我们必须告诉它从哪个IP范围,它应该为请求的客户端分配IP地址,它应该分配哪个网关,哪些DNS服务器等。

我们的DHCP服务器的配置文件是/etc/dhcp3/dhcpd.conf 。 目前它包含一个示例配置,我们复制到/etc/dhcp3/dhcpd.conf_orig以备将来参考:

cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_orig
cat /dev/null > /etc/dhcp3/dhcpd.conf

使用最后一个命令,我们已经清空了/etc/dhcp3/dhcpd.conf ,以便我们现在可以将自己的配置放在其中:

vi /etc/dhcp3/dhcpd.conf

该文件应如下所示:

ddns-update-style none;

option domain-name-servers 145.253.2.75, 193.174.32.18;

default-lease-time 86400;
max-lease-time 604800;

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.200 192.168.0.229;
        option subnet-mask 255.255.255.0;
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.1;
}

我在这里解释配置选项:

  • ddns-update-style :如果LAN中服务器的IP地址发生变化(因为DHCP已经分配了不同的IP),可以通知DHCP服务器来更新DNS服务器。 由于我们不在局域网中运行服务器或者总是给它们静态IP地址(这对于服务器来说是个好主意...),我们不想更新DNS记录,所以我们将其设置为
  • option domain-name-servers :告诉DHCP服务器它应该分配给客户端的DNS服务器。 您可以在此处指定多个DNS服务器,以逗号分隔。
  • default-lease-timemax-lease-time :客户端可以告诉DHCP服务器需要多长时间才能获取IP地址。 如果不这样做,服务器将为默认租约时间秒分配一个IP地址; 如果是,则服务器授予所请求的时间,但最多只能达到最大租借时间秒。
  • 权威性 :如果没有设置,这意味着如果一个客户端请求一个地址,服务器什么也不知道,并且该地址对于那个网段是不正确的,服务器将_not_发送一个DHCPNAK(它告诉客户端它应该停止使用地址)我们不想这样我们设置权威
  • 子网 :要使用的子网。
  • 网络掩码 :要使用的网络掩码。
  • 范围 :告诉DHCP服务器从哪个范围可以为客户端分配IP地址。 在我们的例子中,从192.168.0.200192.168.0.229 (30个IP地址)。
  • option broadcast-address :要使用的广播地址。
  • 选项路由器 :告诉DHCP服务器它应该分配给请求的客户端的网关地址。 在我们的例子中,网关是192.168.0.1

如果您不确定您的个人网络设置(网络,网络掩码,广播地址等),请访问www.subnetmask.info ,您可以在其中计算您的设置。

你看,这是一个非常简单和基本的配置,但这足以使我们的DHCP服务器可以运行。 现在开始吧

/etc/init.d/dhcp3-server restart

之后可以检查输出

ps aux

查看DHCP是否正在运行。 你也应该在输出中看到它

netstat -uap

这应该是这样的:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
udp        0      0 *:bootps                *:*                                2185/dhcpd3
udp        0      0 *:868                   *:*                                1964/rpc.statd
udp        0      0 *:871                   *:*                                1964/rpc.statd
udp        0      0 *:sunrpc                *:*                                1553/portmap

您可以看到DHCP正在启动UDP端口上运行,转换为端口67 UDP(运行

grep bootps /etc/services

你会看到bootps是指端口67)。

最后,如果在DHCP服务器启动期间发生任何错误,您可以检查/ var / log / syslog 。 要查看/ var / log / syslog的最后100行,例如运行

tail -n 100 /var/log/syslog

4我如何看到我的DHCP服务器正常工作?

要查看您的DHCP服务器是否正常工作,请启动LAN中没有静态IP地址的另一台PC(Windows,Linux,MAC,...)。 等待几秒钟,在DHCP服务器的/ var / log / syslog中,您将看到DHCP服务器为您的PC分配一个IP地址。 例如,在/ var / log / syslog的这个摘录中,名为matze的客户端PC已分配IP地址192.168.0.229

Sep 19 16:01:26 server1 dhcpd: DHCPDISCOVER from 00:0c:76:8b:c4:16 via eth0
Sep 19 16:01:26 server1 dhcpd: DHCPOFFER on 192.168.0.229 to 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:27 server1 dhcpd: DHCPDISCOVER from 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:27 server1 dhcpd: DHCPOFFER on 192.168.0.229 to 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:31 server1 dhcpd: DHCPDISCOVER from 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:31 server1 dhcpd: DHCPOFFER on 192.168.0.229 to 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:31 server1 dhcpd: Wrote 1 leases to leases file.
Sep 19 16:01:31 server1 dhcpd: DHCPREQUEST for 192.168.0.229 (192.168.0.100) from 00:0c:76:8b:c4:16 (matze) via eth0
Sep 19 16:01:31 server1 dhcpd: DHCPACK on 192.168.0.229 to 00:0c:76:8b:c4:16 (matze) via eth0

DHCP服务器将所有当前的IP地址“租赁”写入文件/var/lib/dh​​cp3/dhcpd.leases ,以便您也可以在那里找到租约:

vi /var/lib/dhcp3/dhcpd.leases
# All times in this file are in UTC (GMT), not your local timezone.   This is
# not a bug, so please don't ask about it.   There is no portable way to
# store leases in the local timezone, so please don't request this as a
# feature.   If this is inconvenient or confusing to you, we sincerely
# apologize.   Seriously, though - don't ask.
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-V3.0.1

lease 192.168.0.229 {
  starts 2 2006/09/19 14:01:31;
  ends 3 2006/09/20 14:01:31;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:76:8b:c4:16;
  uid "\001\000\014v\213\304\026";
  client-hostname "matze";
}

玩的开心!

5链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏