首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >isc-dhcp-server和systemd-networkd

isc-dhcp-server和systemd-networkd
EN

Ask Ubuntu用户
提问于 2019-07-03 13:45:52
回答 1查看 2.4K关注 0票数 1

systemd-networkd实现DHCP服务器还是与isc-dhcp-服务器一起工作?我试图使用18.04 LTS服务器来实现网关/路由器。我正在阅读有关服务的手册页。

EN

回答 1

Ask Ubuntu用户

发布于 2021-01-20 21:03:17

我有一个新的经验,我想这是相关的-它似乎在我看来,我发现的陷阱,没有足够的记录。不是以一个完整的“用户故事”的形式,从A到Z。因此我的这种反应。

对于一个特定的用例,我的目标是构建一台小型PC机,作为一种“数据采集器/记录器”,具有两个物理以太网接口,允许您永久地附加“带有以太网端口的传感器”,并根据需要可选地附加一台笔记本PC。这三台机器将构成一个孤立的、自给自足的网络,没有连接到野生互联网的上行链路。“传感器”和笔记本电脑都希望成为DHCP客户端,而笔记本电脑需要在与“传感器”相同的L2网络中进行临时维护(人工操作员/旅行技术人员可能想看一看)。

所以我安装了Debian基础系统(我知道,这是一个Ubuntu论坛,但我相信我的gotcha的原理同样适用)在一个带有两个物理LAN端口的小型PC上,然后继续在盒子上配置一个软桥,为桥的内部接口分配一个静态IP地址,并运行ISC dhcpd绑定到同一个桥接口。

这一次,由于我想坚持Linux操作系统中配置网络的当前/现代/规范方式(默认使用systemd ),我决定使用systemd。(我不太喜欢NetworkManager,它似乎将X作为一个实际的依赖项.)因此,对于systemd,我在/etc/systemd/network/下生成了以下一组文件:

br0.netdev :

代码语言:javascript
复制
[NetDev]
Name=br0
Kind=bridge
#MACAddress=00:d0:c9:cb:af:df

eth0.net :

代码语言:javascript
复制
[Match]
Name=eth0

[Network]
Bridge=br0

eth1.网络:

代码语言:javascript
复制
[Match]
Name=eth1

[Network]
Bridge=br0

lan0.network .网络:

代码语言:javascript
复制
[Match]
Name=br0

# All you need really is either DHCP=ipv4 or the Address= line. 
# The rest is optional.
[network]
#DHCP=ipv4
Address=192.168.100.1/24
#Gateway=192.168.100.100
#DNS=192.168.100.1

是的,请原谅我每个人的罪过:我在内核命令行中添加了net.ifnames=0

因此,我做了所有这些,我开始想,为什么我的接口不会出现在启动。我花了一段时间才意识到,实际上我的配置文件中没有语法错误。相反,当我试图使我的配置工作时,我将我的Linux机器从任何网络中分离出来=两个以太网端口都有它们的链接。注意,Linux软桥的实例还总结了其组成物理端口的链接状态,因此在我的示例中,br0 netdevice也没有处于“运行”状态。

事实证明,只将IP地址分配给当前具有链接=的接口,当它达到“运行”状态时。而且,如前所述,将物理接口隐藏在桥后无助于解决办法!

事实证明,这是我的主要缺陷--因为我确实希望这台机器能够可靠地启动两个没有连接的以太网端口,并提供br0接口,并分配一个IP地址。关键的原因是isc-dhcp-server在它应该在启动时绑定的接口上需要一个IP地址,否则它会立即以错误终止,抱怨“eth0没有子网声明(没有IPv4地址)”,然后“没有配置为在任何接口上侦听!”而且,是的,我有INTERFACESv4="br0"/etc/default/isc-dhcp-server。就ISC dhcpd而言,接口不需要处于“运行”状态(链接),而是应该“从管理上向上”,并分配一个IP地址。

无论我用哪种方式来解决问题,我都没有办法(除了黑客攻击它的源代码)强迫systemd在引导时只分配IP地址,而不管链接状态如何。

因此,过了一段时间,我禁用了systemd-networkd服务,并返回到受欢迎的遗留配置文件,即古老的/etc/network/interfaces

代码语言:javascript
复制
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface, and the physical netdevices.
# Cannot mention br0 right here.
auto lo eth0 eth1
iface lo inet loopback

Allow-hotplug eth0
Allow-hotplug eth1

iface eth0 inet manual

iface eth1 inet manual

#iface br0 inet dhcp
iface br0 inet static
        bridge_ports eth0 eth1
        bridge_waitport 0
        address 192.168.100.1
        netmask 255.255.255.0
        broadcast 192.168.100.255
        #gateway 192.168.100.100

# The netdevice name mentioned in the "auto" command
# may only refer to a netdevice that already exists.
# Thus, auto br0 must follow the declaration of this netdevice.
# Note that for comparison, physical devices exist since kernel boot.
auto br0

在引导时,写着auto <interface>的行使接口上升。如果没有auto子句,接口将永远等待一个"ifup",并且将在管理上保持关闭。

还有一个问题,涉及到我的要求,即机器必须能够在两个以太分离的情况下启动(并启动DHCP)。机器在启动时会挂起,而systemd则等待接口出现。解决办法是:

代码语言:javascript
复制
systemctl disable systemd-networkd-wait-online.service

不确定在仍然使用systemd时是否需要这样做,甚至在我恢复到/etc/network/接口之后也不确定。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1155683

复制
相关文章

相似问题

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