我正在尝试设置一个非常简单的 DHCP 服务器。我使用的是 Ubuntu 10.04,并且安装了“dhcp3-server”包。该服务器有一个接口 (eth0),静态设置为 10.0.0.10(/21)。我想从网络 10.255.224.0/19 分发 IP。
按照各种在线指南所指导的,我编辑 /etc/default/dhcp3-server 以包含行“INTERFACES="eth0"。
然后我编写了我的 dhcpd.conf。我必须放置一个空子网,否则我会收到错误:
No subnet declaration for eth0 (10.0.0.10).
** Ignoring requests on eth0. If this is not what
you want, please write a subnet declaration
in your dhcpd.conf file for the network segment
to which interface eth0 is attached. **
一旦我添加了这个空子网,守护进程就会启动。我尝试使用另一台机器作为 DHCP 客户端来测试它。这是我在 dhcpd 日志中看到的内容:
dhcpd: DHCPDISCOVER from 00:1d:09:b1:f5:dc via eth0: network 10.0.0/21: no free leases
那个“网络”看起来确实不对,但我找不到导致我的测试客户端无法获取 IP 的问题所在。这是我的 dhcpd.conf:
ddns-update-style none;
option domain-name "example.org";
option domain-name-servers 10.10.10.83, 10.10.10.84;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
#empty subnet to prevent error on start
subnet 10.0.0.0 netmask 255.255.248.0 {
}
subnet 10.255.224.0 netmask 255.255.224.0 {
option subnet-mask 255.255.224.0;
option broadcast-address 10.255.255.255;
option routers 10.0.0.1;
range 10.255.224.2 10.255.255.254;
}
我以前曾使用过 ISC-DHCPd,但这是我第一次尝试自己构建和部署服务器。任何提示都非常有用!
答案1
两个子网 10.0.0.0/255.255.248.0 和 10.255.224.0/255.255.224.0 是否位于同一物理网络上?如果是,您需要从 10.255.224.0/255.255.224.0 中分配一个地址给 DHCP 服务器,或者您需要设置DHCP 中继代理在 10.255.224.0/255.255.224.0 网络上的某些设备上。
如果它们不在同一个网络上,我不确定 DHCP 服务器如何看到该请求,但您绝对需要在具有 10.255.224.0/255.255.224.0 网络地址的设备上安装 DHCP 中继代理来将请求转发到 DHCP 服务器。
这些都是必需的,因为如果请求是通过广播接收的,DHCP 服务器将使用接收请求的接口的网络/掩码来选择提供地址的范围。如果请求是通过单播发送的,并且填充了 GIADDR 地址,DHCP 中继填充此,则将使用 GIADDR 来选择要提出报价的范围。