在 Ubuntu 18.04 LTS 中設定 IP 地址的方法和以往使用的設定方法有很大的不同。和舊版本的不同之處在於,Ubuntu 18.04 使用 Netplan 來設定 IP 地址,Netplan 是一個新的命令列網路設定工具。其實在 Ubuntu 17.10 的時候 Ubuntu 開發者就已經介紹過 Netplan 了。接下來要介紹的新的 IP 設定方法不會再用到 /etc/network/interfaces
這個檔案,取而代之的是一個 YAML 檔案。預設的 Netplan 組態檔一般在 /etc/netplan
目錄下。 在這篇教學中,我們會去學習在 Ubuntu 18.04 LTS 的最小化伺服器中設定靜態 IP 和動態 IP 。
首先先找到 Netplan 預設的網路組態檔所在之處:
$ ls /etc/netplan/50-cloud-init.yaml
我們可以看到,預設的網路組態檔是 50-cloud-init.yaml
,這是一個 YAML 檔案。
然後我們再看一下這個檔案的內容是什麼:
$ cat /etc/netplan/50-cloud-init.yaml
我在之前安裝 Ubuntu 18.04 的時候為了從 DHCP 伺服器獲取 IP 地址已經已經做過了網絡卡的相關設定,所以詳細設定直接看下圖:
可以看到這邊有兩個網絡卡,分別是 enp0s3
和 enp0s8
,並且這兩個網絡卡都設定為從 DHCP 伺服器中獲取 IP。
現在我們給這兩個網絡卡都設定為靜態 IP 地址,先用任意一種編輯器來編輯組態檔。
$ sudo nano /etc/netplan/50-cloud-init.yaml
接下來我們分別新增 IP 地址、子網掩碼、閘道器、DNS 伺服器等設定。分別用 192.168.225.50
作為網絡卡 enp0s3
的 IP 地址, 192.168.225.51
作為網絡卡 enp0s8
的 IP 地址, 192.168.225.1
作為閘道器地址, 255.255.255.0
作為子網掩碼。然後用 8.8.8.8
、 8.8.4.4
這兩個 DNS 伺服器 IP。
要注意的一點是,在 Ubuntu 18.04 裡,這個組態檔的每一行都必須靠空格來縮排,不能用 TAB
來代替,否則設定會不起作用。如上圖所示的組態檔中每行的縮排都是靠空格鍵實現的。
同時,在 Ubuntu 18.04 中,我們定義子網掩碼的時候不是像舊版本的那樣把 IP 和子網掩碼分成兩項設定。在舊版本的 Ubuntu 裡,我們一般設定的 IP 和子網掩碼是這樣的:
address = 192.168.225.50netmask = 255.255.255.0
而在 netplan 中,我們把這兩項合併成一項,就像這樣:
addresses : [192.168.225.50/24]
設定完成之後儲存並關閉組態檔。然後用下面這行命令來應用剛才的設定:
$ sudo netplan apply
如果在應用設定的時候有出現問題的話,可以通過如下的命令來檢視剛才設定的內容出了什麼問題。
$ sudo netplan --debug apply
這行命令會輸出這些 debug 資訊:
** (generate:1556): DEBUG: 09:14:47.220: Processing input file //etc/netplan/50-cloud-init.yaml..** (generate:1556): DEBUG: 09:14:47.221: starting new processing pass** (generate:1556): DEBUG: 09:14:47.221: enp0s8: setting default backend to 1** (generate:1556): DEBUG: 09:14:47.222: enp0s3: setting default backend to 1** (generate:1556): DEBUG: 09:14:47.222: Generating output files..** (generate:1556): DEBUG: 09:14:47.223: NetworkManager: definition enp0s8 is not for us (backend 1)** (generate:1556): DEBUG: 09:14:47.223: NetworkManager: definition enp0s3 is not for us (backend 1)DEBUG:netplan generated networkd configuration exists, restarting networkdDEBUG:no netplan generated NM configuration existsDEBUG:device enp0s3 operstate is up, not repluggingDEBUG:netplan triggering .link rules for enp0s3DEBUG:device lo operstate is unknown, not repluggingDEBUG:netplan triggering .link rules for loDEBUG:device enp0s8 operstate is up, not repluggingDEBUG:netplan triggering .link rules for enp0s8
如果設定正常且生效的話,我們可以用下面這個命令來檢視一下 ip:
$ ip addr
在我的 Ubuntu 18.04 中設定完之後執行命令輸出的資訊如下:
到此為止,我們已經成功地在 Ubuntu 18.04 LTS 中用 Netplan 完成了靜態 IP 的設定。
更多關於 Netplan 的資訊,可以在用 man 命令在手冊中檢視:
$ man netplan
其實組態檔中的初始設定就是動態 IP 的設定,所以你想要使用動態 IP 的話不需要再去做任何的設定操作。如果你已經設定了靜態 IP 地址,想要恢復之前動態 IP 的設定,就把在上面靜態 IP 設定中所新增的相關設定項刪除,把整個組態檔恢復成上面的圖 1 所示的樣子就行了。
現在你已經學會在 Ubuntu 18.04 中設定靜態和動態 IP 地址了。個人而言,我其實不太喜歡這種方式,舊的設定方式反而來得簡單。你們覺得呢 ?