Tôi giả sử bạn đang chạy Linux và hơn nữa, bạn đang sử dụng bản phân phối dựa trên RedHat / CentOS. Các bản phân phối và Unix khác sẽ yêu cầu các bước tương tự - nhưng các chi tiết sẽ khác nhau.
Bắt đầu bằng cách kiểm tra (lưu ý rằng điều này rất giống với câu trả lời của @ Peter. Tôi giả sử như sau:
- eno0 là isp0 và có cổng mặc định tổng thể
- eno1 là isp1 và có IP / phạm vi 192.168.1.2/24 với cổng 192.168.1.1
Các lệnh như sau:
$ echo 200 isp1 >> /etc/iproute2/rt_tables
$ ip rule add from eno1 table isp1
$ ip route add default via 192.168.1.1 dev eno1 table isp1
Tường lửa không liên quan đến bất kỳ cách nào. Trả lời các gói sẽ luôn được gửi từ IP chính xác - nhưng trước đó đã được gửi qua giao diện sai. Bây giờ các gói từ IP chính xác sẽ được gửi qua giao diện chính xác.
Giả sử các công việc trên, bây giờ bạn có thể làm cho quy tắc và lộ trình thay đổi vĩnh viễn. Điều này phụ thuộc vào phiên bản Unix bạn đang sử dụng. Như trước đây, tôi đang giả sử một bản phân phối Linux dựa trên RH / CentOS.
$ echo "from eno1 table isp1" > /etc/sysconfig/network-scripts/rule-eno1
$ echo "default via 192.168.1.1 dev eno1 table isp1" > /etc/sysconfig/network-scripts/route-eno1
Kiểm tra sự thay đổi mạng là vĩnh viễn:
$ ifdown eno1 ; ifup eno1
Nếu điều đó không hiệu quả, trên các phiên bản sau của RH / CentOS, bạn cũng cần thực hiện với một trong hai tùy chọn:
- Không sử dụng NetworkManager.service mặc định ; Sử dụng mạng.service thay thế. Tôi đã không khám phá các bước chính xác cần thiết cho việc này. Tôi sẽ tưởng tượng nó liên quan đến các lệnh chkconfig hoặc systemctl tiêu chuẩn để bật / tắt dịch vụ.
- Cài đặt gói NetworkManager-distatcher-định tuyến-quy tắc
Cá nhân tôi thích cài đặt gói quy tắc hơn vì đây là cách tiếp cận được hỗ trợ đơn giản hơn:
$ yum install NetworkManager-dispatcher-routing-rules
Một khuyến nghị mạnh mẽ khác là cho phép lọc arp vì điều này ngăn chặn các vấn đề liên quan khác với cấu hình mạng kép. Với RH / CentOS, hãy thêm nội dung sau vào tệp /etc/sysctl.conf:
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1