Bảng định tuyến được sử dụng theo thứ tự cụ thể nhất đến ít cụ thể nhất.
Tuy nhiên, trên linux, nó phức tạp hơn bạn tưởng. Thứ nhất, có nhiều hơn một bảng định tuyến và khi nào bảng định tuyến được sử dụng phụ thuộc vào một số quy tắc.
Để có được hình ảnh đầy đủ:
$ ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table main
default via 192.168.1.254 dev eth0
192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table default
$
Các local
bảng là bảng định tuyến đặc biệt có chứa các tuyến đường kiểm soát ưu tiên cao cho các địa chỉ địa phương và phát sóng.
Các main
bảng là bảng định tuyến bình thường có chứa tất cả tuyến bay chính sách. Đây cũng là bảng bạn có thể xem nếu bạn chỉ thực hiện ip route show
(hoặc ip ro
viết tắt). Tôi khuyên bạn không nên sử dụng route
lệnh cũ nữa, vì nó chỉ hiển thị main
bảng và định dạng đầu ra của nó là hơi cổ xưa.
Bảng default
trống và được dành riêng để xử lý hậu kỳ nếu các quy tắc mặc định trước đó không chọn gói.
Bạn có thể thêm các bảng của riêng bạn và thêm các quy tắc để sử dụng các bảng trong các trường hợp cụ thể. Một ví dụ là nếu bạn có hai kết nối internet, nhưng một máy chủ hoặc mạng con phải luôn được định tuyến thông qua một kết nối internet cụ thể.
Cuốn sách Chính sách định tuyến với Linux giải thích tất cả điều này một cách chi tiết.