首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu - dhcp服务器“未配置为在任何接口上侦听”

Ubuntu - dhcp服务器“未配置为在任何接口上侦听”
EN

Server Fault用户
提问于 2009-10-18 20:05:38
回答 8查看 63K关注 0票数 6

我在这件事上束手无策,我已经试了好几个小时才把这件事办好,但我很为难。希望你们中有人能帮上忙。:-)

我试图让dhcp3 3服务器在Ubuntu上工作。它已安装完毕,并正确安装,以便在rc2、3、4、5.d运行级别中运行。在引导时,它的init.d脚本可以运行,而在syslog中,我得到以下内容:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
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-服务器文件:

代码语言:javascript
复制
# 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"

据我所知,这些都是正确的。有什么想法吗?

EN

回答 8

Server Fault用户

回答已采纳

发布于 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 (应该对其进行更新以等待网络接口可用,而不仅仅是崩溃)。不过,这绝对是一种错误。

票数 4
EN

Server Fault用户

发布于 2010-07-15 10:12:52

您可以修改/etc/网络/接口如下:

代码语言:javascript
复制
iface eth1 inet static
  address 192.168.50.1
  netmask 255.255.255.0
  up service dhcp3-server restart

因此,dhcp3 3-服务器将在网络接口(eth1)真正启动后启动。

票数 4
EN

Server Fault用户

发布于 2017-05-10 14:05:55

以下是要验证是否存在主题错误的点列表:

  1. isc-dhcpd-server正在查看内部:

/etc/default/isc-dhcp-server

文件来标识接口名,唯一的是提供动态地址(它不再是系统的所有接口,而是只在这个文件中提到)。请确保至少定义了一个接口(不再需要eth0 ):

代码语言:javascript
复制
INTERFACES="enp0s31f6"
  1. 如果没有分配静态IP地址,将不接受上面提到的接口(在我的示例中为enp0s31f6)提供动态分配的IP地址。地址分配以下列方式完成:

/etc/网络/接口

通过提供下列设置块:

代码语言:javascript
复制
# 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和定义的地址:

代码语言:javascript
复制
sudo service networking restart

否则isc-dhcpd-server将拒绝运行。

  1. isc-dhcpd-server将只提供具有

/etc/dhcp/dhcpd.conf

通过为接口地址提供单独的块定义(至少一个)(所选接口静态IP必须与配置的子网匹配):

代码语言:javascript
复制
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的时候了:

代码语言:javascript
复制
sudo service isc-dhcp-server start

若要验证配置成功,请使用另一个命令:

代码语言:javascript
复制
sudo service isc-dhcp-server status

并查看以下几行,以确认成功:

代码语言:javascript
复制
● 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/24
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/75702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档