Ubuntu 20.04: Đặt IP tĩnh bằng netplan
Hướng dẫn Linux Server · cập nhật 09/08/2026
Để đặt IP tĩnh trên Ubuntu 20.04, bạn sửa file YAML trong /etc/netplan rồi chạy netplan apply. Việc này mất khoảng 5 phút và không cần khởi động lại máy.
Máy chủ cài mới nhận IP động từ DHCP của router. Sau vài lần khởi động, router có thể cấp một IP khác, và mọi thứ trỏ tới máy theo IP cũ đều gãy: bản ghi DNS nội bộ, cấu hình chuyển tiếp cổng, quy tắc tường lửa, phiên SSH đang lưu. Đặt IP tĩnh là cách chốt địa chỉ lại một chỗ.
- Xem tên cổng mạng và IP đang dùng.
- Mở file cấu hình netplan trong
/etc/netplan. - Điền địa chỉ IP tĩnh, gateway và DNS.
- Chạy
netplan applyrồi kiểm lại.
Ubuntu 20.04 LTS hết hỗ trợ tiêu chuẩn từ tháng 04/2025, chỉ còn nhận bản vá qua chương trình trả phí. Bài này giữ cho máy chủ cũ còn đang chạy. Máy cài mới nên dùng Ubuntu 22.04 hoặc 24.04, cách làm gần như giống hệt, khác một dòng nêu ở cuối bài.
Vì sao Ubuntu 20.04 dùng netplan thay cho file interfaces
Từ bản 17.10, Ubuntu chuyển sang netplan làm lớp cấu hình mạng chung. Bạn viết cấu hình bằng YAML trong /etc/netplan, netplan dịch nó thành cấu hình cho systemd-networkd trên bản Server hoặc NetworkManager trên bản Desktop. File /etc/network/interfaces của các bản Ubuntu cũ không còn được đọc nữa.
Hệ quả thực tế: sửa /etc/network/interfaces trên Ubuntu 20.04 thì không có gì xảy ra, dù lệnh lưu file chạy thành công. Đây là lý do phổ biến nhất khiến người quen Ubuntu 16.04 loay hoay mà IP không đổi.
Nên đặt IP tĩnh bằng netplan hay bằng lệnh ip
Lệnh ip addr add gán địa chỉ ngay lập tức nhưng mất sạch sau lần khởi động kế tiếp, vì nó chỉ ghi vào bộ nhớ nhân hệ điều hành. Netplan ghi vào file nên cấu hình còn lại vĩnh viễn. Dùng lệnh ip khi cần thử nhanh, dùng netplan cho cấu hình thật.
| Tiêu chí | netplan | lệnh ip addr |
|---|---|---|
| Còn sau khi khởi động lại | Có | Không |
| Thời gian áp dụng | Vài giây sau netplan apply | Tức thì |
| Đặt được DNS | Có, trong cùng file | Không, phải sửa resolv.conf riêng |
| Rủi ro mất kết nối SSH | Có, nếu gõ sai địa chỉ | Có, nhưng khởi động lại là về cũ |
| Nên dùng khi | Cấu hình chính thức cho máy chủ | Thử một địa chỉ trước khi ghi vào file |
Các bước thiết lập IP tĩnh trên Ubuntu 20.04
Bốn bước dưới đây chạy bằng tài khoản có quyền sudo. Nếu bạn đang thao tác qua SSH, hãy chuẩn bị sẵn đường vào bằng console của nhà cung cấp hoặc KVM, vì gõ sai một ký tự trong file YAML là mất kết nối ngay khi áp dụng.
1. Xem tên cổng mạng và IP hiện tại
ip addr show
Kết quả trên máy đang lấy IP từ DHCP:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:00:64:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.132/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe00:6400/64 scope link
valid_lft forever preferred_lft forever
Ghi lại hai thứ: tên cổng, ở đây là eth0, và chữ dynamic xác nhận địa chỉ đang do DHCP cấp. Tên cổng trên máy khác có thể là ens33, enp0s3 hoặc eno1, bạn dùng đúng tên máy mình in ra.
2. Mở file cấu hình netplan
ls /etc/netplan
sudo nano /etc/netplan/00-installer-config.yaml
Ubuntu Server cài bằng trình subiquity sinh ra file 00-installer-config.yaml. Máy cài theo cách khác có thể có tên khác như 50-cloud-init.yaml. Chạy lệnh ls ở trên để biết tên thật rồi mới mở.
3. Điền địa chỉ tĩnh, gateway và DNS
Sửa nội dung file thành như sau, lưu bằng Ctrl + O rồi thoát bằng Ctrl + X:
# This is the network config written by 'subiquity'
network:
ethernets:
eth0:
dhcp4: no
addresses: [192.168.0.5/24]
gateway4: 192.168.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4]
version: 2
YAML đọc theo thụt đầu dòng và chỉ chấp nhận dấu cách, không chấp nhận ký tự tab. Sai thụt lề là netplan báo lỗi cú pháp và bỏ qua cả file.
Ba giá trị cần đổi theo mạng của bạn. Phần addresses là IP muốn đặt kèm độ dài subnet, chọn một địa chỉ nằm ngoài dải DHCP của router để không bị cấp trùng. Phần gateway4 là IP của router. Phần nameservers có thể dùng DNS của Cloudflare, của Google, hoặc IP máy chạy AdGuard Home trong mạng nội bộ.
4. Áp dụng và kiểm tra
sudo netplan apply
ip addr show
Dòng inet giờ hiển thị địa chỉ mới và không còn chữ dynamic:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:00:64:00 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.5/24 brd 192.168.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe00:6400/64 scope link
valid_lft forever preferred_lft forever
Kiểm thêm đường ra ngoài và phân giải tên miền:
ip route
ping -c 3 1.1.1.1
resolvectl status | grep 'DNS Servers'
Xong đúng khi ip route có dòng default via trỏ về gateway, lệnh ping có phản hồi, và resolvectl liệt kê đúng các DNS bạn vừa điền.
Lỗi hay gặp khi chạy netplan apply
Bốn tình huống dưới đây chiếm phần lớn các ca đặt IP tĩnh thất bại. Chúng có thông báo riêng nên đọc dòng lỗi là biết rơi vào ca nào.
Mất kết nối SSH ngay sau khi áp dụng. Máy đã đổi sang IP mới, phiên cũ trỏ tới IP cũ nên đứt. Kết nối lại bằng địa chỉ vừa đặt. Nếu vào không được, dùng console của nhà cung cấp hoặc KVM over IP để sửa file. Lệnh sudo netplan try an toàn hơn: nó tự hoàn tác sau 120 giây nếu bạn không xác nhận.
Báo lỗi cú pháp YAML. Thông báo dạng Invalid YAML at /etc/netplan/00-installer-config.yaml kèm số dòng. Gần như luôn là do ký tự tab hoặc thụt lề lệch. Chạy sudo netplan --debug generate để xem chi tiết hơn.
Cảnh báo quyền file quá rộng. Netplan bản mới cảnh báo khi file YAML cho phép người khác đọc. Sửa bằng sudo chmod 600 /etc/netplan/*.yaml.
IP đặt xong nhưng ra Internet không được. Thường là gateway sai hoặc IP trùng với một máy khác trong mạng. Chạy arping -D -I eth0 192.168.0.5 từ một máy khác để phát hiện trùng địa chỉ.
Khác biệt khi làm trên Ubuntu 22.04 và 24.04
Các bước giống hệt, chỉ khác cách khai báo gateway. Từ netplan 0.103 đi kèm Ubuntu 22.04, khóa gateway4 bị đánh dấu ngừng dùng và sinh cảnh báo gateway4 has been deprecated, use default routes instead. Bản 24.04 bỏ hẳn khóa này.
Cách viết thay thế dùng khối routes:
network:
ethernets:
eth0:
dhcp4: no
addresses: [192.168.0.5/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses: [1.1.1.1, 1.0.0.1]
version: 2
Cách viết này cũng chạy được trên Ubuntu 20.04, nên nếu bạn định nâng cấp hệ điều hành trong tương lai thì viết theo routes ngay từ đầu để khỏi phải sửa lại.
Sau khi máy chủ đã có địa chỉ cố định
Địa chỉ cố định là điều kiện cần cho phần lớn dịch vụ chạy nền: AdGuard Home, WireGuard, Nginx Proxy Manager, hay bất cứ thứ gì cần được trỏ tới từ máy khác. Ghi lại IP vừa đặt vào sổ quản lý mạng để lần sau không cấp trùng cho thiết bị khác.
Nên đặt luôn phần dành riêng địa chỉ trên router, cột DHCP Reservation, gán IP này cho địa chỉ MAC của máy. Làm vậy thì kể cả khi ai đó cắm thêm thiết bị mới, router cũng không cấp trùng vào địa chỉ bạn đã chốt. Với VPS thuê tại BizMaC, IP do hệ thống cấp sẵn và không nên đổi thủ công, vì lớp mạng phía trên lọc theo cặp IP và MAC.