#### 固定 IP 設定 修改 /etc/netplan/*.yaml 來設定固定 IP: Netplan 會根據檔名的(字首數字順序)來讀取設定,後面的檔案可以(覆蓋前面的設定) 常見的 .yaml 檔案名稱與意義: | 檔案名稱 | 來源或用途說明 | |----------|----------------| | `01-netcfg.yaml` | 手動建立或某些安裝器產生的預設設定檔 | | `50-cloud-init.yaml` | 由 cloud-init 自動產生,常見於雲端主機(如 AWS、Azure、GCP)或使用 cloud-init 的安裝方式 | | `99-custom.yaml` | 使用者自訂的設定檔,數字大代表優先順序低(會覆蓋前面的設定) | | `00-installer-config.yaml` | Ubuntu 安裝程式(如 Subiquity)產生的初始設定檔 | | `netplan.yaml` | 舊版或簡化安裝時可能出現的單一設定檔 | 50-cloud-init.yaml, quandic PC, 原版為 dhcp 如下: network: version: 2 ethernets: enp5s0: dhcp4: true 50-cloud-init.yaml, quandic PC, 若要固定 192.168.0.15/24 如下: network: version: 2 ethernets: enp5s0: dhcp4: no addresses: - 192.168.0.15/24 gateway4: 192.168.0.254 nameservers: addresses: - 192.168.0.254 - 8.8.8.8 50-cloud-init.yaml, quandic PC, 預定接小烏龜 固定 220.128.199.127/24 + dhcp 如下: network: version: 2 ethernets: enp5s0: dhcp4: true (這個 dhcp 已咬住 192.168.0.15/24) enp4s0: dhcp4: no addresses: - 220.128.199.127/24 routes: - to: default via: 220.128.199.254 nameservers: addresses: [8.8.8.8, 8.8.4.4] 00-installer-config.yaml, quandic 機架有防火牆 192.168.0.1 如下: # This is the network config written by 'subiquity' network: ethernets: ens192: addresses: - 192.168.1.1/24 nameservers: addresses: - 1.1.1.1 - 8.8.8.8 search: [] routes: - to: default via: 192.168.1.254 version: 2 #### 以下想看慢慢看, 確認後移到上方. ubuntu 資料夾 /etc/netplan/ 中, 會有幾個(不同名稱的 .yaml 檔案)? (不同名稱的 .yaml 檔案)代表什麼意義? 在 Ubuntu 中,`/etc/netplan/` 資料夾中通常會包含一個或多個 `.yaml` 檔案,這些檔案是用來設定網路介面的。這些檔案的**數量與名稱**會根據你的系統安裝方式、雲端平台、或是網路設定工具而有所不同。 --- ### 🧾 **常見的 .yaml 檔案名稱與意義** | 檔案名稱 | 來源或用途說明 | |----------|----------------| | `01-netcfg.yaml` | 手動建立或某些安裝器產生的預設設定檔 | | `50-cloud-init.yaml` | 由 cloud-init 自動產生,常見於雲端主機(如 AWS、Azure、GCP)或使用 cloud-init 的安裝方式 | | `99-custom.yaml` | 使用者自訂的設定檔,數字大代表優先順序低(會覆蓋前面的設定) | | `00-installer-config.yaml` | Ubuntu 安裝程式(如 Subiquity)產生的初始設定檔 | | `netplan.yaml` | 舊版或簡化安裝時可能出現的單一設定檔 | --- ### 📌 **為什麼會有多個檔案?** Netplan 會根據檔名的**字首數字順序**來讀取設定,後面的檔案可以**覆蓋前面的設定**。這種設計讓: - 系統工具(如 cloud-init)可以先設定基本網路 - 使用者或系統管理員可以用後面的檔案覆蓋或擴充設定 --- ### ✅ **建議做法** - **只保留一個設定檔**(例如 `50-cloud-init.yaml`),以避免混淆。 - 或者,如果你需要多個檔案,請確保它們的設定不互相衝突,並清楚知道哪個會生效。 --- 你目前只有 `50-cloud-init.yaml` 是很常見的情況。 如果你想要更乾淨地管理設定,也可以把它備份後改名為 `01-static-ip.yaml`,這樣更容易辨識用途。需要我幫你寫備份與改名的指令嗎? 這裡我們使用你的路由器 `192.168.0.254` 作為 DNS,並加上 Google DNS 作為備援。 ubuntu 網路ip, 例如: 192.168.0.15, 會跑掉了, 不是原來的192.168.0.15, 如何解決? 你遇到的問題是 Ubuntu 的 IP 位址(例如 `192.168.0.15`)會變動,這是因為系統預設使用 **DHCP(動態 IP 分配)**,每次開機或重新連線時,路由器可能會分配不同的 IP。 --- ### ✅ 解決方法:設定「固定 IP(Static IP)」 #### 方法一:透過圖形介面(適合桌面版 Ubuntu) 1. 點選右上角的 **網路圖示** → 選擇「**有線網路**」或「**Wi-Fi**」→ 點選「**設定**」。 2. 切換到「**IPv4**」標籤。 3. 將「方法」從 `自動 (DHCP)` 改為 `手動`。 4. 輸入以下資訊(以你的網段為例): - **地址(Address)**:`192.168.0.15` - **子網路遮罩(Netmask)**:`255.255.255.0` - **閘道(Gateway)**:通常是你的路由器 IP,例如 `192.168.0.1` - **DNS**:可以填 `8.8.8.8` 和 `8.8.4.4`(Google DNS) 5. 儲存並重新連線。 --- #### 方法二:透過 Netplan 設定(適合伺服器版 Ubuntu 18.04+) 1. 編輯 Netplan 設定檔(通常在 `/etc/netplan/` 目錄下): ```bash sudo nano /etc/netplan/01-netcfg.yaml ``` 2. 修改內容如下(請根據你的網卡名稱與網段調整): ```yaml network: version: 2 ethernets: enp3s0: dhcp4: no addresses: [192.168.0.15/24] gateway4: 192.168.0.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] ``` 3. 套用設定: ```bash sudo netplan apply ``` --- ### 🔁 補充建議:在路由器上綁定 MAC 位址 如果你不想在每台 Ubuntu 上手動設定,也可以在家用路由器中設定「**IP-MAC 綁定**」,讓特定裝置的 MAC 位址永遠分配同一個 IP。 --- 你目前是使用 Ubuntu 桌面版還是伺服器版?我可以根據你的版本幫你寫出完整的設定檔。 quandic@quandicserver:~$ ip a 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group defaul t 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 noprefixroute valid_lft forever preferred_lft forever 2: enp4s0: mtu 1500 qdisc noop state DOWN group default ql en 1000 link/ether ec:75:0c:c2:0e:91 brd ff:ff:ff:ff:ff:ff 3: enp5s0: mtu 1500 qdisc fq_codel state UP gr oup default qlen 1000 link/ether 60:cf:84:a7:0d:d3 brd ff:ff:ff:ff:ff:ff inet 192.168.0.15/24 metric 100 brd 192.168.0.255 scope global dynamic enp5s 0 valid_lft 604495sec preferred_lft 604495sec inet6 fe80::62cf:84ff:fea7:dd3/64 scope link valid_lft forever preferred_lft forever 4: wlp0s20f3: mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether a8:59:5f:b4:fc:1c brd ff:ff:ff:ff:ff:ff 5: docker0: mtu 1500 qdisc noqueue state DOW N group default link/ether 02:42:b2:6b:3d:89 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 6: br-4dc6fb296f83: mtu 1500 qdisc noqueue sta te UP group default link/ether 02:42:a2:c2:87:e6 brd ff:ff:ff:ff:ff:ff inet 172.20.0.1/16 brd 172.20.255.255 scope global br-4dc6fb296f83 valid_lft forever preferred_lft forever inet6 fe80::42:a2ff:fec2:87e6/64 scope link valid_lft forever preferred_lft forever 8: vethf7ce426@if7: mtu 1500 qdisc noqueue mas ter br-4dc6fb296f83 state UP group default link/ether be:6e:a0:56:97:af brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet6 fe80::bc6e:a0ff:fe56:97af/64 scope link valid_lft forever preferred_lft forever 若 /etc/netplan/ 中只有一個檔案: 50-cloud-init.yaml, 內容為 network: version: 2 ethernets: enp5s0: dhcp4: true 則應如何調整為固定 ip 192.168.0.15 ? 你可以直接修改 `/etc/netplan/50-cloud-init.yaml` 這個檔案,將 DHCP 改為靜態 IP 設定。以下是具體步驟: --- ### ✅ **步驟 1:編輯 Netplan 設定檔** 打開終端機,輸入: ```bash sudo nano /etc/netplan/50-cloud-init.yaml ``` 將內容修改為以下格式(請根據你的網路環境調整): ```yaml network: version: 2 ethernets: enp5s0: dhcp4: no addresses: - 192.168.0.15/24 gateway4: 192.168.0.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 ``` - `192.168.0.15/24`:你的固定 IP 和子網路遮罩(24 表示 255.255.255.0) - `192.168.0.1`:你的路由器 IP(通常是閘道) - `8.8.8.8` 和 `8.8.4.4`:Google DNS,可依需求更換 --- ### ✅ **步驟 2:套用設定** 儲存後(`Ctrl + O` → Enter → `Ctrl + X`),執行: ```bash sudo netplan apply ``` --- ### ✅ **步驟 3:確認 IP 是否正確** 輸入以下指令檢查: ```bash ip a ``` 或 ```bash ip addr show enp5s0 ``` --- 如果你不確定 `gateway` 或 `DNS` 是多少,我可以幫你查出來。 你也可以先用 `ip route` 和 `cat /etc/resolv.conf` 查看目前的設定。需要我幫你看嗎? $ ip route default via 192.168.0.254 dev enp5s0 proto dhcp src 192.168.0.15 metric 100 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.20.0.0/16 dev br-4dc6fb296f83 proto kernel scope link src 172.20.0.1 192.168.0.0/24 dev enp5s0 proto kernel scope link src 192.168.0.15 metric 100 192.168.0.254 dev enp5s0 proto dhcp scope link src 192.168.0.15 metric 100 208.91.112.52 via 192.168.0.254 dev enp5s0 proto dhcp src 192.168.0.15 metric 100 208.91.112.53 via 192.168.0.254 dev enp5s0 proto dhcp src 192.168.0.15 metric 100 $ cat /etc/resolv.conf # This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8). # Do not edit. # # This file might be symlinked as /etc/resolv.conf. If you're looking at # /etc/resolv.conf and seeing this text, you have followed the symlink. # # This is a dynamic resolv.conf file for connecting local clients to the # internal DNS stub resolver of systemd-resolved. This file lists all # configured search domains. # # Run "resolvectl status" to see details about the uplink DNS servers # currently in use. # # Third party programs should typically not access this file directly, but only # through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a # different way, replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 127.0.0.53 options edns0 trust-ad search . 感謝你提供的資訊!根據你的 `ip route` 和 `resolv.conf` 內容,我們可以確認以下幾點: - **目前 IP 是由 DHCP 分配的 `192.168.0.15`** - **預設閘道(Gateway)是 `192.168.0.254`** - **DNS 是透過 systemd-resolved 管理的(stub resolver)** --- ### ✅ 你可以這樣修改 `/etc/netplan/50-cloud-init.yaml` 來設定固定 IP: ```yaml network: version: 2 ethernets: enp5s0: dhcp4: no addresses: - 192.168.0.15/24 gateway4: 192.168.0.254 nameservers: addresses: - 192.168.0.254 - 8.8.8.8 ``` 這裡我們使用你的路由器 `192.168.0.254` 作為 DNS,並加上 Google DNS 作為備援。 --- ### ✅ 套用設定 儲存後執行: ```bash sudo netplan apply ``` --- ### ✅ 驗證設定 1. 查看 IP 是否正確: ```bash ip a ``` 2. 測試網路連線: ```bash ping -c 3 8.8.8.8 ping -c 3 google.com ``` --- 如果你之後發現 DNS 查詢有問題,也可以考慮停用 `systemd-resolved`,改用傳統的 `/etc/resolv.conf`。不過目前這樣的設定應該就能穩定使用固定 IP 並正常上網。 需要我幫你寫一個備份原始設定的指令嗎?這樣你可以隨時還原。