我有几个网络接口 - 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