如何为您的局域网设置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.75
和193.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-time
,max-lease-time
:客户端可以告诉DHCP服务器需要多长时间才能获取IP地址。 如果不这样做,服务器将为默认租约时间
秒分配一个IP地址; 如果是,则服务器授予所请求的时间,但最多只能达到最大租借时间
秒。 -
权威性
:如果没有设置,这意味着如果一个客户端请求一个地址,服务器什么也不知道,并且该地址对于那个网段是不正确的,服务器将_not_发送一个DHCPNAK(它告诉客户端它应该停止使用地址)我们不想这样我们设置权威
。 -
子网
:要使用的子网。 -
网络掩码
:要使用的网络掩码。 -
范围
:告诉DHCP服务器从哪个范围可以为客户端分配IP地址。 在我们的例子中,从192.168.0.200
到192.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/dhcp3/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链接
- ISC-DHCP: http : //www.isc.org/index.pl?/sw /dhcp/
- dhcpd.conf配置选项: http : //www.bind9.net/dhcpd.conf.5
- 网络计算器: http : //www.subnetmask.info