좋아요, 여기 해결책이 있습니다. 먼저 요약하자면 다음과 같습니다.
기본 네트워크 계획은 다음과 같습니다.
eth0 10.10.10.2 netmask 255.255.255.248
eth1 10.10.10.3 netmask 255.255.255.248
eth2 10.10.10.4 netmask 255.255.255.248
eth3 10.10.10.5 netmask 255.255.255.248
모든 인터페이스가 겹칩니다. 이것은 기술적으로 잘못된 것이며 모든 재난의 원천은 ...하지만이 멍청한 주거용 게이트웨이 때문에해야합니다.
첫째, 브로드 캐스트 ARP 요청은이 모든 것으로 이동합니다. 4 개의 IP가 모두 유효한 로컬 주소이므로 4 개의 모든 인터페이스가 응답하려고합니다.
1) arptables를 설치하십시오 . 부팅하는 동안이 위치를 추가 하십시오 ( /etc/rc.local )
arptables -F INPUT
arptables -A INPUT -i eth0 --destination-ip ! 10.10.10.2 -j DROP
arptables -A INPUT -i eth1 --destination-ip ! 10.10.10.3 -j DROP
arptables -A INPUT -i eth2 --destination-ip ! 10.10.10.4 -j DROP
arptables -A INPUT -i eth3 --destination-ip ! 10.10.10.5 -j DROP
이렇게하면 브로드 캐스트가 잘못된 인터페이스로 들어 가지 않습니다. 따라서 올바른 인터페이스가 유일한 응답자입니다.
그 자체로는 충분하지 않습니다. 다음 비트는 ARP 테이블 문제입니다. 요청하는 PC에는 이미 ARP 테이블 항목이있을 수 있으므로 Linux는 이와 관련된 인터페이스를 사용합니다. 해당 ARP 테이블 항목이 만료 될 때까지 ARP 요청과 관련된 항목이 아닌 해당 항목의 인터페이스를 사용하여 ARP 응답을 보내려고합니다.
sysctl 옵션 rp_filter 는 잘못된 인터페이스에있는 경우 발신 ARP 응답 패킷을 거부하는 것으로 보입니다. 그래서...
2) rp_filter를 비활성화 하십시오 .
데비안 / 우분투에서 이것은 /etc/sysctl.d/10-network-security.conf에 있는 두 개의 rp_filter 라인을 주석 처리한다는 의미 입니다.
이 옵션은 인터페이스 간 스푸핑 공격을 방지하기 위해 사용되었습니다. MAC과 IP를 교환하고 여전히 동일한 인터페이스를 통해 라우팅되는지 확인하여 패킷이 들어오고 나가는 인터페이스에 패킷이 적합한 지 확인합니다. 따라서 일반적으로 끄는 것이 좋지 않습니다. 필자의 경우 모든 인터페이스가 동일한 네트워크에 있으므로 검사가 실제로 중요하지 않습니다.
다른 인터페이스를 추가하고 스푸핑 보호가 필요한 경우 arptables / iptables 항목을 만들어 같은 작업을 수행 할 수 있습니다.