如何仅在接口 eth1 上运行 DHCPcd

如何仅在接口 eth1 上运行 DHCPcd

我有几个网络接口 - eth0、eth1。ETH0 连接到隔离的本地网络(带交换机),有 2 个静态 IP 地址。它是使用/etc/network/interfaces文件配置的,一切运行良好。

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0

iface eth0 inet static
address 192.168.54.254
gateway 192.168.54.1
netmask 255.255.255.0
broadcast 192.168.0.255

auto eth0:1

iface eth0:1 inet static
address 192.168.168.110
gateway 192.168.168.1
netmask 255.255.255.0
broadcast 192.168.0.255

接口 ETH1 必须连接到互联网,并且需要使用 DHCP 从主路由器获取正确的 IP 地址。当我运行时,sudo systemctl status dhcpcd.service可以清楚地看到 dhcpcd 与 发生冲突/etc/network/interfaces

Jun 03 13:09:17 raspberrypi systemd[1]: Starting dhcpcd on all interfaces...
Jun 03 13:09:17 raspberrypi dhcpcd[1210]: Not running dhcpcd because /etc/network/interfaces
Jun 03 13:09:17 raspberrypi dhcpcd[1210]: defines some interfaces that will use a
Jun 03 13:09:17 raspberrypi dhcpcd[1210]: DHCP client or static address

但是,我找到了一个可行的解决方案,但我不确定它是否被视为最佳实践。当我执行时,sudo dhcpcd eth1我只能在 eth1 上启动 DHCP。我的计划是创建一个将sudo dhcpcd eth1在每次启动时执行的系统服务。

我在网上看到有人说可以执行,但是我没有这样的服务,并且出现了错误:sudo systemctl enable [email protected]

Failed to enable unit: Unit file [email protected] does not exist.

我创建自定义服务的方法是否sudo dhcpcd eth1正确?

答案1

不,你的方法不正确。/etc/network/interfaces默认情况下,Raspbian 使用 dhcpcd 而不是(已弃用)。但由于你已经通过该文件配置了静态 IP,因此你仍然可以添加eth1并为其启用 DHCP。即旧式,如下所示:

auto eth1
allow-hotplug eth1
iface eth1 inet dhcp

只需将这些行添加到末尾/etc/network/interfaces并重新启动即可。

这实际上是 Debian“制造者”认为的更好的方法,dhcpcd.conf 被认为是不安全的。它似乎还不允许以正常方式创建别名。

或者如果你更喜欢坚持使用 dhcpcd,你可以告诉它不要干扰 eth0,而只在 eth1 上配置 DHCP /etc/dhcpcd.conf

denyinterfaces eth0

另请参阅有关此问题的这个问题:https://raspberrypi.stackexchange.com/questions/45330/set-multiple-static-ip-in-dhcpcd-conf-raspbian-8-jessie

相关内容