CentOS Stream 9: Tạm biệt network-scripts, đây là cách cấu hình IP tĩnh “chuẩn chỉ” bằng nmcli

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

Cơn ác mộng mang tên DHCP trên Server

Hãy tưởng tượng kịch bản này: 3 giờ sáng, hệ thống báo sập, con Web Server bỗng dưng không tìm thấy Database. Sau 15 phút check log mướt mải mồ hôi, anh em phát hiện ra con DB vừa tự khởi động lại và được Router “tặng” cho một cái IP mới toanh qua DHCP. Đây là lỗi sơ đẳng nhưng cực kỳ tai hại mà mình từng dính phải hồi mới đi làm: Đã là Server chạy MySQL, Nginx hay Proxy, việc đầu tiên là phải khóa chết cái IP.

Thời CentOS 7, chúng ta thường có thói quen “xục” thẳng vào /etc/sysconfig/network-scripts/ để sửa file ifcfg-eth0. Tuy nhiên, lên đến CentOS Stream 9 hay RHEL 9, thư mục huyền thoại đó giờ chỉ còn là cái xác không hồn. Red Hat đã chính thức khai tử cách quản lý cũ để chuyển sang keyfile (lưu tại /etc/NetworkManager/system-connections/).

Cố đấm ăn xôi với cách sửa file kiểu cũ chỉ khiến anh em sớm muộn cũng “ăn hành” khi hệ thống cập nhật. Dưới đây là quy trình chuẩn để làm chủ mạng mẽo bằng nmcli.

Hiểu đúng về Device và Connection

Nếu không phân biệt được hai khái niệm này, anh em sẽ cực kỳ dễ gõ nhầm lệnh và tự tay “cắt mạng” của chính mình.

  • Device (Thiết bị): Là cái card mạng vật lý, ví dụ ens33 hoặc eth0. Bạn không thể đổi tên nó bằng lệnh cấu hình IP thông thường.
  • Connection (Kết nối): Là một profile cấu hình (như tên Wifi bạn hay dùng). Một card mạng có thể có 2-3 profile khác nhau, nhưng tại một thời điểm chỉ có một cái được phép hoạt động (Active).

Triết lý của nmcli rất rõ ràng: Bạn tạo ra một bản thiết kế (Connection), sau đó áp nó lên cái khung (Device). Cách tiếp cận này cực kỳ logic khi bạn cần quản lý nhiều lớp mạng phức tạp.

Thực hành: 3 bước cấu hình IP tĩnh không lo sai sót

Bước 1: Nhận diện “đối tượng”

Trước khi gõ lệnh, hãy xác định xem server đang nhận card mạng tên là gì:

nmcli device status

Kết quả sẽ hiện rõ trạng thái connected. Ví dụ máy mình là enp0s3. Tiếp theo, kiểm tra các profile đang có:

nmcli connection show

Thông thường, hệ thống sẽ tự tạo sẵn một profile trùng tên với card mạng. Chúng ta sẽ đè trực tiếp lên profile này để tiết kiệm thời gian.

Bước 2: “Bắn” lệnh cấu hình

Giả sử mình cần đặt IP 192.168.1.100 cho con server chạy app, Gateway là 192.168.1.1. Thay vì gõ lắt nhắt 5-6 lệnh, anh em hãy gộp lại thành một phát ăn ngay:

nmcli con mod enp0s3 \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 1.1.1.1" \
ipv4.method manual

Lưu ý quan trọng cho anh em:

  • Cụm /24 chính là Subnet Mask 255.255.255.0. Thiếu nó, nmcli sẽ báo lỗi ngay lập tức.
  • ipv4.method manual là mấu chốt. Nó ra lệnh cho NetworkManager dừng việc đi xin IP từ Router và chuyển sang chế độ tự quản.

Bước 3: Kích hoạt để áp dụng thay đổi

Lưu ý là sau khi gõ xong bước 2, IP vẫn chưa đổi đâu. Anh em cần thực hiện cú “kick-start” để hệ thống nạp lại cấu hình mới:

nmcli con up enp0s3

Cảnh báo: Nếu đang SSH vào server bằng IP cũ, bạn sẽ bị ngắt kết nối ngay giây phút này. Đừng hoảng loạn, hãy login lại bằng IP mới 192.168.1.100.

Mẹo nhỏ: Dùng nmtui khi ngại gõ lệnh dài

Nếu một ngày bỗng dưng quên hết các tham số, anh em hãy gõ nmtui. Một giao diện đồ họa đơn giản ngay trong terminal sẽ hiện ra. Bạn chỉ việc dùng phím mũi tên và Tab để nhập số như trên Windows. Đây là cứu cánh cực nhanh khi phải xử lý trực tiếp tại màn hình console trong phòng Server lạnh giá.

Kiểm tra thành quả

Dân kỹ thuật nói chuyện bằng kết quả. Hãy dùng lệnh ip addr để xác nhận:

ip addr show enp0s3

Thấy dòng inet 192.168.1.100/24 hiện lên là coi như xong 90%. Cuối cùng, đừng quên thử ping google.com -c 4 để chắc chắn server của bạn không bị “cô lập” với thế giới bên ngoài.

Lời kết

Chuyển từ sửa file sang dùng nmcli có vẻ hơi lạ lẫm lúc đầu, nhưng nó giúp quản trị server chuyên nghiệp và ổn định hơn hẳn. Một lưu ý cuối: NetworkManager sẽ tự động quản lý file /etc/resolv.conf. Nếu bạn tự ý sửa thủ công vào đó, mọi thiết lập sẽ bị ghi đè sạch bách sau khi reboot. Hãy luôn dùng nmcli để khai báo DNS nếu không muốn phải sửa đi sửa lại nhiều lần.

Share: