Đang tải bài học…
Nội dung sẽ hiển thị khi tải xong.
Nội dung sẽ hiển thị khi tải xong.
Thực hiện trên server của bạn, rồi kiểm tra từng tiêu chí.
Phần lớn sự cố "ứng dụng không kết nối được" nằm ở tầng mạng: sai địa chỉ, sai route, port không mở, tên không phân giải. Bạn cần đọc nhanh trạng thái mạng của một máy. Bạn cũng cần biết cấu hình nào chỉ tồn tại trong bộ nhớ (ip addr add) và cấu hình nào còn sau reboot (profile của NetworkManager). Module 02 sẽ đi sâu vào networking; bài này là các lệnh quản trị cơ bản.
ip và ss.ping, getent, curl.ip) với cấu hình bền vững (nmcli connection).NetworkManager quản lý mạng trên RHEL. Cấu hình nằm trong connection profile, lưu dưới dạng file keyfile trong /etc/NetworkManager/system-connections/. Khi boot, NetworkManager đọc profile và áp vào device (interface).
| Lệnh | Tác dụng | Còn sau reboot? |
|---|---|---|
ip address add | Thêm địa chỉ trực tiếp vào kernel | Không |
nmcli connection modify + up | Sửa profile rồi áp dụng | Có |
Phân giải tên đi theo thứ tự trong /etc/nsswitch.conf, thường là files (tức /etc/hosts) trước, rồi dns. getent hosts <tên> đi đúng đường mà ứng dụng dùng; dig chỉ hỏi DNS và bỏ qua /etc/hosts.
Bài này dùng interface dummy kdc0: một interface ảo chỉ tồn tại trong máy. Bạn thực hành đầy đủ nmcli mà không đụng tới card mạng đang giữ kết nối SSH.
ip -brief address
ip route
ip route get 1.1.1.1
ss -tulpn
nmcli device status
nmcli connection show
cat /etc/resolv.conf
getent hosts localhost
| Lệnh / tùy chọn | Ý nghĩa |
|---|---|
ip route | Xem bảng định tuyến; ip route get 1.1.1.1 hỏi route/địa chỉ nguồn sẽ dùng để tới IP này, không gửi ping. |
ss -tulpn | -t TCP, -u UDP, -l socket đang nghe, -p tiến trình sở hữu, -n in IP/port số thay vì phân giải tên. Có thể cần sudo để xem mọi tiến trình. |
nmcli device status | Xem trạng thái thiết bị mạng do NetworkManager quản lý. |
nmcli connection show | Liệt kê profile cấu hình kết nối. |
cat /etc/resolv.conf | Xem cấu hình resolver, gồm DNS server. |
getent hosts localhost | Phân giải tên qua cơ chế của hệ điều hành, gồm nguồn /etc/hosts nếu được cấu hình. |
ip route get cho biết gói tin tới một địa chỉ sẽ đi qua interface và gateway nào. ss -tulpn liệt kê socket TCP/UDP đang lắng nghe kèm tiến trình.
sudo ip link add kdc-tmp type dummy
sudo ip address add 10.98.0.1/24 dev kdc-tmp
ip -brief address show kdc-tmp
sudo ip link delete kdc-tmp
ip link add kdc-tmp type dummy tạo interface ảo dummy. ip address add 10.98.0.1/24 dev kdc-tmp gắn IP/prefix lên interface: dev chỉ thiết bị. /24 là độ dài prefix IPv4, tương ứng netmask 255.255.255.0. show kdc-tmp chỉ xem thiết bị đó; ip link delete xóa interface runtime. Các lệnh ip này chưa lưu profile bền vững.
Cấu hình này không được lưu ở đâu. Đây là lỗi "mất cấu hình sau reboot" bạn sẽ gặp lại ở bài Break/Fix.
sudo nmcli connection add type dummy ifname kdc0 con-name kdc-dummy \
ipv4.method manual ipv4.addresses 10.99.0.10/24 ipv6.method disabled
sudo nmcli connection up kdc-dummy
ip -brief address show kdc0
nmcli connection show kdc-dummy | grep -E 'ipv4.(method|addresses)|autoconnect'
sudo cat /etc/NetworkManager/system-connections/kdc-dummy.nmconnection
ping -c 2 10.99.0.10
nmcli connection add tạo profile: type dummy chọn loại, ifname kdc0 đặt tên interface, con-name kdc-dummy đặt tên profile. ipv4.method manual chọn IP tĩnh, ipv4.addresses nhận IP/prefix, ipv6.method disabled tắt IPv6 trên profile này. connection up kích hoạt profile. ping -c 2 gửi 2 yêu cầu rồi dừng; dùng để kiểm tra có phản hồi mạng.
Thêm địa chỉ thứ hai vào cùng profile, áp dụng, rồi bỏ đi:
sudo nmcli connection modify kdc-dummy +ipv4.addresses 10.99.0.11/24
sudo nmcli connection up kdc-dummy
ip -brief address show kdc0
sudo nmcli connection modify kdc-dummy -ipv4.addresses 10.99.0.11/24
sudo nmcli connection up kdc-dummy
Trong nmcli connection modify, dấu + trước thuộc tính dạng danh sách là thêm một mục, dấu - là xóa một mục; không có dấu thường là thay giá trị. Chạy connection up để áp dụng thay đổi. ping -c 1 ở bước tiếp theo chỉ gửi một yêu cầu.
modify chỉ sửa profile; up mới áp dụng vào interface.
echo '10.99.0.10 db.kdc.lab' | sudo tee -a /etc/hosts
getent hosts db.kdc.lab
ping -c 1 db.kdc.lab
tee -a /etc/hosts thêm dòng phân giải vào cuối file. getent hosts <tên> tra cứu tên theo cấu hình hệ thống; ping -c 1 gửi một yêu cầu rồi dừng.
sudo systemctl reboot
Sau khi đăng nhập lại: ip -brief address show kdc0 và getent hosts db.kdc.lab.
ip -brief address show kdc0
nmcli -g ipv4.addresses connection show kdc-dummy
getent hosts db.kdc.lab
nmcli -g ipv4.addresses connection show ... chỉ in giá trị thuộc tính được chọn: -g là get-values. connection delete <profile> ở phần dọn dẹp xóa profile bền vững, khác ip link delete chỉ thay trạng thái runtime. hostnamectl set-hostname <tên> dùng khi cần đổi hostname bền vững; không tự sửa các dòng trong /etc/hosts.
Chọn server và bấm Kiểm tra kết quả.
nmcli connection modify trên profile của card mạng chính rồi up: có thể mất SSH ngay lập tức. Luôn có console dự phòng khi sửa interface đang dùng.system-connections/ mà quên nmcli connection reload.dig để kiểm tra tên khai báo trong /etc/hosts: dig không đọc file này. Dùng getent hosts.hostnamectl set-hostname, không sửa tay /etc/hostname khi máy đang chạy./etc/hosts phù hợp cho lab và vài máy. Hệ thống thật dùng DNS nội bộ; Module 02 sẽ dựng và phá DNS.ip address add trong script khởi động.Ubuntu Server dùng netplan với backend systemd-networkd, không phải NetworkManager. Lệnh ip, ss, getent giống nhau; phần nmcli và tiêu chí profile chỉ áp dụng cho RHEL-family hoặc Ubuntu đã chuyển sang NetworkManager.
sudo nmcli connection delete kdc-dummy
sudo sed -i '/db\.kdc\.lab/d' /etc/hosts
nmcli connection delete kdc-dummy xóa profile đã lưu. sed -i sửa file tại chỗ; biểu thức /db\.kdc\.lab/d xóa dòng chứa hostname đó, dấu \. khớp dấu chấm theo nghĩa literal.