Systemd

在 /etc/network/interfaces 或類似中配置 dummy0 的現代方法?

  • April 21, 2020

我正在尋找一種干淨、“現代”的方式來配置、啟動和停止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 預設層次結構=混合

問題:

  1. 如何將 shell 腳本轉換為工作/etc/network/interfaces配置?
  2. 有沒有其他清潔劑或推薦的方法來做到這一點?

該界面之前沒有“創建”;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”子命令。

引用自:https://unix.stackexchange.com/questions/513578