在 Ubuntu 20.04 上使用 clevis/tang 時如何刪除分配的 dhcp ip
我在 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 地址也從界面上消失了!