為了讓Linux可以使用或是提供網路服務,必須要設定Linux使其能夠連上網路。Linux可以透過圖形化桌面環境所提供的網路管理工具或是終端機的文字介面來輕鬆完成網路設定。



使用圖形使用者介面(GUI)設定Linux的網路連線

大多數的Linux桌面環境都有提供網路管理工具,可以很直覺地進行網路連線的設定。下圖即為Cinnamon的時間與時區設定視窗:

linux-network

linux-network

使用命令列介面(CLI)設定Linux的網路連線

顯示出所有的網路連線介面

如果不確定自己的系統擁有哪些網路連線介面,可以使用以下指令來查看:

ip link show

linux-network

在這裡簡單說明一下不同名稱的網路介面所代表的網路類型:

  • lo:即Loopback。它是一個虛擬的網路介面,可以透過這個介面在本機中與自己進行連線。
  • eth:使用電纜(cable)形成乙太網路(有線網路)的網路介面。
  • enp:同eth,用硬體連接的位置來命名。
  • eno:同eth,用主機板上的裝置的號碼來命名。
  • ens:同eth,用PCI-E裝置的號碼來命名。
  • enx:同eth,MAC地址來命名。
  • wlan:不使用電纜連線(無線網路)的網路介面。
  • wlp:同wlan,用硬體連接的位置來命名。
  • wlx:同wlan,MAC地址來命名。
  • usb:使用USB連線的網路介面。如手機透過USB分享行動網路給電腦時,就會使用這個介面。
  • vboxnet:VirtualBox使用的虛擬的網路介面。VirtualBox的虛擬機可以透過這個網路介面與實體本機進行連線。
  • PPP:PPP為Point-to-Point Protocol(點對點協定)。常見的有建構在乙太網路的PPPoE(Point-to-Point Protocol Over Ethernet)、以及建構在ATM(Asynchronous Transfer Mode)的PPPoA(Point-to-Point Protocol Over ATM)。PPP支援連線認證與壓縮加密,常用於網際網路服務提供者(ISP, Internet Service Provider)與用戶之間的連線。由路由器(Router)建立PPP連線的方式稱作硬體撥接(簡稱硬撥),這樣的方式可以讓連接到此路由器底下的裝置都可以透過路由器所建立的同一條PPP連線來連上網際網路,也就是使用共同的IP上網。相反地,由電腦建立PPP連線的方式則稱作軟體撥接(簡稱軟撥)。硬撥的優點是多個裝置都可以使用同樣的IP進行上網,不太有IP數量限制的問題,且對外的IP不會直接連線到路由器底下的裝置,安全性較高;缺點則是效能會受限於路由器的等級,且外部難以直接透過路由器的對外IP來連線到路由器底下的裝置,需要作額外的設定才可以連線。軟撥的優點是效能取決於電腦的效能,通常會比路由器還要好,且外部可以直接使用對外IP來連線到軟撥的電腦;缺點則是撥接的裝置一多,會有IP不足的問題,且對外的IP可以直接連線到軟撥的電腦,安全性較低。

顯示出目前啟用的網路連線介面的連線狀態

使用以下指令可以查看目前啟用的網路連線介面的連線狀態:

ifconfig

linux-network

顯示出目前啟用的網路連線介面的路由方式

使用以下指令可以查看目前啟用的網路連線介面的路由方式:

route -n

linux-network

使用動態主機設定協定(DHCP)完成網路設定

大多數的路由器會使用動態主機設定協定(DHCP, Dynamic Host Configuration Protocol)來與底下的其它裝置完成內部連線設定。要在Linux上透過DHCP來設定網路介面,可以使用以下指令:

sudo dhclient 網路介面名稱

例如要透過DHCP來設定ens33網路介面,可以執行以下指令:

sudo dhclient ens33

linux-network

指令執行後,可以再次使用上面提到的ifconfig指令來查看DHCP設定的結果。

開啟網路介面

想要透過命令列開啟網路介面的話,可以使用以下指令:

sudo ifconfig 網路介面名稱 up

例如要開啟ens33網路介面,可以執行以下指令:

sudo ifconfig ens33 up

關閉網路介面

想要透過命令列關閉網路介面的話,可以使用以下指令:

sudo ifconfig 網路介面名稱 down

例如要關閉ens33網路介面,可以執行以下指令:

sudo ifconfig ens33 down

設定網路介面的參數

若路由器無法透過DHCP來自動設定連線參數,或是不想使用DHCP的話,也可以使用以下指令來手動指定連線參數:

sudo ifconfig 網路介面名稱 此網路介面的IP位址 [broadcast 廣播的IP位址] [netmask IP位址遮罩]

例如:

sudo ifconfig ens33 192.168.165.199 broadcast 192.168.165.255 netmask 255.255.255.0

linux-network

如果需要指定通往其他網域的閘道器(Gateway),可以使用以下指令來設定:

sudo route add default gw 閘道器IP位址

例如:

sudo route add default gw 192.168.165.2

修改網路介面設定檔

透過ifconfig指令設定好的網路,重新開機之後依然需要再下指令重新設定。如果要對網路做永久的改變,建議使用文字編輯器修改/etc/netplan底下的設定檔(YAML格式)。

例如設定ens33ens34這兩個網路介面使用DHCP:

network:
  ethernets:
    ens33:
      dhcp4: true
    ens34:
      dhcp4: true

linux-network

例如手動設定ens33網路介面的位址:

network:
  ethernets:
    ens33:
      addresses: [192.168.165.199/24]
      routes:
        - to: default
          via: 192.168.165.2
      nameservers:
        addresses: [8.8.8.8, 8.8.8.4]
    ens34:
      dhcp4: true

linux-network

addresses欄位可以用CIDR格式同時設定網路介面的IP位址和IP位址遮罩。routes欄位用來設定閘道器。nameservers設定DNS伺服器。

修改設定檔之後,使用以下指令來測試設定檔是否正確。

sudo netplan try

這個指令除了會檢查設定檔的語法是否正確外,還會嘗試套用設定兩分鐘,讓使用者可以在這兩分鐘內去檢查這個設定是否正確。如果發現不正確,可以直接按Ctrl + c來回復之前的設定(設定檔不會被回復);如果正確,可以按下Enter來套用設定。

linux-network

設定PPPoE連線

如果要使用軟體撥接建立PPPoE連線,用上面的方式設定好乙太網路之後,可以再使用以下指令來設定PPPoE:

sudo pppoeconf

linux-network

接著照著文字圖形介面上的步驟進行設定即可。

設定無線網路連線

使用命令列介面設定無線網路有點麻煩,在此只介紹常用的WPA(Wi-Fi Protected Access)/WPA2/WPA3連線的方式。

首先必須先確認無線網路介面的名稱,並用上面介紹的方式啟用它。

如果您發現在啟用無線網路介面時出現RF-kill的相關問題,需要先解除RF-kill對以wlx14cc2016d2d4無線網路介面的軟體關閉功能。

首先輸入以下指令來查看所有RF-kill可控制的網路介面:

rfkill list all

linux-network

如果有看到Wireless LAN的部份出現yes,要記下它的號碼(這邊的圖是1),再套用到下面這個解除RF-kill軟體關閉功能的指令中:

sudo rfkill unblock 1

指令中的1即為網路介面的號碼。

成功啟動無線網路介面之後,可以先使用以下的指令來掃描附近可見的無線網路:

sudo iwlist scan

linux-network

由於我們使用的是WPA連線,因此要先用以下指令來產生WPA的通行密鑰檔案。此處以連接到SSID為magiclen.org,密碼為12345678的AP(Access Point)為例。

wpa_passphrase magiclen.org 12345678 > ~/wpa.conf

指令執行後,便能在家目錄中產生出通行密鑰檔案,檔名為wpa.conf

然後再使用以下指令進行WPA連線:(網路介面以wlx14cc2016d2d4為例)

sudo wpa_supplicant -D wext -i wlx14cc2016d2d4 -c ~/wpa.conf

linux-network

如果關閉這支行程,連線將會中斷。因此也可以加上-B參數,讓wpa_supplicant在背景中執行。

最後用先前提到的方式,輸入以下指令,使用DHCP進行連線。

sudo dhclient wlx14cc2016d2d4

linux-network