Fedora Linux 36 的變化之一是全新安裝 不再支持用於配置網絡的 ifcfg 文件..這些是什麼,是什麼取代了它們?
一點歷史
在過去的美好時光,將 Linux 機器連接到網絡很容易。系統管理員將每個連接到網絡的接口卡的配置文件放在 /etc 目錄中。此配置文件描述了特定網絡的地址配置。 在 Fedora Linux 上,配置文件實際上是一個 shell 腳本片段,如下所示:
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet DEVICE=eth0 BOOTPROTO=dhcp
在啟動時運行的 shell 腳本會讀取文件並應用配置。簡單的。
但到 2004 年底,情況發生了變化。從字面上看,Wi-Fi 無處不在。當時的筆記本電腦可以快速連接到新網絡,USB 總線甚至可以在系統運行時插入和拔出有線網絡適配器。網絡配置變得比以往任何時候都更加動態,現有的網絡配置工具不再實用。救援就在這裡 網絡管理員.. 在 Fedora Linux 系統上,NetworkManager 使用以下設置:
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet DEVICE=eth0 BOOTPROTO=dhcp
你熟悉嗎?它應該。從一開始,NetworkManager 就打算使用現有的配置格式。事實上,你有一個插件可以在 NetworkManager 的內部配置模型和發行版的原生格式之間無縫轉換。 在 Fedora 中,這是上面提到的 ifcfg 文件。
讓我們仔細看看它們。
ifcfg 文件
傳統網絡服務,現在是 network-scripts 包的一部分,最初定義了 ifcfg 文件格式。該文件包含在一個名為 系統配置文件 這對於格式化非常有用。
隨著 NetworkManager 越來越受歡迎,您經常發現有必要表示舊網絡服務不支持的配置。鑑於使用 shell 腳本設置它們的性質,添加新設置並不是什麼大問題。未知的事物通常會被默默地忽略。 這是 NetworkManager 對 ifcfg 文件應該是什麼樣子的想法: nm-set-ifcfg-rh (5) 手動的。
一般來說,NetworkManager 努力創建一個與傳統網絡服務配合良好的 ifcfg 文件。但是,在某些情況下,這是不可能的。目前,NetworkManager 支持的網絡連接類型比傳統網絡服務所能配置的要多得多。 ..新格式現在用於表達舊格式無法表達的內容。這包括 VPN 連接、寬帶調製解調器等。
密鑰文件
新格式與 NetworkManager 的原生配置模型非常相似。
$ cat /etc/NetworkManager/system-connections/VPN.ovpn [connection] id=My VPN uuid=c85a7cdb-973b-491f-998d-b09a590af10e type=vpn [vpn] ca=/etc/pki/tls/certs/vpn-ca.pem connection-type=password remote=vpn.example.com username=lkundrak service-type=org.freedesktop.NetworkManager.openvpn [ipv6] method=auto never-default=true
任何熟悉 Linux 系統的人都應該立即熟悉實際的格式。這是一個“ini 文件”或“密鑰文件”。 一組純文本鍵/值對分組為部分,就像 ifcfg 文件使用的那樣。這個 nm-settings-ifcfg-keyfile (5) 該手冊是格式的完整文檔。
使用這種格式的主要優點是它非常類似於 NetworkManager 關於如何在內部和使用 D-Bus API 表示網絡配置的思考。如果不考慮世界年輕時設計的機制的怪癖,也不會受益於遠見,它很容易擴展。這意味著更少的代碼、更少的驚喜和更少的錯誤。
事實上,密鑰文件格式中沒有什麼是 ifcfg 文件無法表示的。 您可以表示一個簡單的有線連接,例如 VPN 或調製解調器。
遷移到密鑰文件
傳統的 Web 服務已經使用了很多年,但那個時代已經一去不復返了。 Fedora Linux 在許多版本之前都放棄了它,沒有它似乎沒有理由使用 ifcfg 文件。也就是說,對於新配置。 Fedora Linux 仍然支持 ifcfg 文件,但有一段時間它默認寫入密鑰文件。
從 Fedora Linux 36 開始,新安裝的 ifcfg 支持將不再存在。如果您仍在使用 ifcfg 文件,請不要擔心。現有系統將繼續升級。不過,您可以決定卸載它並將配置傳輸到密鑰文件。閱讀,了解如何。
如果您像我一樣,您在多年前使用密鑰和 ifcfg 文件的組合安裝了系統。確認方法如下。
$ nmcli -f TYPE,FILENAME,NAME conn TYPE FILENAME NAME ethernet /etc/sysconfig/network-scripts/ifcfg-eth0 eth0 wifi /etc/sysconfig/network-scripts/ifcfg-Guest Guest wifi /etc/NetworkManager/system-connections/Base48 Base48 vpn /etc/NetworkManager/system-connections/VPN.ovpn My VPN
這個例子展示了一個始終需要使用密鑰文件的 VPN 連接,並且可能是在 Fedora Linux 切換為默認寫入密鑰文件後創建的 Wi-Fi 連接。 也有使用 ifcfg 插件的以太網和 Wi-Fi 連接。讓我們看看如何將它們轉換為密鑰文件。
NetworkManager 命令行實用程序, 納米克里 (1)我得到了一個新的連接遷移命令,它修改了連接配置文件中使用的配置後端。
建議備份 /etc/sysconfig/network-scripts/ifcfg-* 文件,以防出現問題。備份完成後,您可以嘗試將單個連接遷移到另一個配置後端(默認為密鑰文件)。
$ nmcli connection migrate eth0 Connection 'eth0' (336aba93-1cd7-4cf4-8e90-e2009db3d4d0) successfully migrated.
它奏效了嗎?
$ nmcli -f TYPE,FILENAME,NAME conn TYPE FILENAME NAME ethernet /etc/NetworkManager/system-connections/eth0.nmc eth0 wifi /etc/sysconfig/network-scripts/ifcfg-Guest Guest wifi /etc/NetworkManager/system-connections/Base48 Base48 vpn /etc/NetworkManager/system-connections/VPN.ovpn My VPN
多好。我可以無緣無故找回嗎?
$ nmcli conn migrate --plugin ifcfg-rh eth0 Connection 'eth0' (336aba93-1cd7-4cf4-8e90-e2009db3d4d0) successfully migrated.
這太棒了。如果沒有其他選項,“連接遷移”命令可確保所有連接都使用密鑰文件後端。
$ nmcli conn migrate Connection '336aba93-1cd7-4cf4-8e90-e2009db3d4d0' (eth0) successfully migrated. Connection '3802a9bc-6ca5-4a17-9d0b-346f7212f2d3' (Red Hat Guest) successfully migrated. Connection 'a082d5a0-5e29-4c67-8b6b-09af1b8d55a0' (Base48) successfully migrated. Connection 'c85a7cdb-973b-491f-998d-b09a590af10e' (Oh My VPN) successfully migrated.
而已。現在系統沒有 ifcfg 文件,支持它們的配置後端也沒用了。您可以刪除它們。
# dnf remove NetworkManager-initscripts-ifcfg-rh …
現在系統像以前一樣工作,但現在它是最新的,我很滿意。