Systemd
在 /etc/network/interfaces 或類似中配置 dummy0 的現代方法?
我正在尋找一種干淨、“現代”的方式來配置、啟動和停止
dummy0
網路介面(從dummy
核心模組)。我
/etc/network/interfaces
曾經在較舊的系統上工作,但現在在以下情況下靜默失敗ifup dummy0
:iface dummy0 inet static address 10.10.0.1 netmask 255.255.255.0 # post-up ip link set dummy0 multicast on
取消註釋該
post-up
行會產生此錯誤(顯示它執行但從未創建介面):dummy0: post-up cmd 'ip link set dummy0 multicast on'failed: returned 1 (Cannot find device "dummy0")
這個 shell 腳本執行良好,但不是一個乾淨的配置文件:
#!/bin/sh sudo ip link add dummy0 type dummy sudo ip link set dummy0 multicast on sudo ip addr add 10.10.0.1/24 dev dummy0 sudo ip link set dummy0 up
我的意圖是****手動和系統服務一起使用它:
[Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ifup dummy0 ExecStop=/sbin/ifdown dummy0 StandardOutput=syslog+console
環境:
- 庫本圖 18.04.2 LTS
- 網路管理器 1.10.6
- iproute2 4.15.0
- ifupdown2 1.0
- systemd 237 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 預設層次結構=混合
問題:
- 如何將 shell 腳本轉換為工作
/etc/network/interfaces
配置?- 有沒有其他清潔劑或推薦的方法來做到這一點?
該界面之前沒有“創建”;ifupdown 依靠它在載入“虛擬”核心模組後立即神奇地出現。這是舊的兼容性行為,並且(AFAIIRC)它還乾擾了相同介面名稱的顯式創建,因此它通過模組參數被禁用。現在 dummy0 必須像創建 dummy1 或 dummyfoobar 一樣創建。
您應該能夠在“pre-up”命令中創建介面:
iface dummy0 inet static address 10.10.0.1/24 pre-up ip link add dummy0 type dummy
如果您還在此系統上使用 NetworkManager,則最近的 NM 版本支持虛擬介面。
nmcli con add type dummy ifname dummy0 ipv4.addresses 10.10.0.1/24 [...]
如果介面應該在啟動時創建並永久保留,可以使用 systemd-networkd 來完成(一個 .netdev 配置來創建設備,一個 .network 配置來設置 IP 地址)。然而,’networkctl’ 仍然沒有手動的“up”或“down”子命令。