歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何在 Linux 上從 NetworkManager 切換為 systemd-network

如何在 Linux 上從 NetworkManager 切換為 systemd-network

日期:2017/2/28 13:56:24   编辑:Linux教程

在 Linux 世界裡,對 systemd 的采用一直是激烈爭論的主題,它的支持者和反對者之間的戰火仍然在燃燒。到了今天,大部分主流 Linux 發行版都已經采用了 systemd 作為默認的初始化(init)系統。

正如其作者所說,作為一個 “從未完成、從未完善、但一直追隨技術進步” 的系統,systemd 已經不只是一個初始化進程,它被設計為一個更廣泛的系統以及服務管理平台,這個平台是一個包含了不斷增長的核心系統進程、庫和工具的生態系統。

systemd 的其中一部分是 systemd-networkd,它負責 systemd 生態中的網絡配置。使用 systemd-networkd,你可以為網絡設備配置基礎的 DHCP/靜態 IP 網絡。它還可以配置虛擬網絡功能,例如網橋、隧道和 VLAN。systemd-networkd 目前還不能直接支持無線網絡,但你可以使用 wpa_supplicant 服務配置無線適配器,然後把它和 systemd-networkd 聯系起來。

在很多 Linux 發行版中,NetworkManager 仍然作為默認的網絡配置管理器。和 NetworkManager 相比,systemd-networkd 仍處於積極的開發狀態,還缺少一些功能。例如,它還不能像 NetworkManager 那樣能讓你的計算機在任何時候通過多種接口保持連接。它還沒有為更高層面的腳本編程提供 ifup/ifdown 鉤子函數。但是,systemd-networkd 和其它 systemd 組件(例如用於域名解析的 resolved、NTP 的timesyncd,用於命名的 udevd)結合的非常好。隨著時間增長,systemd-networkd只會在 systemd 環境中扮演越來越重要的角色。

如果你對 systemd-networkd 的進步感到高興,從 NetworkManager 切換到 systemd-networkd 是值得你考慮的一件事。如果你強烈反對 systemd,對 NetworkManager 或基礎網絡服務感到很滿意,那也很好。

但對於那些想嘗試 systemd-networkd 的人,可以繼續看下去,在這篇指南中學會在 Linux 中怎麼從 NetworkManager 切換到 systemd-networkd。

需求

systemd 210 及其更高版本提供了 systemd-networkd。因此諸如 Debian 8 "Jessie" (systemd 215)、 Fedora 21 (systemd 217)、 Ubuntu 15.04 (systemd 219) 或更高版本的 Linux 發行版和 systemd-networkd 兼容。

對於其它發行版,在開始下一步之前先檢查一下你的 systemd 版本。

  1. $ systemctl--version

從 NetworkManager 切換到 Systemd-networkd

從 NetworkManager 切換到 systemd-networkd 其實非常簡答(反過來也一樣)。

首先,按照下面這樣先停用 NetworkManager 服務,然後啟用 systemd-networkd。

  1. $ sudosystemctl disable NetworkManager
  2. $ sudosystemctl enable systemd-networkd

你還要啟用 systemd-resolved 服務,systemd-networkd用它來進行域名解析。該服務還實現了一個緩存式 DNS 服務器。

  1. $ sudosystemctl enable systemd-resolved
  2. $ sudosystemctl start systemd-resolved

當啟動後,systemd-resolved 就會在 /run/systemd 目錄下某個地方創建它自己的 resolv.conf。但是,把 DNS 解析信息存放在 /etc/resolv.conf 是更普遍的做法,很多應用程序也會依賴於 /etc/resolv.conf。因此為了兼容性,按照下面的方式創建一個到 /etc/resolv.conf 的符號鏈接。

  1. $ sudorm/etc/resolv.conf
  2. $ sudoln-s /run/systemd/resolve/resolv.conf /etc/resolv.conf

用 systemd-networkd 配置網絡連接

要用 systemd-networkd 配置網絡服務,你必須指定帶.network 擴展名的配置信息文本文件。這些網絡配置文件保存到 /etc/systemd/network 並從這裡加載。當有多個文件時,systemd-networkd 會按照字母順序一個個加載並處理。

首先創建 /etc/systemd/network 目錄。

  1. $ sudomkdir/etc/systemd/network

DHCP 網絡

首先來配置 DHCP 網絡。對於此,先要創建下面的配置文件。文件名可以任意,但記住文件是按照字母順序處理的。

  1. $ sudovi/etc/systemd/network/20-dhcp.network

  1. [Match]
  2. Name=enp3*
  3. [Network]
  4. DHCP=yes

正如你上面看到的,每個網絡配置文件包括了一個或多個 “sections”,每個 “section”都用 [XXX] 開頭。每個 section 包括了一個或多個鍵值對。[Match] 部分決定這個配置文件配置哪個(些)網絡設備。例如,這個文件匹配所有名稱以 ens3 開頭的網絡設備(例如 enp3s0、 enp3s1、 enp3s2 等等)對於匹配的接口,然後啟用 [Network] 部分指定的 DHCP 網絡配置。

靜態 IP 網絡

如果你想給網絡設備分配一個靜態 IP 地址,那就新建下面的配置文件。

  1. $ sudovi/etc/systemd/network/10-static-enp3s0.network

  1. [Match]
  2. Name=enp3s0
  3. [Network]
  4. Address=192.168.10.50/24
  5. Gateway=192.168.10.1
  6. DNS=8.8.8.8

正如你猜測的, enp3s0 接口地址會被指定為 192.168.10.50/24,默認網關是 192.168.10.1, DNS 服務器是 8.8.8.8。這裡微妙的一點是,接口名 enp3s0 事實上也匹配了之前 DHCP 配置中定義的模式規則。但是,根據詞匯順序,文件 "10-static-enp3s0.network" 在 "20-dhcp.network" 之前被處理,對於 enp3s0 接口靜態配置比 DHCP 配置有更高的優先級。

一旦你完成了創建配置文件,重啟 systemd-networkd 服務或者重啟機器。

  1. $ sudosystemctl restart systemd-networkd

運行以下命令檢查服務狀態:

  1. $ systemctl status systemd-networkd
  2. $ systemctl status systemd-resolved

用 systemd-networkd 配置虛擬網絡設備

systemd-networkd 同樣允許你配置虛擬網絡設備,例如網橋、VLAN、隧道、VXLAN、綁定等。你必須在用 .netdev 作為擴展名的文件中配置這些虛擬設備。

這裡我展示了如何配置一個橋接接口。

Linux 網橋

如果你想創建一個 Linux 網橋(br0) 並把物理接口(eth1) 添加到網橋,你可以新建下面的配置。

  1. $ sudovi/etc/systemd/network/bridge-br0.netdev

  1. [NetDev]
  2. Name=br0
  3. Kind=bridge

然後按照下面這樣用 .network 文件配置網橋接口 br0 和從接口 eth1。

  1. $ sudovi/etc/systemd/network/bridge-br0-slave.network

  1. [Match]
  2. Name=eth1
  3. [Network]
  4. Bridge=br0

  1. $ sudovi/etc/systemd/network/bridge-br0.network

  1. [Match]
  2. Name=br0
  3. [Network]
  4. Address=192.168.10.100/24
  5. Gateway=192.168.10.1
  6. DNS=8.8.8.8

最後,重啟 systemd-networkd。

  1. $ sudosystemctl restart systemd-networkd

你可以用 brctl 工具 來驗證是否創建好了網橋 br0。

總結

當 systemd 誓言成為 Linux 的系統管理器時,有類似 systemd-networkd 的東西來管理網絡配置也就不足為奇。但是在現階段,systemd-networkd 看起來更適合於網絡配置相對穩定的服務器環境。對於桌面/筆記本環境,它們有多種臨時有線/無線接口,NetworkManager 仍然是比較好的選擇。

對於想進一步了解 systemd-networkd 的人,可以參考官方man 手冊了解完整的支持列表和關鍵點。


via: http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html

作者:Dan Nanni 譯者:ictlyh 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

Copyright © Linux教程網 All Rights Reserved