Nu există nicio modalitate de a face acest lucru cu 192.168.1.1 și 192.168.1.2 pe aceeași interfață de rețea a gateway-ului, rezolvându-se astfel la aceeași adresă MAC. Nu este o caracteristică care nu este implementată în iptables care ar putea fi implementat, este o caracteristică care nu poate fi implementată din cauza modului în care funcționează rețelele IP.
Un client care folosește 192.168.1.1 sau 192.168.1.2 ca gateway nu va trimite niciodată un singur pachet IPv4 cu 192.168.1.1 sau 192.168.1.2 atunci când emite pachete către Internet. O sa:
- consultați tabelul său de rutare pentru o anumită destinație
- găsiți că există o poartă pentru această destinație
- Utilizare ARP sau o intrare în cache pentru a rezolva adresa L2 (adresa MAC Ethernet) necesară pentru a ajunge la gateway.
Ultimul pas va avea o singură destinație Ethernet: adresa MAC unică a NIC-ului gateway-ului: aceeași pentru un client cu gateway 192.168.1.1 sau un alt client cu gateway 192.168.1.2.
Deci, fiecare client va trimite acum un pachet către gateway cu adresa sursă IPv4, destinația IPv4 dorită într-un cadru Ethernet având aceeași adresă MAC Ethernet de destinație în ambele cazuri. 192.168.1.1/192.168.1.2 este în afara buclei.
Gateway-ul vede acum două pachete de rutat. În niciun caz, aceste pachete nu mai indică dacă au fost folosite 192.168.1.1
sau 192.168.1.2
ca gateway: informațiile nu apar pe fir, așa că nu pot fi cunoscute nicăieri de către gateway. Dacă sistemul nu are informații care să distingă cazurile, atunci iptables nu pot avea nici această informație inexistentă.
Sugestie de soluție:
Se poate folosi a MACVLAN interfață să aibă un al doilea NIC cu propria sa adresă MAC separată și să îi atribuie în schimb 192.168.1.2/24, ceea ce va face ca pachetele de la clienți care folosesc 192.168.1.2 ca gateway să ajungă pe această NIC. Acest caz este ușor de distins iptables: un diferit - eu NIC
filtru.
Dar acest lucru creează problema de rutare de a avea mai multe NIC-uri în aceeași rețea LAN și necesită fie:
reguli avansate de rutare a politicilor pentru a aborda acest caz în mod corespunzător
deci răspunsurile nu sunt trimise prin NIC greșit, care poate afecta comportamentul de rutare sau regulile firewall.
- și în plus, orice serviciu UDP interogat pe 192.168.1.2 (dacă 192.168.1.1 este implicit), trebuie să știe să răspundă cu adresa sursă corectă 192.168.1.2 (în loc de implicit 192.168.1.1): trebuie să fie multi-homed conștient. TCP nu necesită îngrijire specială.
sau altfel un spațiu de nume de rețea suplimentar pentru a separa interfața adăugată. Dar cu o regulă REDIRECT, asta înseamnă că serviciul de pe portul 9992 trebuie să ruleze în spațiul de nume suplimentar al rețelei.Și acest spațiu de nume de rețea probabil mai trebuie să comunice cu Internet folosind spațiul de nume inițial al rețelei: de asemenea, mai multă configurație de planificat în diferite locuri.