如何僅在介面 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 必須連接到 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