Câu trả lời:
Bạn có thể có thể làm những gì bạn muốn với ip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
Đầu tiên ip route add
hiển thị một địa chỉ IP duy nhất, được gửi ra một giao diện ethernet nhất định (ep3s8) tới bộ định tuyến bước nhảy tiếp theo, 10.0.0.1
Tuyến thứ hai dành cho toàn bộ mạng, 10.xyz, đã gửi một thẻ ethernet nhất định, eth0. Đó là "mạng cục bộ", không có bộ định tuyến bước nhảy tiếp theo, tất cả nằm trên cùng một dây logic.
Bạn muốn đọc man ip-route
trước khi làm bất cứ điều gì, mặc dù. Ngoài ra, hãy chuẩn bị để phải khởi động lại, và không làm điều này từ xa. Bạn có thể rất dễ dàng tạo các tuyến không chính xác chấm dứt quyền truy cập từ xa của bạn. Tôi là tiếng nói của kinh nghiệm trong khuyến nghị cuối cùng này.
Những gì bạn đang hỏi là policy-based routing
hoặc source-based routing
. Có một giới thiệu tuyệt vời của David Schwartz trên trang web này.
Tôi muốn chỉ ra rằng cũng có một chương trình nhỏ gọn, có thể tìm thấy ở đây , cho phép bạn liên kết các ứng dụng cụ thể với một giao diện nhất định. Điều này tất nhiên dễ dàng với các ứng dụng như openssh có các tùy chọn để liên kết với địa chỉ nghe mong muốn. Nhưng thư viện này cho phép bạn liên kết ngay cả các ứng dụng mà không có các tùy chọn như vậy (như Firefox) với một địa chỉ IP nhất định.
Theo cách này, bạn có thể chọn xem bạn có muốn cung cấp các bảng định tuyến riêng cho tất cả các ứng dụng hay ghi đè các thông số kỹ thuật tương tự trên cơ sở mỗi ứng dụng.
nơi tốt để đọc về định tuyến cơ sở nguồn là Linux Advanced Routing & Traffic Control,
bạn cũng có thể đọc hướng dẫn sử dụng
man ip rule
man ip route
Nói chung, bạn nên thêm quy tắc (Tôi đã thêm giao diện eth1 chỉ cho mục đích trình diễn, nó có thể được bỏ qua)
#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
đây là:
dev eth1 - thiết bị sẽ được sử dụng để gửi các gói
đến 170.10.0.10 -
bảng đích 2 - bảng nơi bạn nên đảm bảo
ưu tiên tuyến 20000 - ưu tiên của quy tắc
bạn có thể thấy quy tắc của mình bằng cách
#ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
Tiếp theo, bạn nên thêm các tuyến theo cách thông thường, nhưng bạn nên chỉ định bảng (bảng 2), nơi bạn sẽ đặt tuyến
#ip route add table 2 via 170.10.0.1 default
để xem các tuyến đường của bạn, bạn nên chạy
#ip route show ta 2