Loading...

Cấu hình multi default gateways trên hệ điều hành Linux.

Khi bạn có hai hoặc nhiều card mạng trên hệ thống Linux và mỗi card này có một gateway mặc định riêng. Theo mặc định, bạn chỉ có thể có một gateway mặc định trên một hệ thống. Trường hợp được mô tả sẽ dẫn đến định tuyến không đồng bộ, trong đó bộ định tuyến sẽ từ chối các gói tin khi cần thiết.

Multi default gateway on linux

Chương trình iproute2, được bao gồm trong tất cả các bản hệ điều hành Linux hiện tại và thậm chí đã được cài đặt sẵn, có thể được sử dụng để giải quyết vấn đề này. Thông thường, một hệ thống Linux chỉ có một bảng định tuyến, trong đó chỉ có một gateway mặc định có thể tạo mục nhập. Với iproute2, bạn có khả năng thiết lập một bảng định tuyến bổ sung, cho một mục đích và cho phép bảng này được sử dụng bởi hệ thống dựa trên các quy tắc, cho một mục đích khác.

Chúng tôi sẽ giả định rằng chúng tôi có hai giao diện: eth0 và eth1. Hai mạng được sử dụng là 192.168.0.0/24 và 10.10.0.0/24, trong đó địa chỉ IP đầu tiên trong mỗi mạng tương ứng sẽ là gateway. Trong Debian, cấu hình ban đầu sẽ xuất hiện như sau. /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo
iface lo inet loopback

# The primary network interface

allow-hotplug eth0
iface eth0 inet static
    address 192.168.0.10
    netmask 255.255.255.0
    gateway 192.168.0.1

# The secondary network interface
allow-hotplug eth1
iface eth1 inet static
    address 10.10.0.10
    netmask 255.255.255.0

Thêm bảng định tuyến thứ hai

Để thêm một bảng định tuyến mới, tệp /etc/iproute2/rt_tables phải được chỉnh sửa. Chúng tôi sẽ gọi bảng định tuyến là "rt2" và đặt ưu tiên của nó thành 1. Tệp được đặt tên sau đó sẽ xuất hiện như sau.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1 rt2

Cấu hình bảng định tuyến mới

Đầu tiên, bảng định tuyến mới cần được điền dữ liệu, được thực hiện bằng lệnh sau.

ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table rt2
ip route add default via 10.10.0.1 dev eth1 table rt2

Quy tắc định tuyến

Để hệ thống biết khi nào sử dụng bảng định tuyến mới của chúng ta, hai quy tắc phải được cấu hình.

ip rule add from 10.10.0.10/32 table rt2
ip rule add to 10.10.0.10/32 table rt2

Các quy tắc này cho biết rằng cả lưu lượng truy cập từ địa chỉ IP 10.10.0.10 cũng như lưu lượng truy cập được định tuyến đến hoặc thông qua địa chỉ IP này sẽ sử dụng bảng định tuyến rt2.

Making the Configuration permanent

Các lệnh ip ruleip route sẽ trở nên không hợp lệ sau khi khởi động lại, vì lý do đó, chúng nên trở thành một phần của một tập lệnh (ví dụ: /etc/rc.local) sẽ được thực thi sau khi mạng đã được khởi động. Đối với Debian, các lệnh này cũng có thể được viết trực tiếp vào tệp /etc/network/interfaces, sau đó sẽ xuất hiện như sau.

iface eth1 inet static
    address 10.10.0.10
    netmask 255.255.255.0
    post-up ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table rt2
    post-up ip route add default via 10.10.0.1 dev eth1 table rt2
    post-up ip rule add from 10.10.0.10/32 table rt2
    post-up ip rule add to 10.10.0.10/32 table rt2

Nếu có nhiều hơn 2 card mạng hoặc default gateways chúng ta cũng làm tương tự như ví dụ trên.

Kiếm tra cấu hình chúng ta dùng câu lệnh sau:

ip route list table rt2
ip rule show

Các bạn có thể tham khảo thêm cấu hình iproute2 tại đây.


Liên hệThỏa thuận sử dụng | Chính sách bảo mật