Bạn đang hiểu sai vấn đề. Không phải mọi gói đều là một phản hồi và không phải mọi gói đều có thể được khớp với một số gói khác sao cho "cùng một giao diện mạng khi chúng xuất hiện" có ý nghĩa. Những gì bạn muốn làm là chọn cổng cho một gói dựa trên địa chỉ IP nguồn của nó.
Điều này được gọi là định tuyến dựa trên nguồn hoặc định tuyến chính sách. Bạn có thể làm điều đó với một quy tắc đơn giảniptables
, nhưng cách tốt nhất là thiết lập hai bảng định tuyến, một bảng cho mỗi địa chỉ nguồn công khai:
Đầu tiên, tạo hai bảng (Thay thế <NAME1> và <NAME2> bằng tên hợp lý cho hai nhà cung cấp của bạn, giống với IP1, DEV1, v.v.):
echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables
Thêm một cổng vào mỗi bảng định tuyến (nếu cần):
ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>
Sau đó, một tuyến đường mặc định:
ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>
Sau đó, các quy tắc để chọn bảng tuyến dựa trên địa chỉ nguồn:
ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>
Xem Định tuyến cho nhiều đường lên / nhà cung cấp để biết thêm chi tiết.