前言:
Ubuntu從17.10開始,已放棄在/etc/network/interfaces里配置IP地址,即使配置也不會生效,而是改成netplan方式,配置寫在/etc/netplan/01-netcfg.yaml或者類似名稱的yaml文件里;
Ubuntu 16.04
- 編輯配置文件:/etc/network/interfaces
- 添加相應IP地址信息如
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
保存退出。
- 保存退出
- 重啟網卡,使得配置生效 /etc/init.d/networking restart
注:備用命令1:sudo ifdown eth1 && sudo ifup eth1
備用命令2:service network restart
可用命令ifconfig -all 查看當前使用的網卡名稱;
- 驗證是否配置成功 ifconfig -a
Ubuntu 18.04
Ubuntu從17.10開始,已放棄在/etc/network/interfaces里配置IP地址,即使配置也不會生效,而是改成netplan方式,配置寫在/etc/netplan/01-netcfg.yaml或者類似名稱的yaml文件里,如下:
VMware14里安裝的Ubuntu18.04.1 Desktop版本下的配置文件名:
- 編輯配置文件:vim /etc/netplan/50-cloud-init.yaml
- 添加相應IP地址信息如
- 保存退出
- 執行 netplan apply 命令,讓配置直接生效。
- 驗證是否配置成功 ifconfig -a
這里有幾點需要注意:
1、Ubuntu 18.04.1 Desktop版本配置的時候需要將renderer: NetworkManager一行注釋掉,否則netplan命令無法生效;
2、配置信息要嚴格按照yaml語言的語法格式,每個配置項使用空格縮進表示層級關系;縮進不允許使用tab,只允許空格;縮進的空格數不重要,只要相同層級的元素左對齊即可,否則netplan命令會報錯;3、對應配置項后跟着冒號,之后要接個空格,否則netplan命令也會報錯。
擴展
重新啟停以太網卡命令:
>> ifconfig ens33 down
>> ifconfig ens33 up
=============================
如何在 Linux 上使用網絡配置工具 Netplan
netplan 是一個命令行工具,用於在某些 Linux 發行版上配置網絡。
多年以來 Linux 管理員和用戶們以相同的方式配置他們的網絡接口。例如,如果你是 Ubuntu 用戶,你能夠用桌面 GUI 配置網絡連接,也可以在 /etc/network/interfaces
文件里配置。配置相當簡單且可以奏效。在文件中配置看起來就像這樣:
auto enp10s0
iface enp10s0 inet static
address 192.168.1.162
netmask 255.255.255.0
gateway 192.168.1.100
dns-nameservers 1.0.0.1,1.1.1.1
保存並關閉文件。使用命令重啟網絡:
sudo systemctl restart networking
或者,如果你使用不帶 systemd 的發行版,你可以通過老辦法來重啟網絡:
sudo /etc/init.d/networking restart
你的網絡將會重新啟動,新的配置將會生效。
這就是多年以來的做法。但是現在,在某些發行版上(例如 Ubuntu Linux 18.04),網絡的配置與控制發生了很大的變化。不需要那個 interfaces
文件和 /etc/init.d/networking
腳本,我們現在轉向使用 Netplan。Netplan 是一個在某些 Linux 發行版上配置網絡連接的命令行工具。Netplan 使用 YAML 描述文件來配置網絡接口,然后,通過這些描述為任何給定的呈現工具生成必要的配置選項。
我將向你展示如何在 Linux 上使用 Netplan 配置靜態 IP 地址和 DHCP 地址。我會在 Ubuntu Server 18.04 上演示。有句忠告,你創建的 .yaml 文件中的縮進必須保持一致,否則將會失敗。你不用為每行使用特定的縮進間距,只需保持一致就行了。
新的配置文件
打開終端窗口(或者通過 SSH 登錄進 Ubuntu 服務器)。你會在 /etc/netplan
文件夾下發現 Netplan 的新配置文件。使用 cd /etc/netplan
命令進入到那個文件夾下。一旦進到了那個文件夾,也許你就能夠看到一個文件:
01-netcfg.yaml
你可以創建一個新的文件或者是編輯默認文件。如果你打算修改默認文件,我建議你先做一個備份:
sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
備份好后,就可以開始配置了。
網絡設備名稱
在你開始配置靜態 IP 之前,你需要知道設備名稱。要做到這一點,你可以使用命令 ip a
,然后找出哪一個設備將會被用到(圖 1)。
圖 1:使用 ip a 命令找出設備名稱
我將為 ens5 配置一個靜態的 IP。
配置靜態 IP 地址
使用命令打開原來的 .yaml 文件:
sudo nano /etc/netplan/01-netcfg.yaml
文件的布局看起來就像這樣:
network:
Version: 2
Renderer: networkd
ethernets:
DEVICE_NAME:
Dhcp4: yes/no
Addresses: [IP/NETMASK]
Gateway: GATEWAY
Nameservers:
Addresses: [NAMESERVER, NAMESERVER]
其中:
DEVICE_NAME
是需要配置設備的實際名稱。yes
/no
代表是否啟用 dhcp4。IP
是設備的 IP 地址。NETMASK
是 IP 地址的掩碼。GATEWAY
是網關的地址。NAMESERVER
是由逗號分開的 DNS 服務器列表。
這是一份 .yaml 文件的樣例:
network:
version: 2
renderer: networkd
ethernets:
ens5:
dhcp4: no
addresses: [192.168.1.230/24]
gateway4: 192.168.1.254
nameservers:
addresses: [8.8.4.4,8.8.8.8]
編輯上面的文件以達到你想要的效果。保存並關閉文件。
注意,掩碼已經不用再配置為 255.255.255.0
這種形式。取而代之的是,掩碼已被添加進了 IP 地址中。
測試配置
在應用改變之前,讓我們測試一下配置。為此,使用命令:
sudo netplan try
上面的命令會在應用配置之前驗證其是否有效。如果成功,你就會看到配置被接受。換句話說,Netplan 會嘗試將新的配置應用到運行的系統上。如果新的配置失敗了,Netplan 會自動地恢復到之前使用的配置。成功后,新的配置就會被使用。
應用新的配置
如果你確信配置文件沒有問題,你就可以跳過測試環節並且直接使用新的配置。它的命令是:
sudo netplan apply
此時,你可以使用 ip a 看看新的地址是否正確。
配置 DHCP
雖然你可能不會配置 DHCP 服務,但通常還是知道比較好。例如,你也許不知道網絡上當前可用的靜態 IP 地址是多少。你可以為設備配置 DHCP,獲取到 IP 地址,然后將那個地址重新配置為靜態地址。
在 Netplan 上使用 DHCP,配置文件看起來就像這樣:
network:
version: 2
renderer: networkd
ethernets:
ens5:
Addresses: []
dhcp4: true
optional: true
保存並退出。用下面命令來測試文件:
sudo netplan try
Netplan 應該會成功配置 DHCP 服務。這時你可以使用 ip a
命令得到動態分配的地址,然后重新配置靜態地址。或者,你可以直接使用 DHCP 分配的地址(但看看這是一個服務器,你可能不想這樣做)。
也許你有不只一個的網絡接口,你可以命名第二個 .yaml 文件為 02-netcfg.yaml
。Netplan 會按照數字順序應用配置文件,因此 01 會在 02 之前使用。根據你的需要創建多個配置文件。
就是這些了
不管怎樣,那些就是所有關於使用 Netplan 的東西了。雖然它對於我們習慣性的配置網絡地址來說是一個相當大的改變,但並不是所有人都用的慣。但這種配置方式值得一提……因此你會適應的。
在 Linux Foundation 和 edX 上通過 “Introduction to Linux” 課程學習更多關於 Linux 的內容。