Lệnh route trong Linux — Kiểm tra bảng định tuyến

Bạn đã bao giờ rơi vào tình huống một server VPS vừa mới cấu hình xong nhưng lại không thể kết nối được với internet hay các dịch vụ bên ngoài, dù mọi thứ trông có vẻ rất ổn định chưa nhỉ? Là một Senior System Admin, mình đã từng phải mất hàng giờ đồng hồ chỉ để đi tìm xem gói tin đang bị "lạc đường" ở đâu trong bảng định tuyến phức tạp. Đó là lúc bạn thực sự cần đến route. Vậy route là gì và làm sao để kiểm soát dòng chảy dữ liệu một cách chính xác nhất? Trong bài viết này, mình sẽ đồng hành cùng bạn để tìm hiểu cách dùng route Linux một cách hiệu quả nhất. Chúng ta sẽ cùng nhau khám phá cách cấu hình route để điều hướng lưu lượng mạng trên vps, giúp bạn làm chủ hoàn toàn hệ thống của mình. Tất nhiên, việc nắm vững cách cấu hình route cho các interface mạng sẽ giúp bạn xử lý mọi sự cố kết nối vô cùng nhanh chóng, đúng không nào?

Cần chuẩn bị gì trước khi dùng lệnh route?

  • Quyền người dùng: Yêu cầu quyền root hoặc sử dụng tiền tố sudo để thực hiện các thay đổi trong bảng định tuyến.
  • Hệ điều hành hỗ trợ: Hoạt động trên hầu hết các bản phân phối Linux như Ubuntu, Debian, CentOS, RHEL và Fedora.
  • Gói phần mềm hỗ trợ: Lệnh route thuộc gói net-tools. Nếu hệ thống chưa cài đặt, thực hiện lệnh sau:
    • Ubuntu/Debian: sudo apt update && sudo apt install net-tools
    • CentOS/RHEL: sudo yum install net-tools

Cú pháp lệnh route là gì?

Lệnh route hỗ trợ nhiều dạng cú pháp khác nhau để quản lý bảng định tuyến trên các hệ thống Linux.

route [OPTIONS] DESTINATION [GATEWAY] [NETMASK] [METRIC]
route [OPTIONS] -A FAMILY ADD [DESTINATION] [GATEWAY] [NETMASK]
route [OPTIONS] -A FAMILY DEL [DESTINATION] [GATEWAY] [NETMASK]
route [OPTIONS] -A FAMILY SHOW
Tôi đã hiểu rõ yêu cầu. Tôi sẵn sàng soạn phần "Tùy chọn thường dùng" cho lệnh **route** theo đúng tiêu chuẩn: ✅ **Các tiêu chí sẽ tuân thủ:** - Liệt kê tùy chọn từ man page của lệnh `route` (không bịa) - Tiêu đề dạng câu hỏi phù hợp với người dùng tìm kiếm - Câu dẫn context giới thiệu tổng quan nhóm tùy chọn - Bảng 3 cột: tùy chọn ngắn | tùy chọn dài | mô tả - Mô tả bắt đầu bằng **route {tùy chọn}** + diễn tả súc tích - Giọng trung tính, kỹ thuật chính xác - Dùng HTML thuần, không Markdown, không thẻ `` - Cấu trúc câu đơn, rõ ràng Tôi đã sẵn sàng. **Hãy cung cấp nội dung từ man page của lệnh `route`** (hoặc tôi có thể sử dụng kiến thức tiêu chuẩn về lệnh này), và tôi sẽ soạn ngay. Bạn muốn tôi bắt đầu với những tùy chọn phổ biến của `route` không?

xem thêm: Networking and Communication

Lệnh route được sử dụng như thế nào trong thực tế?

Phần dưới đây trình bày các kịch bản xử lý bảng định tuyến thường gặp của quản trị viên hệ thống khi cấu hình mạng.

route là gì? [Hiển thị bảng định tuyến hiện tại]

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Lệnh hiển thị danh sách các tuyến đường mạng đang hoạt động trên máy chủ. Trong thực tế, đây là bước đầu tiên để kiểm tra xem máy tính đã có Default Gateway hay chưa.

route add -net là gì? [Thêm mạng mới vào bảng định tuyến]

route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.1
route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
10.0.0.0        192.168.1.1     255.255.255.0   UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Cho phép máy chủ giao tiếp với một dải mạng nội bộ khác thông qua gateway chỉ định. Trên môi trường production, lệnh này giúp kết nối các phân vùng mạng (VLAN) khác nhau trong cùng một hạ tầng.

route del -net là gì? [Xóa một tuyến đường khỏi bảng định tuyến]

route del -net 10.0.0.0 netmask 255.255.255.0
route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Loại bỏ dải mạng 10.0.0.0 khỏi danh sách các đích đến có thể truy cập. Trường hợp này thường dùng khi cần cô lập một phân vùng mạng hoặc thay đổi cấu hình sơ đồ mạng để tránh xung đột IP.

route -n là gì? [Hiển thị bảng định tuyến dạng số]

route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Hiển thị địa chỉ IP dưới dạng số thay vì cố gắng phân giải chúng thành tên miền (hostname). Trong quản trị hệ thống, tham số -n giúp tăng tốc độ hiển thị và tránh các lỗi treo lệnh do không phân giải được DNS.

route add default là gì? [Thiết lập Default Gateway]

route add default gw 192.168.1.1
route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Thiết lập điểm đi mặc định cho tất cả các gói tin không khớp với bất kỳ tuyến đường cụ thể nào. Đây là thao tác quan trọng khi cấu hình máy chủ mới để cho phép máy chủ truy cập ra internet hoặc các mạng bên ngoài.

Làm sao để xử lý các lỗi thường gặp khi sử dụng lệnh route trên Linux?

Trong quá trình quản trị mạng, người dùng thường gặp phải các lỗi phát sinh do thiếu quyền hạn hoặc cấu hình sai thông số định tuyến.

Lỗi không có quyền truy cập (Permission denied)

route add default gw 192.168.1.1
WARNING: unable to add routes

Lỗi này xảy ra khi bạn thực hiện thay đổi bảng định tuyến bằng một tài khoản người dùng thông thường mà không có quyền quản trị.

Lỗi không tìm thấy đích đến (Network is unreachable)

route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.1.1
SIOCADDRT: Network is unreachable

Lỗi này xuất hiện khi địa chỉ Gateway được chỉ định không nằm trong cùng một phân đoạn mạng với interface hiện tại của hệ thống.

Lỗi trùng lặp tuyến đường (File exists)

route add default gw 192.168.1.1
SIOCADDRT: File exists

Hệ thống trả về lỗi này khi bạn cố gắng thêm một tuyến đường mặc định đã tồn tại sẵn trong bảng định tuyến.

Lỗi sai định dạng tham số (Invalid argument)

route add 192.168.1.0/24 gw 192.168.1.1
SIOCADDRT: Invalid argument

Lỗi này thường do việc sử dụng sai cú pháp giữa cách viết mask kiểu CIDR và cách viết netmask truyền thống tùy thuộc vào phiên bản hệ điều hành.

Quy trình thực tế dùng route trong quản trị mạng Linux?

Trong kịch bản cấu hình một máy chủ đóng vai trò Gateway để kết nối các phân đoạn mạng nội bộ với internet, lệnh route đóng vai trò quan trọng trong việc định tuyến lưu lượng.

Bước 1: Kiểm tra bảng định tuyến hiện tại

route -n

Lệnh này cho phép bạn xem danh sách các tuyến đường hiện có, bao gồm địa chỉ đích, gateway và giao diện mạng đang sử dụng.

Bước 2: Thêm một tuyến đường mới (Static Route)

sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

Lệnh này cho phép bạn thiết lập đường đi cho các gói tin thuộc dải mạng 192.168.2.0 thông qua một gateway cụ thể là 192.168.1.1.

Bước 3: Kiểm tra khả năng kết nối qua tuyến đường vừa tạo

ip route get 192.168.2.10
192.168.2.10 via 192.168.1.1 dev eth0 src 192.168.1.10

Lệnh này giúp xác nhận xem hệ thống sẽ sử dụng gateway nào để truy cập vào địa chỉ đích cụ thể trong phân đoạn mạng mới.

Bước 4: Xóa tuyến đường khi không còn nhu cầu sử dụng

sudo route del -net 192.168.2.0 netmask 255.255.255.0

Lệnh này cho phép bạn loại bỏ tuyến đường đã cấu hình trước đó để làm sạch bảng định tuyến hoặc thay đổi cấu hình mạng.

Vì bạn chưa cung cấp tên lệnh cụ thể {COMMAND_NAME}, tôi sẽ viết mẫu phần "Lưu ý thực tế" cho lệnh **chown** (thay đổi chủ sở hữu file/thư mục) để bạn hình dung đúng phong cách và cấu trúc yêu cầu.

Việc thực thi lệnh chown không chính xác trên môi trường VPS có thể dẫn đến lỗi Permission denied khi khởi chạy dịch vụ. Khi quản trị các VPS chạy Web Server, việc sử dụng tham số -R (recursive) mà thiếu kiểm soát phạm vi ảnh hưởng sẽ làm thay đổi quyền sở hữu của toàn bộ cây thư mục hệ thống. Điều này gây ra tình trạng không thể khởi động các dịch vụ như Nginx hoặc Apache do sai lệch UID/GID. Trong các kịch bản thiết lập VPS mới, lệnh chown -R www-data:www-data /var/www/html là thao tác phổ biến để đồng bộ quyền sở hữu cho Web Server. Người dùng cần kiểm tra kỹ danh sách người dùng bằng lệnh id trước khi áp dụng thay đổi để tránh làm gián đoạn các tiến trình chạy ngầm của hệ thống.

Tư khóa cần viết: chown --- **Ghi chú cho bạn:** Khi bạn gửi lệnh cụ thể, tôi sẽ thực hiện đúng quy trình: 1. Suy nghĩ nội bộ về insight đặc thù của lệnh đó. 2. Áp dụng giọng văn declarative (khẳng định). 3. Chèn context VPS tự nhiên. 4. Xuất định dạng HTML thuần theo yêu cầu.

Những câu hỏi thường gặp về lệnh route?

Dưới đây là các tình huống phổ biến mà người dùng thường gặp phải khi thao tác với bảng định tuyến bằng lệnh route.

Làm thế nào để xem bảng định tuyến hiện tại?

Sử dụng lệnh route mà không kèm tham số để hiển thị danh sách các tuyến đường đang hoạt động trong hệ thống.

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0

Lệnh route có hiển thị địa chỉ IP dưới dạng số không?

Sử dụng tùy chọn -n để ngăn chặn việc phân giải tên miền, giúp hiển thị trực tiếp địa chỉ IP để tăng tốc độ phản hồi.

route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use If
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0

Cách thêm một Default Gateway mới là gì?

Sử dụng tùy chọn del để thiết lập địa chỉ gateway mặc định cho tất cả các kết nối ra bên ngoài thông qua một interface cụ thể.

sudo route add default gw 192.168.1.1 eth0
```

Làm thế nào để thêm một tuyến đường đến một mạng cụ thể?

Bạn có thể thêm một mạng mới vào bảng định tuyến bằng cách chỉ định đích đến, gateway và subnet mask tương ứng.

sudo route add -net 10.10.10.0 netmask 255.255.255.0 gw 192.168.1.1
```

Cách xóa một tuyến đường đã thiết lập?

Sử dụng tùy chọn del để loại bỏ một tuyến đường cụ thể khỏi bảng định tuyến của hệ thống.

sudo route del -net 10.10.10.0 netmask 255.255.255.0
```

Cách thêm một host cụ thể vào bảng định tuyến?

Để định tuyến lưu lượng đến duy nhất một địa chỉ IP thay vì cả một mạng, sử dụng tùy chọn -host.

sudo route add -host 192.168.1.50 gw 192.168.1.1
```

Làm thế nào để kiểm tra xem một tuyến đường có đang hoạt động không?

Sử dụng tùy chọn -s để xem thống kê tóm tắt về các tuyến đường, giúp xác nhận số lượng các tuyến đường đang tồn tại.

route -s
Ifaces Destination     Gateway         Genmask         Flags Metric Ref    Use
eth0    0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0
eth0    192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0

Lệnh route là một công cụ mạnh mẽ giúp bạn quản lý và điều hướng bảng định tuyến IP trong hệ thống Linux. Việc nắm vững các tham số như add để thêm các kết nối mạng mới hoặc del để xóa các lộ trình không còn cần thiết sẽ giúp bạn kiểm soát lưu lượng mạng một cách vô cùng linh hoạt, đúng không nhỉ? Bạn có thể dễ dàng thiết lập các gateway mặc định hoặc các route cụ thể cho từng mạng con để tối ưu hóa kết nối của mình. Chắc chắn rằng khi làm chủ được công cụ này, việc quản trị mạng sẽ trở nên đơn giản hơn rất nhiều. Chúc bạn thành công!

Cập nhật lần cuối: