Ubuntu

在 Ubuntu 20.04 上使用 clevis/tang 時如何刪除分配的 dhcp ip

  • October 26, 2020

我在 Ubuntu 伺服器 (NBDE) 上使用 clevis/tang 解鎖我的驅動器。它工作正常,但即使我的伺服器配置為使用 /etc/netplan/01-netcfg.yaml 中的靜態 ip,我的網路介面也會偵聽啟動過程中的兩個 dhcp ip。啟動完成後如何刪除它?

我使用以下命令啟用了 clevis:

sudo apt install clevis clevis-systemd clevis-initramfs clevis-luks
sudo clevis luks bind -d /dev/sda3 sss '{"t": 1, "pins": {"tang": [{"url": "http://10.1.1.1:8888"},{"url": "http://10.2.2.2:8888"}]}}' 
sudo update-initramfs -u -k 'all'

重新啟動我的伺服器後,網路介面獲得了 3 個 ips!我在 /etc/netplan 中配置的靜態 ip 和兩個 dhcp ip。一個 dhcp ip 被 clevis 程序使用(我在我的 tang 伺服器上看到了一個踪跡)。另一個似乎是在 U 形夾過程完成後分配的。

我能夠製作 clevis 來刪除它使用的 dhcp ip。我注意到 at 的腳本/usr/share/initramfs-tools/scripts/local-bottom/clevis與 clevis git 儲存庫中的腳本不同。我iface=$(basename "$iface")if [ -e "$iface" ]; then.

但是我仍然在我的界面上使用一個無用的 dhcp ip。當我執行時netplan apply,systemd-networkd 甚至刷新 dhcp 租約,就像您可以在以下日誌提取中一樣:

Oct 22 12:04:56 testserver systemd[1]: Reloading.
Oct 22 12:04:56 testserver systemd[1]: /lib/systemd/system/dbus.socket:5: ListenStream= references a path below legacy directory /var/run/, updating /var/run/dbus/system_bus_socket → /run/dbus/system_bus_socket; please update the unit file accordingly.
Oct 22 12:04:56 testserver systemd[1]: systemd-networkd-wait-online.service: Succeeded.
Oct 22 12:04:56 testserver systemd[1]: Stopped Wait for Network to be Configured.
Oct 22 12:04:56 testserver systemd[1]: Stopping Network Service...
Oct 22 12:04:57 testserver systemd[1]: systemd-networkd.service: Succeeded.
Oct 22 12:04:57 testserver systemd[1]: Stopped Network Service.
Oct 22 12:04:57 testserver systemd[1]: Condition check resulted in OpenVSwitch configuration for cleanup being skipped.
Oct 22 12:04:57 testserver systemd[1]: Starting Network Service...
Oct 22 12:04:57 testserver systemd[1]: Condition check resulted in OpenVSwitch configuration for cleanup being skipped.
Oct 22 12:04:57 testserver systemd-networkd[1711]: eno3: Gained IPv6LL
Oct 22 12:04:57 testserver systemd-networkd[1711]: Enumeration completed
Oct 22 12:04:57 testserver systemd[1]: Started Network Service.
Oct 22 12:04:57 testserver systemd-networkd[1711]: eno3: IPv6 successfully enabled
Oct 22 12:04:57 testserver systemd-networkd[1711]: eno3: DHCPv4 address 10.1.1.71/21 via 10.1.0.1

但我在 netplan 配置中根本不使用 dhcp!

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
 version: 2
 #renderer: networkd
 ethernets:
   eno3:
     dhcp4: no
     addresses:
     - 10.1.0.99/21
     gateway4: 10.1.0.1
     nameservers:
       addresses:
       - 10.1.0.3
       - 10.1.0.33

當我啟動時netplan --debug apply,我看到dhcp4配置合併後啟用!?但與什麼合併?可以從/run/netplan/eno3.yaml? 在該文件中,我看到啟用了 dhcp 的動態網路配置。什麼會生成該文件?

似乎在 U 形夾腳本中有一個錯誤。編輯/usr/share/initramfs-tools/scripts/local-bottom/clevis.

搜尋:

for iface in /sys/class/net/*; do
   if [ -e "$iface" ]; then
       ip link  set   dev "$iface" down
       ip addr  flush dev "$iface"
       ip route flush dev "$iface"
   fi
done

用。。。來代替:

for iface in /sys/class/net/*; do
   if [ -e "$iface" ]; then
       iface=$(basename "$iface")
       ip link  set   dev "$iface" down
       ip addr  flush dev "$iface"
       ip route flush dev "$iface"

       if [ -f "/run/netplan/${iface}.yaml" ]; then
           rm "/run/netplan/${iface}.yaml"
       fi
   fi
done

使用以下命令重新生成 initramfs:update-initramfs -u -k 'all'然後重新啟動。

文件 /run/netplan/eno3.yaml 不見了,所有的檔 dhcp 地址也從界面上消失了!

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