我在这件事上束手无策,我已经试了好几个小时才把这件事办好,但我很为难。希望你们中有人能帮上忙。:-)
我试图让dhcp3 3服务器在Ubuntu上工作。它已安装完毕,并正确安装,以便在rc2、3、4、5.d运行级别中运行。在引导时,它的init.d脚本可以运行,而在syslog中,我得到以下内容:
Oct 18 20:40:37 jez-ubuntu dhcpd: Internet Systems Consortium DHCP Server V3.1.1
Oct 18 20:40:37 jez-ubuntu dhcpd: Copyright 2004-2008 Internet Systems Consortium.
Oct 18 20:40:37 jez-ubuntu dhcpd: All rights reserved.
Oct 18 20:40:37 jez-ubuntu dhcpd: For info, please visit http://www.isc.org/sw/dhcp/
Oct 18 20:40:37 jez-ubuntu dhcpd: Wrote 2 leases to leases file.
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd: No subnet declaration for eth1 (0.0.0.0).
Oct 18 20:40:37 jez-ubuntu dhcpd: ** Ignoring requests on eth1. If this is not what
Oct 18 20:40:37 jez-ubuntu dhcpd: you want, please write a subnet declaration
Oct 18 20:40:37 jez-ubuntu dhcpd: in your dhcpd.conf file for the network segment
Oct 18 20:40:37 jez-ubuntu dhcpd: to which interface eth1 is attached. **
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd:
Oct 18 20:40:37 jez-ubuntu dhcpd: Not configured to listen on any interfaces!
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info> (eth0): device state change: 1 -> 2
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info> (eth0): bringing up device.
Oct 18 20:40:39 jez-ubuntu NetworkManager: <info> (eth0): preparing device.
[...]正如您所看到的,dhcpd似乎运行在NetworkManager之前,这就是我的eth0 (internet)和eth1 (家庭网络)接口的设置。您可能会认为这与rcX.d符号链接名有关,而dhcpd是在NetworkManager之前命名的。事实并非如此。我的dhcp 3- server符号链接名为'S99dhcp3-server‘,网络管理器符号链接名为'S50NetworkManager',因此它应该在dhcp服务器之前启动。此外,如果我实际上是从命令行‘/etc/init.d/dhcp3 3-server’.服务器运行正常!只有在启动时才会失败!
为什么它说它没有配置成在任何接口上侦听?在我的引导脚本运行完之后,网络管理器不会将接口eth0和eth1升级吗?如果是这样,那又有什么用呢?当然,其他脚本需要这些接口在启动时可用吗?下面是我的/etc/dhcp3 3/dhcpd.conf文件:
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 87.194.0.51;
option ip-forwarding off;
range dynamic-bootp 192.168.0.100 192.168.0.254;
default-lease-time 21600;
max-lease-time 43200;
}和我的/etc/default/dhcp3 3-服务器文件:
# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/dhcp3-server by the maintainer scripts
#
# This is a POSIX shell fragment
#
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth1"据我所知,这些都是正确的。有什么想法吗?
发布于 2009-10-18 21:46:49
好吧,我想我已经解决了这个问题。这也是Linux网络管理中的一个缺陷。
请参阅,网络管理器作为引导过程的一部分运行(即“S50NetworkManager”符号链接),并打开您的以太网接口。但是,它是异步执行的。这意味着网络管理器立即返回,这意味着它之后的脚本“确定-网络已经建立”。实际上,它还没有,网络管理器正坐在后台,正在着手建立网络。同时,运行后的引导脚本假设网络接口是可用的,这是一种竞争条件,这取决于网络管理器是否有时间设置它们。
这是一个可怕的情况,一个我很惊讶的错误还没有被修复。解决这个问题的一种方法是抛弃网络管理器,而是通过编辑/etc/网络/接口来设置您的接口。不过,我并没有这么做,而是尝试了这个bug报告中提出的丑陋的攻击:https://bugzilla.redhat.com/show_bug.cgi?id=486372。
在dhcp3 3-服务器的init.d脚本中,我在开始函数的开头添加了5秒的延迟(‘睡眠5'),这给了网络管理器足够的时间来设置网络接口(当然,仍然没有保证)--而且它工作了。现在,dhcpd在启动时就成功了。
正如在bugzilla.redhat.com上的bug #486372和#447442中详细介绍的那样,这要么是一个带有网络管理器的bug(它应该阻塞直到其有线网络接口可用为止),要么是使用dhcpd (应该对其进行更新以等待网络接口可用,而不仅仅是崩溃)。不过,这绝对是一种错误。
发布于 2010-07-15 10:12:52
您可以修改/etc/网络/接口如下:
iface eth1 inet static
address 192.168.50.1
netmask 255.255.255.0
up service dhcp3-server restart因此,dhcp3 3-服务器将在网络接口(eth1)真正启动后启动。
发布于 2017-05-10 14:05:55
以下是要验证是否存在主题错误的点列表:
/etc/default/isc-dhcp-server
文件来标识接口名,唯一的是提供动态地址(它不再是系统的所有接口,而是只在这个文件中提到)。请确保至少定义了一个接口(不再需要eth0 ):
INTERFACES="enp0s31f6"/etc/网络/接口
通过提供下列设置块:
# Define the static address and set it to serve with DHCP. Link it to the existing interface.
iface enp0s31f6 inet static
address 10.20.0.1
netmask 255.255.255.240
#below are optional settings
#gateway 192.168.100.251
#dns-nameservers 8.8.8.8为所选接口配置静态地址后,请确保它是可用的,使用以下命令(通过重新启动网络)分配up和定义的地址:
sudo service networking restart否则isc-dhcpd-server将拒绝运行。
/etc/dhcp/dhcpd.conf
通过为接口地址提供单独的块定义(至少一个)(所选接口静态IP必须与配置的子网匹配):
subnet 10.20.0.0 netmask 255.255.255.0 {
range 10.20.0.10 10.20.0.100;
option subnet-mask 255.255.255.0;
option routers 10.20.0.1;
option broadcast-address 10.20.0.255;
option domain-name-servers 192.168.100.254, 8.8.8.8;
}只需遵守所有3条规则,就可以使DHCP服务在您的Ubuntu上工作(在16.04版本上得到解决和验证)
最后,现在是通过执行命令启动isc-dhcpd-server的时候了:
sudo service isc-dhcp-server start若要验证配置成功,请使用另一个命令:
sudo service isc-dhcp-server status并查看以下几行,以确认成功:
● isc-dhcp-server.service - ISC DHCP IPv4 server
Active: active (running) since Wed 2017-05-10 15:28:13 CEST; 29min ago
May 10 15:28:13 system-P50 dhcpd[26869]: Listening on LPF/enp0s31f6/0a:3e:47:75:17:a8/10.20.0.0/24https://serverfault.com/questions/75702
复制相似问题