Trong bài này, chúng tôi sẽ chỉ cách cấu hình routing và quản lý tuyến đường mạng trên Linux dùng lệnh ip trên CentOS (cách xem bảng định tuyến, thêm/xóa route tĩnh, v.v.). Bài viết áp dụng cho bất kỳ bản phân phối Linux nào có công cụ ip (Red Hat, Fedora, v.v.)
Để quản lý routing trên Linux, khuyến nghị dùng lệnh ip thay vì route. Lệnh route không cho phép cấu hình tính năng định tuyến nâng cao (như chính sách routing) và không hiển thị cài đặt định tuyến đặc biệt nếu chúng được đặt bằng công cụ ip.
Cách xem bảng định tuyến mạng trên Linux?
Để hiển thị bảng định tuyến hiện tại trên Linux, chạy lệnh:
# ip route

default via 192.168.1.1 dev enp0s3là gateway mặc định dùng giao diện enp0s3 trong ví dụ. Nếu địa chỉ IP đích không có route tĩnh trong bảng định tuyến, gói tin sẽ gửi qua gateway đó (default route);192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201là route tĩnh cho mạng 192.168.1.0/24 qua giao diện 192.168.1.201;proto kernellà route do kernel tạo (proto static– route do admin thêm);metriclà độ ưu tiên route (giá trị metric càng nhỏ, ưu tiên càng cao). Nếu có hai route cùng metric (không bao giờ làm vậy!), kernel sẽ chọn route ngẫu nhiên.
Để biết giao diện (gateway) nào dùng để định tuyến traffic đến IP cụ thể, dùng lệnh:
# ip route get 192.168.2.45
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
Bạn có thể dùng máy chủ Linux với hai hoặc nhiều giao diện làm router hoặc Internet gateway. Để bật định tuyến gói tin giữa nhiều giao diện, bật tham số kernel net.ipv4.ip_forward = 1.
Thêm và xóa Static Route trên Linux
Để thêm route mới đến mạng IP cụ thể vào bảng định tuyến Linux, chạy lệnh:
# ip route add 192.168.0.0/24 via 192.168.1.1
Vậy chúng ta thêm route cho mạng IP 192.168.0.0/24 qua gateway 192.168.1.1.
Định dạng lệnh ip route rất giống cú pháp Cisco IOS. Bạn cũng có thể dùng viết tắt, ví dụ dùng ip pro ad thay vì ip route add.

Bạn cũng có thể thêm route tĩnh riêng cho một IP đơn lẻ (host):
# ip route add 192.168.1.0 via 192.168.1.1
Bạn có thể tạo null route tương tự Cisco (ip route null0). Gói tin gửi đến mạng này bị drop do No route to host:
# ip route add blackhole 10.1.20.0/24
Các route thêm bằng cách này là tạm thời và hoạt động cho đến khi restart dịch vụ mạng hoặc máy chủ.
Để xóa route tĩnh tạo thủ công, chạy lệnh:
# ip route del 192.168.0.0/24

Như bạn thấy, route đã bị xóa khỏi bảng định tuyến Linux.
Để thêm route vĩnh viễn, bạn phải tạo file cho route, hoặc thêm quy tắc vào file rc.local (chạy khi khởi động máy chủ).
Để thêm static route vĩnh viễn, cần tên giao diện mạng dùng cho định tuyến. Lấy tên giao diện bằng lệnh:
# ip a
Trong trường hợp tôi, là enp0s3.
Xem bài chi tiết về cấu hình giao diện mạng trên RHEL/CentOS Linux.

Sau đó mở file:
# nano /etc/sysconfig/network-scripts/route-enp0s3
Và thêm dòng chứa route:
192.168.0.0/24 via 192.168.1.1
Sau khi thêm route vào file, khởi động lại dịch vụ network:
# service network restart

Sau restart mạng, static route xuất hiện trong bảng định tuyến.
Bạn cũng có thể dùng lệnh thêm route mới vào file rc.local để tự động thêm static route khi boot. Mở file:
# nano /etc/rc.local
Và nhập lệnh thêm static route:
# ip route add 192.168.0.0/24 via 192.168.1.1

Sau đó nếu máy chủ reboot, route sẽ tự động thêm khi boot hệ thống.
Sửa đổi entry Route hiện có trên Linux
Để thay đổi route hiện có, dùng lệnh ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1

Để reset tất cả route tạm thời trong bảng định tuyến, chỉ cần restart dịch vụ mạng:
# service network restart
Restarting network (via systemctl): [ OK ]
# ip route
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
Cách thay đổi Default Route hoặc Default Gateway trên Linux?
Bạn có thể xóa default route dùng lệnh ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
Để đặt default route mới, lệnh sau dùng trong CentOS/RHEL Linux:
# ip route add default via 192.168.1.2(route qua IP gateway)# ip route add default via enp0s3(route dùng tên thiết bị)
Để thay đổi cài đặt default route, dùng lệnh:
# ip route replace default via 192.168.1.2
