Featured image of post Ubuntu netplan 設定網路連線

Ubuntu netplan 設定網路連線

Ubuntu 20.04 後改用 netplan 作為指令網路設定工具

設定檔

netplan 設定檔預設放在 /etc/netplan/00-installer-config.yaml

修改及套用需要 root 權限

查看網卡代號

使用 ip addr 指令可以列出網卡資訊,跑出來的結果像這樣

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
\$ ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd xx:xx:xx:xx:xx:xx
    altname enp0s18
    inet 192.168.1.xx/24 brd 172.16.0.255 scope global ens18
       valid_lft forever preferred_lft forever
    inet6 0000::0000:0000:0000:0000/64 scope link
       valid_lft forever preferred_lft forever

編號 2 後面的 ens18 就是網卡代號

我的電腦只有裝一張網卡結果才會只到編號 2,如果有多張網卡會接續列在下面

如果這台機器是 docker host,可能會有一大堆虛擬網卡

接下來就是開始編輯設定檔

使用 nano 編輯器修改設定檔

bash
1
nano /etc/netplan/50-cloud-init.yaml

使用 DHCP 自動設定 IP

</> yaml 📄 /etc/netplan/50-cloud-init.yaml
1
2
3
4
5
6
7
8
network:
  version: 2
  renderer: networkd
  ethernets:
    # 下面 ens18 改成你的網卡代號
    ens18:
      dhcp4: true
    # 如果有多張網卡,設定繼續加在下面

設定固定 IP

</> yaml 📄 /etc/netplan/50-cloud-init.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
network:
  version: 2
  ethernets:
    ens18:
      addresses:
      # 設定固定 IP
        - 192.168.1.2/24
      # 預設閘道器
      gateway4: 192.168.1.1
      # 預設 DNS
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

固定 IP 中 /24 代表子網遮罩,相當於 255.255.255.0

如果不會換算,可以參考 IPv4 子網計算機

通常沒特殊需求的話,家用路由器的子網遮罩都是用 /24 255.255.255.0


在 ubuntu 22.04 新版的 Netplan 中, gateway4 這個設定已被棄用

新版的設定檔長這樣

</> yaml 📄 /etc/netplan/50-cloud-init.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
network:
  version: 2
  ethernets:
    ens18:
      addresses:
      # 設定固定 IP
        - 192.168.1.2/24
      # 預設 DNS
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]
      # 預設閘道器
      routes:
        - to: default
          via: 192.168.1.1

預設路由的設定,改成可以設定多個預設閘道器 (Gateway)

</> yaml 📄 /etc/netplan/50-cloud-init.yaml
1
2
3
4
5
6
7
      routes:
        - to: default
          via: 10.0.0.1
          metric: 200
        - to: default
          via: 11.0.0.1
          metric: 300

其中 metric 代表優先權重,值越小越優先使用

設定 WIFI 連線

這邊同樣是用 Netplan 來修改設定,如果可以裝套件的狀況或是已經裝了 network-manager
可以用 nmcli 工具來設定比較方便

取得 Wifi 網卡代號

bash
1
2
\$ ls /sys/class/net
enp0s25  lo  wlp3s0

通常在 Ubuntu 22.04 中 Wifi 網卡代號通常是 wlan0 或是 wlp3s0

在設定檔下面加上 Wifi 的部分即可

</> yaml 📄 /etc/netplan/50-cloud-init.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlp3s0:
            optional: true
            access-points:
                "SSID-NAME-HERE":
                    password: "PASSWORD-HERE"
            dhcp4: true

至於要怎麼找附近可用的熱點…

如果要用指令的方式查,推薦用 nmcli 設定即可,就不需要用 netplan 打一堆字了

保存、套用設定

範例使用的 nano 編輯器,儲存按法:

Ctrl + X 離開 => Ctrl + Y 確認保存

保存完後,用下面指令測試設定檔有無格式錯誤

bash
1
netplan try

確定網路沒問題,在 120 秒內按 Enter 確定套用。
這招可以避免設定固定 IP 時設定錯誤斷網,畢竟很懶的跑去機器旁邊重新設定。

如果想要直接套用,不用再另外檢查,可以用 netplan apply

bash
1
netplan apply

檢查是否設定成功

bash
1
ip addr

看一下網卡有沒有配到 IP

如果你的 Raspberry Pi 也是裝 Ubuntu,網路設定也是這樣修改

參考資料

使用 Hugo 建立
主題 StackJimmy 設計