ebtables 에서 IP-MAC 페어링 규칙 을 만들려고합니다 . 사용할 수있는 자습서와 관련 질문은 거의 없지만 [1] 특정 설정이 있습니다.
환경 : 물리적 호스트 가 많이 있습니다 . 각 호스트에는 이더넷 카드가 거의 없으며 본드로 결합되어 브리지의 슬레이브로 사용됩니다. 각 호스트에는 많은 가상 머신이 있습니다 (kvm, qemu, libvirt). 각 가상 머신은 vnet [0-9] +라는 새 포트를 통해 물리적 호스트의 브리지에 연결됩니다. NAT가 없습니다. 네트워킹은 잘 작동하고 모든 물리적 호스트는 핑할 수 있으며 모든 가상 머신도 가능합니다. 각 가상 머신에는 고유 한 IP 주소와 MAC 주소가 있습니다.
문제 : 가상 머신 내부에서 IP 주소를 다른 것으로 변경할 수 있습니다.
FOUND SOLUTION : ebtables 사이트 [2]에 알려진 솔루션이 있지만이 솔루션은 하나의 호스트 만 사용할 경우 적용 할 수 있습니다. 모든 트래픽을 허용하며 허용 된 것보다 다른 MAC을 가진 IP의 패킷이 있으면 패킷이 삭제됩니다. 호스트가 둘 이상 있으면 모든 기존 IP-MAC 쌍을 모든 호스트에 등록해야합니다. 리버스 정책 솔루션이 필요합니다.
파괴 된 해결책 : ebtables를 거꾸로 사용하려고했습니다. 여기 내가 시도한 예가 있습니다.
실시 예 1
Bridge table: filter
Bridge chain: INPUT, entries: 2, policy: DROP
-i bond0 -j ACCEPT
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
실시 예 2
Bridge table: filter
Bridge chain: INPUT, entries: 0, policy: ACCEPT
Bridge chain: FORWARD, entries: 1, policy: DROP
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
내가 원하는 것의 핵심은 기본 정책 DROP을 갖고 주어진 호스트에 올바른 IP-MAC 쌍이 배포 된 가상 시스템의 트래픽 만 허용하는 것입니다. 그러나 이러한 솔루션은 작동하지 않습니다.
질문 : 실행중인 가상 머신의 지정된 IP-MAC 쌍에 대해서만 브리지의 트래픽을 허용하고 vnet [0-9] + 포트에서 들어오는 알 수없는 IP-MAC 쌍을 모두 삭제하는 방법은 무엇입니까?
답변 주셔서 감사합니다.