Dhcp

如何僅在介面 eth1 上執行 DHCPcd

  • June 3, 2021

我有幾個網路介面——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 必須連接到 Internet,並且需要使用 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 dhcpcd@eth1.service,但是我沒有這樣的服務,報錯:

Failed to enable unit: Unit file dhcpcd@eth1.service does not exist.

我創建自定義服務的方法sudo dhcpcd eth1是否正確?

不,你的方法不正確。預設情況下, Raspbian 使用 dhcpcd 而不是/etc/network/interfaces(被認為已棄用)。但是由於您已經通過該文件配置了靜態 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

引用自:https://serverfault.com/questions/1065565