Không có cách nào để làm điều này với 192.168.1.1 và 192.168.1.2 trên cùng một giao diện mạng của cổng, do đó phân giải thành cùng một địa chỉ MAC. Nó không phải là một tính năng không được thực hiện trong iptables có thể được triển khai, đó là một tính năng không thể được triển khai do cách thức hoạt động của mạng IP.
Máy khách sử dụng 192.168.1.1 hoặc 192.168.1.2 làm cổng sẽ không bao giờ gửi một gói IPv4 duy nhất có 192.168.1.1 hoặc 192.168.1.2 trong đó khi gửi các gói tới Internet. Nó sẽ:
- tham khảo bảng định tuyến của nó cho một điểm đến nhất định
- thấy rằng có một cổng cho điểm đến này
- Sử dụng ARP hoặc một mục được lưu trong bộ nhớ cache để giải quyết địa chỉ L2 (địa chỉ MAC Ethernet) cần thiết để đến cổng.
Bước cuối cùng sẽ chỉ có một đích Ethernet: địa chỉ MAC duy nhất của NIC của cổng: tương tự đối với máy khách có cổng 192.168.1.1 hoặc máy khách khác có cổng 192.168.1.2.
Vì vậy, giờ đây mỗi máy khách sẽ gửi một gói đến cổng có địa chỉ nguồn IPv4 của họ, đích IPv4 dự định trong khung Ethernet có cùng địa chỉ MAC Ethernet đích trong cả hai trường hợp. 192.168.1.1/192.168.1.2 nằm ngoài vòng lặp.
Cổng bây giờ nhìn thấy hai gói để định tuyến. Trong mọi trường hợp, các gói này gợi ý nữa nếu chúng đang sử dụng 192.168.1.1
hoặc 192.168.1.2
làm cổng: thông tin không xuất hiện trên dây nên cổng không thể biết được ở bất kỳ đâu. Nếu hệ thống không có thông tin để phân biệt các trường hợp, thì iptables cũng không thể có thông tin không tồn tại này.
Gợi ý cách giải quyết:
Người ta có thể sử dụng một MACVLAN để có một NIC thứ hai có địa chỉ MAC riêng và gán 192.168.1.2/24 cho nó thay vào đó, điều này sẽ làm cho các gói từ máy khách sử dụng 192.168.1.2 làm cổng đến NIC này thay thế. Trường hợp này rất dễ phân biệt với iptables: khác nhau -i NIC
lọc.
Nhưng điều này tạo ra vấn đề định tuyến khi có nhiều NIC trong cùng một mạng LAN và yêu cầu:
quy tắc định tuyến chính sách nâng cao để giải quyết đúng trường hợp này
vì vậy các câu trả lời không được gửi qua NIC sai có thể ảnh hưởng đến hành vi định tuyến hoặc quy tắc tường lửa.
- và ngoài ra, bất kỳ dịch vụ UDP nào được truy vấn trên 192.168.1.2 (nếu 192.168.1.1 là mặc định), phải biết cách trả lời bằng địa chỉ nguồn chính xác 192.168.1.2 (thay vì 192.168.1.1 mặc định): phải là multi-homed nhận thức. TCP không yêu cầu chăm sóc đặc biệt.
hoặc một không gian tên mạng bổ sung để phân tách giao diện được thêm vào. Nhưng với quy tắc REDIRECT, điều đó có nghĩa là dịch vụ trên cổng 9992 phải chạy trong không gian tên mạng bổ sung.Và không gian tên mạng này có thể vẫn phải giao tiếp với Internet bằng cách sử dụng không gian tên mạng ban đầu: cũng có nhiều cấu hình hơn để lập kế hoạch ở những nơi khác nhau.